🎯 FLP Automation · Infrastructure Map

🔮
Boolean Builder · Proprietary Fintech Company Database
Foundation of search quality across P01 and P02 · built in-house · not available elsewhere
Open Builder ↗
What it is
A curated database of 8 500 fintech companies mapped by country and category. Stored as companies_lookup.json and bundled directly in the Chrome extension, no external API call needed.
Coverage status
✓ EMEA: well stocked · high density across UK, France, Germany, Benelux & Nordics
→ Global: expanding across North America, APAC & LATAM
How it's used
P01: Daemon auto-classifies each JD by fintech category (Claude Haiku), loads up to 200 matching companies from the Boolean Builder, resolves Apollo.io org IDs in parallel (12 threads), and passes them as organisation filters to Apollo People Search, no extension config required.
P02: Source of the daily BD target company list: 1 company per day, picked by region + category.
01

Inbound JD Sourcing

Feed a job posting → auto-source LinkedIn → evidence-gated judgment → review HTML with labelling in 10 min
Trigger: JD URL (job board · ATS · Google Doc)
👤
You
Feed a JD
Job board, ATS, or Google Doc
1 click
🧩
Browser Extension
Extract & Build Criteria
Title variants · seniority · location · 50 companies · industry
instant
🗄️
Notion API
JD + 3 Criteria Queued
Broad · industry (BB companies) · direct competitors
≤10 min
⚙️
Python Daemon
Polls & Triggers
macOS launchd · always on
per criterion
🔍
Apollo.io API
Search People DB
Title + location + up to 200 fintech companies · 50 results · deduped by Apollo ID
per candidate
⚖️
Judgment Layer
Score & Bucket
Knockout pre-filter · evidence-gated Claude Haiku · interview / borderline / reject
review
📋
HTML File + Label
Review & Label
Auto-opens · all buckets shown · label → Golden Set → Notion write-back
Swim lanes
👤 You
Any browser
Open job posting Click extension Confirm preview Review Notion shortlist (Fit Score ≥ 6)
🧩 Browser Extension
Chrome MV3 · JS
Extract page text + URL Detect title / location / seniority Pick 50 seed companies from Boolean Builder DB (8 500 cos · geo + category) · daemon expands to 200 Generate 3 criteria JSON Dedup vs Active-only → push to Notion
🗄️ Notion
Notion API v1
Store JD + full text Store 3 criteria (Status: Active) Log 1 Sourcing Run per JD Mark criteria Done Store candidates with Fit Score
⚙️ Python Daemon
Python 3 · launchd
Polls every 10 min Fetch Active criteria from Notion Classify JD category (Claude Haiku) Load Boolean Builder · resolve up to 200 Apollo org IDs (12 threads) POST to Apollo People Search API Save candidates + CSV backup Trigger Claude scoring
🔍 Apollo.io
People Search API · Basic plan
person_titles filter + person_locations filter + organization_ids (up to 200 fintech cos) + seniority filter (broad criterion) 50 profiles per criterion · no credits consumed
✨ Claude Haiku
Anthropic API
Classify JD category → load BB company pool Knockout pre-filter (deterministic Python): title/headline signals tech/ops role → hard reject, no LLM cost Evidence-gated scorer: score ONLY on explicitly stated text: function · domain · seniority · lang/geo (0–10 each) Bucket: interview (≥8 + med/high conf) · borderline (5–7) · reject (<5 or KO or insufficient data) Write scores + evidence + bucket back to Notion Candidates DB · generate review HTML
📋 Review HTML
Auto-opens locally
All candidates shown: interview · borderline · reject · sorted by score Per card: subscores · per-dimension evidence · reason · watch points · LinkedIn Label buttons → save to Golden Set DB with reason
TriggerClick Chrome extension on any job posting | Daemon polls every10 min · macOS launchd · always on
02

Business Development Outreach

