This project is a micro-module for the Scout application, designed to manage leadsets, trigger searches via Exa, enrich contact data, and export results.
The project consists of two main parts:
react-frontend/: A React-based frontend application.python-backend/: A Python FastAPI backend application.
- Leadset Management: View and manage leadsets.
- Search Runs: Trigger new searches (runs) for leadsets using the Exa API.
- Enrichment: Enrich buyer contact details (Email, Phone, LinkedIn) using Exa.
- Export: Export run results to CSV.
- Real-time Updates: The UI updates in real-time as runs process and data is enriched.
- Node.js and npm
- Python 3.12+
- Firebase Credentials (
serviceAccountKey.json) - Exa API Key
- Navigate to the backend directory:
cd python-backend - Create a virtual environment:
python3 -m venv venv source venv/bin/activate - Install dependencies:
# Install fn7-sdk from custom registry pip install fn7-sdk --extra-index-url https://fn7.io/.fn7-sdk/python/ # Install other dependencies pip install -r requirements.txt cp .env.example .env
- Set up environment variables:
- Create a
.envfile based on.env.example(if available) or ensure the following are set:FIREBASE_SERVICE_ACCOUNT_JSON: Path to your service account key.FIREBASE_STORAGE_BUCKET: Your Firebase Storage bucket name.EXA_API_KEY: Your Exa API key.
- Create a
- Run the server:
uvicorn app.main:app --reload --port 8000
- Navigate to the frontend directory:
cd react-frontend cp .env.example .env - Install dependencies:
npm install
- Set up environment variables:
- Ensure
REACT_APP_BACKEND_URLis set tohttp://localhost:8000.
- Ensure
- Run the application:
The app will be available at
npm start
http://localhost:3000.
- Open the dashboard to view available leadsets.
- Click "Open" on a leadset to view details.
- If no run exists, one will start automatically. You can also click "Restart Run" to trigger a fresh search.
- Select items and click "Unlock Contact Details" to enrich them.
- Click "Download CSV" to export the data.
- Enrichment not working locally? The backend uses a polling mechanism to bypass webhook limitations on localhost. Ensure the backend process is running and checking for updates.
- CSV Export fails? Check the backend logs for permission errors or bucket configuration issues.
