Goal:
User query → Gemini → Apollo (Apify) → Database → API ready → Deploy
We’ll build a working beginner MVP.
---
🧠 What You’re Building (Simple Words)
Tum ek system banaoge jo:
1. User bolega:
> “Find CTOs in California SaaS companies”
2. System:
Gemini se filters banayega
Apify Apollo se leads nikalega
Database me store karega
Response dega
---
🔥 STEP 0 — Install Required Things
1️⃣ Install Python (Very Important)
Download from: https://python.org
Install → Tick "Add Python to PATH"
Check:
python --version
---
2️⃣ Install VS Code
Download: https://code.visualstudio.com
---
🔥 STEP 1 — Create Project
Open terminal:
mkdir leadgen
cd leadgen
Create virtual environment:
python -m venv venv
Activate:
Windows:
venv\Scripts\activate
Mac/Linux:
source venv/bin/activate
---
🔥 STEP 2 — Install Libraries
pip install fastapi uvicorn sqlalchemy psycopg2-binary google-generativeai requests python-dotenv
---
🔥 STEP 3 — Setup Database (Easiest Method)
We’ll use PostgreSQL.
Download: https://www.postgresql.org/download/
Install → remember password.
Create database:
Open pgAdmin OR terminal:
CREATE DATABASE leadsdb;
---
🔥 STEP 4 — Get API Keys
✅ 1. Gemini API Key
Go: https://makersuite.google.com/app/apikey
Generate API key.
✅ 2. Apify Token
Go: https://console.apify.com/account/integrations
Copy token.
---
🔥 STEP 5 — Create .env File
Inside project folder create:
.env
Put:
GEMINI_API_KEY=your_gemini_key
APIFY_TOKEN=your_apify_token
DATABASE_URL=postgresql://postgres:yourpassword@localhost/leadsdb
---
🔥 STEP 6 — Create main.py
Create file:
main.py
Paste FULL code below 👇
---
import os
import json
import requests
import google.generativeai as genai
from fastapi import FastAPI
from pydantic import BaseModel
from dotenv import load_dotenv
from sqlalchemy import create_engine, Column, String, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# Load ENV
load_dotenv()
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
APIFY_TOKEN = os.getenv("APIFY_TOKEN")
DATABASE_URL = os.getenv("DATABASE_URL")
# Configure Gemini
genai.configure(api_key=GEMINI_API_KEY)
model = genai.GenerativeModel("gemini-pro")
# Database Setup
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)
Base = declarative_base()
class Lead(Base):
_tablename_ = "leads"
id = Column(Integer, primary_key=True, index=True)
name = Column(String)
email = Column(String)
title = Column(String)
company = Column(String)
location = Column(String)
Base.metadata.create_all(bind=engine)
# FastAPI
app = FastAPI()
class LeadQuery(BaseModel):
query: str
# Step 1 - Convert query to filters
def convert_query_to_filters(query: str):
prompt = f"""
Convert this query into Apollo filters JSON.
Return only JSON.
Query: {query}
Format:
{{
"personTitles": [],
"organizationLocations": [],
"organizationIndustries": []
}}
"""
response = model.generate_content(prompt)
return json.loads(response.text)
# Step 2 - Fetch leads from Apify
def fetch_leads(filters):
url = f"https://api.apify.com/v2/acts/apify~apollo-scraper/run-sync-get-dataset-items?token={APIFY_TOKEN}"
response = requests.post(url, json=filters)
return response.json()
# Step 3 - Store leads
def store_leads(leads):
db = SessionLocal()
for lead in leads:
new_lead = Lead(
name=lead.get("name"),
email=lead.get("email"),
title=lead.get("title"),
company=lead.get("organization", {}).get("name"),
location=lead.get("organization", {}).get("location")
)
db.add(new_lead)
db.commit()
db.close()
@app.post("/generate-leads")
def generate_leads(data: LeadQuery):
filters = convert_query_to_filters(data.query)
leads = fetch_leads(filters)
store_leads(leads)
return {
"filters_used": filters,
"leads_stored": len(leads)
}
---
🔥 STEP 7 — Run Project
uvicorn main:app --reload
Open browser:
http://127.0.0.1:8000/docs
Click: POST /generate-leads
Try:
{
"query": "Find CTOs in SaaS companies in California"
}
---
🎉 If Everything Works
Leads will:
Fetch from Apify
Store in PostgreSQL
Return count
Comments
Post a Comment