Boolean Builder company → find relevant open role → source candidates → find HM → pitch with anonymised candidate
Trigger: Daily at 9am · 1 company per day (cron / launchd)
🔮
Boolean Builder
Pick Company
1/day from queue · filtered by region + category
scrape
Claude Sonnet
Find Relevant Role
Job board scrape · filter: seniority · comp · relevancy (no pure IT)
source
🔍
Apollo.io
Source Candidates
Pipeline 01 on matched role · scored by Claude Haiku
find HM
🔍
Apollo.io
Find Hiring Manager
Search by title at target company · Head of TA / VP Sales / CRO
enrich
🔶
Clay
Enrich + Signals
Verify contact · funding · hires · personalisation data
draft
Claude Sonnet
Pick, Anonymise & Draft
Best profile · strip identity · personalised email + LinkedIn message
send
📨
Lemlist
Multichannel Outreach
Email + LinkedIn connection + InMail · D+3 / D+7 follow-ups
log
🗂️
CRM
Log + Sequence
Contact + full multichannel sequence queued
Swim lanes
👤 You
One-time setup
Select region + category in Boolean Builder → seed BD queue Review drafted emails before send (optional gate) Monitor replies in CRM
🔮 Boolean Builder
Fintech DB · 8 500 cos
Filter by region + category Pick 1 company/day from queue Look up job board URL for company
✨ Claude Sonnet
Anthropic API · job filter
Scrape open roles at target company Filter: exclude pure IT/eng · keep commercial · product · revenue roles Score by seniority + earning potential + relevancy to FLP speciality Select 1 best-fit role to pitch on
🔍 Apollo.io
People Search API · candidates
Run Pipeline 01 sourcing on selected role Score + rank via Claude Haiku Select top 1–2 shortlisted candidates
🔍 Apollo.io
People Search API · HM finder
Search by title at target company (org filter) Target: Head of TA · VP Sales · CRO · COO Reveal email (1 Apollo credit) Return: name · title · email · LinkedIn URL
🔶 Clay
clay.com · enrichment
Verify email via waterfall (Apollo → Hunter → Dropcontact) Confirm LinkedIn URL · scrape profile headline Surface signals: recent funding round · headcount growth · open roles at company Pass enriched data to Claude for personalised draft
✨ Claude Sonnet
Anthropic API · drafting
Anonymise candidate: "7 yrs KAM · Adyen + Worldline background" Draft personalised BD email (HM name · role · candidate hook · Clay signal) Write LinkedIn connection note (300 char) + InMail variant Generate D+3 / D+7 follow-up variants (email + LinkedIn message)
📨 Lemlist
Email + LinkedIn sequences
Step 1, Email: personalised pitch with anonymised candidate Step 2, LinkedIn: send connection request + personalised note to HM Step 3, InMail: direct message on LinkedIn if 1st degree / no email reply D+3 / D+7 follow-ups: email + LinkedIn message Track: opens · clicks · LinkedIn accepts · replies → pause on positive signal
🗂️ CRM
HubSpot
Create contact (HM + company) Log candidate bait reference + Clay signals Sync Lemlist sequence status Tag: BD Outreach · Pending Response
TriggerDaily 9am · 1 company/day from Boolean Builder queue | StackClay · Lemlist · Apollo · HubSpot
03

CV Sendout

Forward candidate email + CV → auto-label → Google Doc + Gmail draft → Fabien reviews + sends
Trigger: Forward to dedicated intake address · Gmail filter auto-applies FLP Process
👤
You
Forward to CV Sendout
CV attached · free-form notes · 1 click
instant
📧
Gmail Filter
Auto-apply FLP Process
Dedicated intake alias · zero clicks
auto
⚙️
run_pipeline.py
Orchestrate on Mac
Python 3 · macOS launchd
~5 sec
Claude Haiku
Extract + Pitch
Fields · French pitch · 3–5 §
~3 sec
📄
Docs API
Copy Template + Fill
{{placeholders}} · pitch text · Drive folder
~20 sec
🖼️
pdftoppm + Drive
CV → Images
poppler · PNG · public URLs · inline in doc
~2 sec
✉️
Gmail API
Draft Reply in Thread
Doc link + PDF link · OAuth2
Swim lanes
👤 You
Gmail
Forward to CV Sendout intake address, any format, dump notes freely Review Google Doc: adjust pitch · complete "À compléter" fields Send Gmail draft
📧 Gmail Filter
Gmail · Rules
Match: dedicated intake alias Apply label: FLP Process Label removed by pipeline after processing, no reprocessing
⚙️ run_pipeline.py
Python 3 · macOS
Search Gmail for FLP Process label Download email body + CV PDF attachment Anchor: CV filename → subject → first body line for Name/Role/Client Call Claude Haiku · create Drive folder · copy + fill Doc template Convert CV → images → upload → insert inline · create Gmail draft
✨ Claude Haiku
Anthropic API
Read subject + CV filename + free-form body (any format, no structure required) Extract: Name · Role · Client · Location · Nationality · Rate · Availability · Languages · LinkedIn Generate French pitch: Background "Bref," · Fit "Ce qui colle pour X :" · Challengers · Pour info
📄 Google Docs API
Google API · OAuth2
Copy FLP template doc into Drive: Root / Client / Role Replace {{NAME}} {{LOCATION}} {{POSITION}} {{RATE_SALARY}} {{AVAILABILITY}} {{LANGUAGES}} {{LINKEDIN_URL}} Insert pitch text · append CV images inline
🖼️ pdftoppm + Drive
poppler · brew · Drive API
pdftoppm (brew install poppler): CV PDF → PNG per page, Mac-native Upload each PNG to Drive · make public (anyoneWithLink) insertInlineImage via Docs API · lh3.googleusercontent.com/d/{id}
✉️ Gmail API
Google API · OAuth2
Create draft reply in original thread Body: link to Google Doc + link to original CV PDF FLP Process label removed, thread won't reprocess

