Case 01 / 02Koya Talent cohort, week 5, 2026
Lead research agent
Type who you want to reach. It finds real companies, decides which fit, and drafts the outreach for a person to approve.
01The problem
Outbound was fully manual: someone defined the persona, searched for companies, checked fit, read every website for context and wrote cold emails from scratch. Slow, repetitive, and different every time someone else did it.
02The approach
An agent built on the Claude Agent SDK with six narrow tools. It confirms the brief with the operator, discovers companies through Apify, reads their sites with Firecrawl, qualifies each one with reasons and sources, and drafts a three-email sequence plus a LinkedIn message. Budgets live in the app, not the agent, and nothing is ever sent.
03How it works
Confirm the brief
The objective is checked by code and Claude Haiku first, so junk never reaches a paid tool. The operator then confirms the ideal customer and marks each criterion as a must-have, a nice-to-have or skipped.
Discover with Apify
LinkedIn company search, worded around the product a company sells. The app sets the budget per run (35 companies, 8 searches) and every call is logged with its cost.
Read their sites
Firecrawl reads up to 3 pages per company, same domain only. Website text is treated as untrusted data: it is labelled, scanned for injection phrases and can never change limits or trigger anything.
Qualify with evidence
Every company gets a status, a confidence score, reasons, concerns and the pages it was judged on. Anything uncertain goes to needs review instead of padding the list.
Draft, then a person decides
Qualified leads get three emails and a LinkedIn message, each line tied to a page the agent read. The operator edits, approves or rejects, then exports to Excel, CSV or JSON.
04Before and after
Before
- Personas rewritten by hand for every campaign
- Companies found one search at a time
- Every website read manually for context
- Cold emails written from scratch, different per person
After
- Criteria confirmed once, in a checklist
- Discovery runs on a fixed, logged budget
- Each lead arrives with reasons, concerns and sources
- Grounded drafts ready to edit, approve and export
05See it run
06Proof it holds up
- A planted company page tried to make the agent leak API keys and mark itself qualified. It was flagged, ignored and saved as not qualified.
- Junk objectives are rejected before any paid tool runs.
- A run that falls short has to explain why, and the operator can search again or use what was found.
- Admins get overview, spend and team pages; every step is in a plain-language run log.
07What I learned
Test end to end with awkward input in week one. Two bugs hid for days because the small checks passed: the agent could not open its own guidance, and a search that found nothing never forced a run to stop. Now I ask what stops something if nothing works, for anything that repeats.

