Deal Flow CRM & Analyzer for Venture Capital workflows.
VentureScout is a full-stack tool that automates the early-stage deal screening workflow for Venture Capital. Paste a single startup URL and the system scrapes the site, generates an AI-driven investment memo (high-concept pitch, industry tags, bull/bear case), and drops the deal onto a drag-and-drop Kanban board.
- One-click analysis — submit a URL, get a full AI-generated deal card
- Web scraping — extracts title, meta description, and page content via BeautifulSoup
- AI investment memos — OpenAI generates a high-concept pitch, industry tags, and bull/bear cases
- Kanban board — drag-and-drop deal cards across columns: New → Outreach → Due Diligence → Pass → Invest
- Deal detail modal — click any card to view the full AI analysis
- Auto logos — fetches company logos via Clearbit with Google Favicon fallback
- Persistent storage — all deals saved to SQLite
- API key authentication — all endpoints gated by
X-API-Keyheader (configurable viaVS_API_KEY) - Rate limiting — 60 req/min globally, 10 req/min on
/api/analyze(via flask-limiter) - SSRF prevention — URL validation blocks internal/private IPs, non-HTTP schemes, and unresolvable hostnames
- CORS restriction — configurable allowed origins (defaults to
http://localhost:5173) - Status validation —
PATCH /api/deals/:idonly accepts valid pipeline statuses - Prompt-injection mitigation — scraped text is sanitized before being sent to OpenAI
- Response size limits — scraper enforces a 2 MB download cap
- Generic error responses — internal details are logged server-side, never leaked to clients
- Safe defaults — debug mode off, binds to
127.0.0.1
- Frontend: React (Vite) + Tailwind CSS v4
- Backend: Python 3.11 (Flask)
- Database: SQLite
- AI/LLM: OpenAI API (GPT-4o-mini) with Pydantic structured output
- Scraping: BeautifulSoup4 + Requests
src/
├── venture_scout/ # Flask backend
│ ├── app.py # API routes & server entry point
│ ├── scraper.py # Website scraping logic
│ ├── ai_analyzer.py # OpenAI integration & Pydantic model
│ ├── database.py # SQLite schema & queries
│ └── security.py # Auth, URL validation, rate limiting, sanitization
└── frontEnd/ # React frontend
└── src/
├── App.jsx # Main app (Kanban board, modal, fetch logic)
├── main.jsx # React entry point
└── index.css # Tailwind imports
- Python 3.11+
- Node.js 18+
- uv (Python package manager)
- An OpenAI API key
# Clone the repository
git clone https://github.com/abhinav-rb/VentureScout.git
cd VentureScout
# Backend setup
uv venv .venv
source .venv/bin/activate
uv pip install -e .
# Initialize the database
python src/venture_scout/database.py
# Frontend setup
npm install --prefix src/frontEndYou need two terminal tabs running simultaneously:
Tab 1 — Start the Flask backend (port 5001):
export OPENAI_API_KEY='sk-...'
source .venv/bin/activate
python src/venture_scout/app.pyOptional environment variables:
| Variable | Purpose | Default |
|---|---|---|
VS_API_KEY |
API authentication key (unset = auth disabled) | — |
VS_CORS_ORIGINS |
Comma-separated allowed CORS origins | http://localhost:5173 |
FLASK_DEBUG |
Set to 1 to enable debug mode |
0 |
VS_HOST |
Server bind address | 127.0.0.1 |
VS_PORT |
Server port | 5001 |
Tab 2 — Start the Vite dev server (port 5173):
npm run dev --prefix src/frontEndThen open http://localhost:5173 in your browser.
The Vite dev server proxies all /api requests to the Flask backend automatically.
All endpoints require an X-API-Key header when VS_API_KEY is set.
POST /api/analyze— submit a startup URL for AI analysis (rate-limited: 10/min)GET /api/deals— list all tracked dealsPATCH /api/deals/:id— update a deal's status (valid: New, Outreach, Due Diligence, Pass, Invest)
MIT