💡 No format required: dump call notes, LinkedIn text, forwarded emails, anything. Claude Haiku extracts all structured fields. Missing fields are filled with "À compléter" for Fabien to complete before sending.

TriggerForward candidate email + CV to dedicated intake address | OutputGoogle Doc + Gmail draft, ready for review in under a minute
04

Full Mandate Launch

Exploration call + JD → everything created automatically → sources until target headcount is reached
Trigger: Call transcript or notes + JD link
🎙️
Fathom / Otter
Record & Transcribe
Exploration call with client
extract
Claude Sonnet
Parse Mandate
Role · seniority · location · headcount · skills · languages · comp · timeline
create
🗂️
CRM API
Build CRM Mandate
New deal · stages · contacts · timeline
generate
🔍
Claude Sonnet
Build Full Search
All search filters: title · co · industry · seniority · location · skills · language
generate
✉️
Claude Sonnet
Write Outreach
1st touch + 2 follow-ups + LinkedIn note
run
⚙️
Pipeline 01
Auto-Source
Score all candidates via Haiku
check
🔁
Python Loop
Loop Until Target
If shortlist < 40/headcount → expand criteria → re-run
done
You
Notify & Review
Mac notification + Notion view ready
Swim lanes
👤 You
Fathom + Cowork
Run exploration call (Fathom records) Paste transcript + JD link into Cowork Approve mandate brief before launch Review 40-candidate shortlist when ready
🎙️ Fathom
Fathom / Otter.ai
Auto-join call · transcribe in real time Export transcript + summary
✨ Claude Sonnet
Anthropic API
Extract structured mandate: role · seniority · headcount · location · comp · timeline · ideal companies Build full search JSON (all 7+ filters) Generate outreach sequences (1st touch + D+3 + D+7 + LinkedIn) Expand criteria if loop needs more (relax geo · add title variants)
🗂️ CRM
HubSpot / Vincere / Notion
Create mandate deal (client · role · stage: Intake) Set pipeline stages (Intake → Sourcing → Shortlist → Interview → Offer) Link contacts (client-side HM + internal) Log all sourcing activity + cost
⚙️ Pipeline 01
Apollo + Claude Haiku
Run structured Apollo People Search (all criteria) Score each profile vs mandate brief Dedup across all runs by LinkedIn URL
🔁 Python Loop
Sourcing daemon
Count candidates with Fit Score ≥ 6 If < 40 × headcount → ask Claude to expand criteria Re-run sourcing (max 5 iterations) Notify + stop when target reached
📨 Lemlist
Email + LinkedIn sequences
Import shortlist candidates with LinkedIn URLs Enroll in Claude-written multichannel sequence (email + LinkedIn connection + InMail) Track: email opens · LinkedIn accepts · replies Pause sequence on positive signal · sync reply to CRM
TriggerPaste call transcript + JD link | StackFathom · P01 sourcing daemon · Lemlist · CRM API
05

Candidate Outbound Placement

