Spaces:
Sleeping
Sleeping
File size: 1,568 Bytes
334ff37 18a005f 334ff37 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | from fastapi import FastAPI, UploadFile, File
from fastapi.middleware.cors import CORSMiddleware
from dotenv import load_dotenv
import pandas as pd
import io
import os
from scraper import scrape_company
from ai_engine import analyze_lead
from database import save_lead, get_pending_leads, update_lead_status
load_dotenv()
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allow all origins for Vercel integration
allow_credentials=False,
allow_methods=["*"],
allow_headers=["*"],
)
@app.post("/process-csv")
async def process_csv(file: UploadFile = File(...)):
contents = await file.read()
df = pd.read_csv(io.BytesIO(contents))
for _, row in df.iterrows():
summary = scrape_company(row["url"])
result = analyze_lead(row["name"], row["company"], summary)
save_lead({
"name": row["name"],
"company": row["company"],
"url": row["url"],
"email": row.get("email", ""),
"company_summary": summary,
"score": result["score"],
"score_reason": result["score_reason"],
"cold_email": result["cold_email"]
})
return {"status": "success"}
@app.get("/get-leads")
def fetch_leads():
return get_pending_leads()
@app.post("/update-lead/{lead_id}")
def update_lead(lead_id: int, status: str = "approved"):
update_lead_status(lead_id, status)
return {"status": "updated"}
@app.get("/")
def read_root():
return {"message": "Lead Qualifier API is running!"}
|