A production in four acts · Client work · United States
Second Act PRO
An AI matching engine that pairs senior professionals with organizations that need them, and explains every match.
Tonight
Second Act Pro
↓ Scroll to raise the curtain
The Playbill · Season 2025 — 26
Second Act Pro
“A second act, with purpose.”
The client
Craig, a founder in the United States, places professionals with 12 to 30 years of experience into interim, advisory, board and project roles.
The problem
Keyword matching reads a CV like a stranger. Craig needed three answers for every candidate: do they qualify, will they fit this company, and why, in words he can defend.
The cast
Professionals looking for a meaningful second act. Organizations with a real problem to solve. An admin who has to stand behind every match.
My role
Full-stack & AI engineer. The intake, the CV pipeline, the matching funnel and the scoring lab: Next.js, FastAPI, Supabase, Pinecone and Gemini.
Running since Oct 2025 · 122 commits · Two milestones · Still playing
Act I
Two doors
Professionals and organizations each get their own intake. Every answer, down to the 'do not want' list, becomes something the matcher can use later.
Door one
The professional
- Name
- A. Rivera
- Years of experience
- 24
- Preferred roles
- Interim COO · Board advisor
- Availability
- Project-based
- Do not want
- Relocation
- CV
- rivera-cv.pdf ✓
Door two
The organization
- Project type
- Interim leadership
- Required skills
- Ops turnaround · PE reporting
- Duration
- Short-term (1–3 months)
- Budget range
- $15k – $30k
- Do not want
- No board exposure
- Verification
- Cloudflare Turnstile ✓
Sample data · Every submission lands in Supabase, the CV in storage, the text in Pinecone
Act II
Reading a life's work
The heart of the engine. A career is not a list of keywords, so the CV is broken into the parts that matter and each part is read for meaning.
- i.
A CV arrives
pdfplumber reads every line of the PDF. Nothing is typed twice.
- ii.
Nine sections
Skills, work experience, about, education, projects, certifications, awards, languages and the rest. Each one is weighted differently.
- iii.
Nine embeddings
Every section becomes a 768-dimension Gemini vector in Pinecone: two indexes, thirteen namespaces, plus one pooled vector for the whole CV.
- iv.
A match, in meaning
Now a person and a role can meet on what they mean, not on shared keywords, and every score can be traced back to a section.
Act III
The funnel
Matching runs in four stages, and each one leaves evidence behind, so the final answer can be explained rather than just trusted.
Stage 1
Hybrid recall
Dense vectors and keywords together pull a first pool of twenty from the whole database.
Stage 2
Eligibility gate
Gemini turns the brief into must-haves and exclusions. Each candidate gets pass, needs review, or fail, because unverified is not the same as unqualified.
Stage 3
Compatibility rerank
Six fit dials compare the candidate persona with the company persona: environment, operating style, leadership scope, organization, culture and engagement.
Stage 4
Top three, explained
A fixed evidence pack comes first, then the explanation: drivers, friction flags, and why nobody passed when nobody did.
Environment
Operating style
Leadership scope
Organization
Culture
Engagement
Why AR, for this role
Strong fitDrivers: led two turnarounds at a similar size; decides fast, like the board. Friction: prefers remote; the role is on-site twice a month.
Act IV
The rehearsal room
A scoring lab for Craig. The same roles run through four scoring modes side by side, so he can see where the modes disagree before a match goes out. Try it.
Illustrative data
| COOInterim COO | BoardBoard advisor | CFOCFO, PE-backed | OpsOps lead | Strat.Strategy | |
|---|---|---|---|---|---|
| AR | 0.50 | 0.87 | 0.00 | 0.79 | 0.61 |
| JM | 1.00 | 0.12 | 0.51 | 0.87 | 0.00 |
| KD | 0.37 | 0.22 | 0.99 | 0.12 | 0.52 |
| LS | 0.04 | 0.95 | 0.36 | 0.23 | 0.99 |
| TE | 0.75 | 0.66 | 0.04 | 0.95 | 0.36 |
| BN | 0.90 | 0.01 | 0.75 | 0.65 | 0.04 |
| PO | 0.15 | 0.47 | 0.89 | 0.01 | 0.76 |
Curtain call
Now showing, in production
- 122
- commits
- 25
- API routes
- 13
- Pinecone namespaces
- 10
- database tables
- 9
- vectors per CV
- 35
- persona pairings pressure-tested
Second Act Pro
The credits
- Client
- Craig · United States
- Engineering
- Muhammad Rabby Ilyas
- Frontend
- Next.js 15 · React 19 · Tailwind v4 · shadcn/ui · TanStack Table
- Backend
- FastAPI on Vercel · Pydantic v2
- Data
- Supabase Postgres, Auth & Storage · Pinecone
- Intelligence
- gemini-embedding-001 · Gemini 2.5 Flash · Gemini 3 Flash · BM25 · ColBERT
- Security
- Cloudflare Turnstile · Row Level Security
- Quality
- pytest · a pressure-test harness · Supabase ↔ Pinecone sync audits
No CV was read like a stranger in the making of this production.
Visit the live app(Next case) · Client· Ralf, Germany
Daphne
Bring clarity to long-form conversations.
Continue