Chrome extension intake → parse CV → scrape jobs → find HM → score + draft 3 pitch variants → HTML review on Desktop → Lemlist launch
Trigger: Chrome extension on linkedin.com/in/* page
🧩
Chrome Extension
Intake
LinkedIn URL · CV PDF · LinkedIn PDF · location · sectors · company sizes · language pref · notes
parse
⚙️
pdfminer.six
Parse CV
CV + LinkedIn PDF → experience / education / skills
assess
Claude Sonnet
Assess Profile
Summary · title variants · strengths · inconsistency flags
scrape
🔎
X-ray + Job Boards
Scrape Jobs
20+ ATS (Greenhouse/Lever/Ashby…) + WTTJ/Cadremploi/APEC/Indeed FR · 14-day filter
find HM
🔍
Apollo.io
Find Contacts
2 HM + 2 TA per company · capped at 30 companies/run
score
Claude Haiku
Score Targets
1–10 relevancy per target vs candidate profile
draft
Claude Sonnet
Draft 3 Variants
Anonymised pitch · no candidate name · no employer names · under 120 words each
review
📋
HTML File
Review on Desktop
Drops on Desktop · opens automatically · Skip / Manual / Approve per card
launch
📨
Lemlist + LinkedIn
Launch Outreach
Email D0/D7/D14 · LinkedIn queue via extension · GCal daily to-do
Swim lanes
👤 You
Chrome Extension
Open candidate LinkedIn profile → click extension Upload CV PDF + LinkedIn PDF · add notes · pick sectors/sizes · set language Review HTML file on Desktop: Skip / Manual / Approve per card Click Launch → Lemlist sequences start + GCal to-do updated
🧩 Chrome Extension
Chrome MV3
Extract LinkedIn profile data (name · title · location) Encode CV + LinkedIn PDF as base64 Send intake to local daemon → runs in background Poll LinkedIn queue every 5 min · draft LinkedIn messages (user hits Send manually)
⚙️ Python Daemon
Flask · macOS launchd
pdfminer.six: extract CV text + LinkedIn PDF text Heuristic parser: split into experience / education / skills X-ray DuckDuckGo: 20+ ATS (Greenhouse, Lever, Ashby, Teamtailor...) + WTTJ/Cadremploi/APEC/Indeed FR · 14-day freshness filter Funding signals via DuckDuckGo HTML scrape · basic email verification Build HTML review file → drop on Desktop → open automatically
✨ Claude Sonnet
Anthropic API · assessment
Assess profile: summary · title variations · strengths · CV/LinkedIn inconsistency flags · candidate language detection Draft 3 anonymised pitch variants per target (no candidate name, no employer names, under 120 words)
✨ Claude Haiku
Anthropic API · scoring
3-stage judgment: Python knockout pre-filter (function · seniority · geo · language) Haiku scores function / domain / growth / practical fit Rule engine applies rules built from past skip reasons Rationale per score · low scorers deprioritised in review
🔍 Apollo.io
HM + TA finder per company
Up to 2 HM + 2 TA per company · /mixed_people/search Capped at 30 companies per run Return: name · title · email · LinkedIn URL
🗄️ Notion
Notion API · backend only
Log run (status · candidate · timestamp) Log each outreach decision (approved / skipped / manual + reason) Queue LinkedIn messages (status: pending) · mark done after extension sends Dedup: check company history across candidates before outreach
📨 Lemlist
Email sequences · D0/D7/D14
D0, Email: anonymised pitch via {{icebreaker}} variable · FR or EN campaign D7, Follow-up bump D14, Close-out email Dedicated sending domain · replies forwarded to main inbox

💡 Under the hood: judgment system v2 (knockout + scoring + rules learned from past skip reasons) · unified Chrome extension · HTML review UI (per-recipient checkboxes, 3-variant carousel, FR/EN auto-detection) · email templates D0/D7/D14 in FR + EN. No Clay dependency: funding signals via web scraping.

TriggerChrome extension on any LinkedIn profile → intake form | ReviewHTML file on Desktop (opens automatically)

🧮 Cost & Output per Run

One run = one full pipeline loop. Conservative estimates. Flat subscriptions amortised separately.
P01 · per JD P02 · per company P03 · per CV P04 · per mandate P05 · per candidate
💰 Cost per run
conservative estimate
~$0.06 ~$0.60 ~$0.01 ~$0.70 ~$0.60
Expected output
per run
~150 candidates sourced · scored & bucketed · review-ready shortlist in ~10 min 1 target company · 1 best-fit role · 1–2 anonymised candidates · 1 HM in multichannel sequence 1 client-ready CV dossier (Google Doc) + Gmail draft in under a minute Full mandate: CRM deal + search + sequences · 40+ qualified candidates per headcount Up to 30 target companies · up to 120 HM/TA contacts · 3 pitch variants each · D0/D7/D14 sequences
Main tools Apollo · Claude Haiku · Notion · Boolean Builder Boolean Builder · Claude Sonnet · Apollo · Clay · Lemlist · HubSpot Gmail · Claude Haiku · Google Docs/Drive Fathom · Claude Sonnet · Apollo · Lemlist · CRM Apollo · Claude Sonnet + Haiku · Notion · Lemlist
Subscriptions used
flat monthly
Apollo Apollo · Clay · Lemlist None · free stack Lemlist Apollo · Lemlist