The brief
For my GTM Engineer School capstone (Cohort 4, 2026), we were given a list of real companies with live revenue bottlenecks. I partnered with a Middle Eastern training firm that runs high-ticket bootcamps for professionals transitioning into management consulting.
The bottleneck
Their sales team was doing everything by hand: hunting for profiles, guessing who might be interested, and writing cold messages from scratch. Because their courses are expensive, spray-and-pray outreach didn't work. They had no reliable way to tell who was actually ready to make a career move, personalize outreach at scale, or see which angles converted.
Finding the buying signal
I mapped the LinkedIn timelines of 130 alumni, looking at where they were right before they joined and graduated from the bootcamp. Several patterns showed up across their histories, but they all coalesced around one core trigger: their careers had plateaued. They had been stuck in the same role for years and had recently started dropping public hints that they were looking for a way out.
The client had been running searches mapped to a standard set of personas (filtering by static job titles and industries), which left them completely blind to this. Persona-mapped searches can't spot a career plateau. You have to read someone's timeline and post history to see how long they've been stuck, and no sales team has time to do that by hand for hundreds of profiles a week. So I built the engine to do the reading for them.
How the engine works
The pipeline ingests a prospect's public profile and recent posts, then scores how close they are to buying. Every score comes with receipts: it flags what is pushing them to change careers, what is holding them back, and links every claim to a specific post or role. For hot and warm leads, it drafts a three-step outreach sequence grounded in those exact details.
My first prototype ran on an open-source AI agent framework called Hermes. It worked, but the agent kept improvising extra steps between tasks, which drove up API costs and made runs unpredictable. Worse, the client's IT security policy banned open-source agent frameworks.
I scrapped the agent and rebuilt the whole thing in three days as a deterministic Python pipeline with Claude Code. It runs the exact same steps in the exact same order every time. Lesson learned: I now ask about a client's security constraints before picking a single tool.
Cost & hallucination guardrails
Before spending a cent on scraping or AI, a rule-based filter drops prospects who clearly don't fit. Every paid API call logs its exact cost, and a batch refuses to start if it would breach the budget cap. If someone swaps in a new model without a price table in the config, the script halts instead of quietly logging the cost as zero.
To prevent hallucinations, a verification script checks every drafted message before a rep ever sees it, flagging any claim that doesn't trace back to the prospect's scraped data.
Finally, the engine never sends a message on its own. It hands the sales team a finished brief and a draft so a rep always makes the final call.
Inside the rep dashboard
Two additional views run alongside the screens above: a filterable Lead Board (where reps slice the cohort by tier, persona, country, or status and export to CSV) and a Pipeline Status tracker that logs every lead from first touch to booked call, including drop-off reasons.
Screens from the live application. Client name and prospect profiles replaced with sample data.
Catching a multi-touch hallucination
During a live test run, the AI invented a peer named "Loai" across two follow-up messages, complete with a fabricated career backstory. My original verification script checked each message in isolation and missed it. I caught it because I read the test outputs myself.
I upgraded the verifier to audit the entire three-message sequence as a single block. It now blocks any proper noun that doesn't appear in the prospect's raw LinkedIn data and catches repetitive phrasing across touches.
Back-testing the rules
To test whether the scoring logic actually predicted success, I ran the engine against 32 past bootcamp graduates: 17 who successfully landed consulting roles and 15 who didn't. Prospects showing active career momentum (a recent self-directed move or public pivot signal) appeared 4 to 6 times more often in the successful group. It's a small sample, but a strong directional signal.
The back-test also proved one of my initial assumptions wrong. I had penalized prospects who stalled and then made a lateral move, when the client's data showed they actually converted well. I inverted that rule before launch.