🔄 Automating deal flow with AI
At any given time, our fund is receiving deal submissions from multiple channels — emails, Teams messages, Typeform submissions, and internal referrals. Each one needs to be logged in our CRM (Pipedrive), researched, and triaged. This is the kind of busywork that eats hours every week, and it’s exactly what I built vc-deal-ops to handle.
The problem
A typical deal submission might look like this:
“Hey, check out buildingmind.io — Sarah from Seedcamp mentioned them. Series A, raising 5M.”
Turning that into a structured CRM entry means: figuring out the company name, finding their website, determining the round stage and size, noting who referred it, checking if we’ve already seen it, and then manually entering it all into Pipedrive. Multiply that by 20+ submissions a week and you’ve lost a significant chunk of your time.
How it works
The system is a FastAPI service that accepts deal submissions from any channel and runs them through a pipeline:
-
Parse: A single Claude API call extracts structured data from free-form text — company name, domain, stage, round size, referrer, and source. It handles batch submissions too (multiple deals in one message).
-
Research: If a domain is found, the system scrapes the company’s website and sends the content to Claude to extract sector, target customer, region, employee count, and traction — all constrained to our exact Pipedrive field taxonomy so the LLM can’t hallucinate invalid values.
-
Fit check: A two-tier rules-based filter. Egregious mismatches (Series B+, rounds over €15M, clearly non-European) are rejected outright. Softer flags (ambiguous geography, large-ish rounds) let the deal through but flag it.
-
Dedup: Fuzzy matching with RapidFuzz against our existing deal cache, checking both company name (with legal suffixes stripped) and domain.
-
Create: Structured deal created in Pipedrive with all fields populated, plus a Notion memo page for longer-form notes.
The full intake mode has a clever batching mechanism — it waits 45 minutes before processing, grouping any related submissions for the same company that arrive in that window.
Deck analysis
One of the more interesting features is automatic pitch deck analysis. When someone uploads a PDF to a deal in Pipedrive, a webhook triggers the system to:
- Download the file
- Try text extraction first (fast and cheap)
- Fall back to Claude’s vision capabilities if the PDF is image-heavy — it converts each slide to an image and sends them to Claude
- Extract business model, traction, team, ask, red flags, and an investment thesis summary
This saves a lot of time on first-pass deck reviews.
What I learned
The biggest challenge was constraining Claude’s outputs to match our exact CRM taxonomy. You can’t have an AI filling in “Climate Tech” when your Pipedrive dropdown expects “climate_green”. I solved this by being very explicit in the prompts — listing every valid option and instructing the model not to guess or assume. It works surprisingly well.
The system also handles call transcript analysis from Fireflies.ai, including per-speaker sentiment analysis for internal discussions — which is useful for understanding where the team stands on a deal after a call.
Tech: Python (FastAPI), Claude API, Pipedrive API, Notion API, SQLite, deployed on Render.