Sales Agent: Case Study
We built our own lead gen agentbefore we sold it to anyone else.
Two-stage discovery, enrichment, CRM, 4-touch sequences, attribution tracking. Fully automated. It ran this morning at 6:30AM. Here is exactly how it works.
Note: The tools shown below are what we use for our own system, one example of how the architecture can be built. Your build uses whatever is already in your stack: your CRM, your email provider, your data sources. We are tool-agnostic by design.
The Architecture
Five stages. Fully autonomous.
Each stage runs in sequence, automatically, every weekday morning.
No human intervention between stages 1 and 3. Outreach requires a one-tap Signal approval before any email sends.
The Numbers
What it actually costs and delivers.
How It Works
Stage by stage.
Discovery
Claude Haiku Brave Search API Staging JSONEvery weekday at 6:30AM, a lightweight Haiku agent runs 6 to 8 searches looking for buying signals. Not brand mentions. Signals. Things like a law firm posting a Head of AI job, a hospital announcing an AI transformation initiative, or a manufacturer quoted in trade press talking about operational bottlenecks.
Each result is scored against a litmus test before it moves forward: what does this company sell? If it is an AI company or a startup raising money to build AI, it gets rejected. The pipeline is only interested in businesses buying or adopting AI to improve an existing operation, not companies building AI as their product.
Results that pass are written to a staging JSON file. The Haiku agent does not touch HubSpot, email, or anything external at this stage. Discovery is read-only and fast by design, using a cheaper model to keep token costs low.
Runs web searches, scores signals, writes candidates to staging JSON. Fast, cheap, broad.
Reads staging file, enriches each lead, writes outreach drafts, pushes to HubSpot. Slower, richer, deliberate.
Splitting discovery and synthesis across two models reduces cost without sacrificing output quality. Haiku handles the broad sweep; Sonnet handles judgment and language.
Enrichment
Apollo.io Hunter.ioAt 7:00AM, the Sonnet synthesis agent reads the staging file and enriches each lead. High-priority signals, the ones with a named decision maker visible in the press, clear pain, and evidence of budget, go to Apollo first. The agent searches for the COO, VP of Operations, CTO, or Head of AI at that company and pulls back a verified email.
Medium signals go to Hunter for a domain search. This surfaces whoever is most contactable at that organization without burning Apollo credits on a weaker signal.
Hunter is capped at 15 lookups per day. If a lead cannot be enriched today, it waits. There is no point sending an email to a generic info@ address, and there is no point blowing daily quotas on leads that do not meet threshold.
CRM
HubSpotEvery verified contact gets pushed to HubSpot automatically. A contact record is created with the email, title, and company. A deal is opened in the pipeline at the first stage. A note is attached to the contact with the buying signal, the source URL, and the outreach angle.
The T1 outreach draft is also generated at this stage, based on the signal and the contact details. The agent writes a short, plain email that references something real about why this person was found. It does not go into the sequence engine until a human approves it in Signal.
Sequences
Gmail SMTP sequence.js Signal (approval) Cal.comThe T1 draft lands in a Signal message. One tap to send, one tap to skip. This is the only point in the pipeline that requires human input before a contact enters the sequence engine. The email does not go out until someone approves it.
When it sends, it goes through Gmail SMTP via nodemailer. Every send is logged with a unique message ID tied to the HubSpot contact record. The sender is a verified domain, not a free inbox.
Once approved, the contact enters a 4-touch sequence managed by sequence.js. The timing is fixed: T1 on day 0, T2 on day 4, T3 on day 9, T4 on day 16. The cron at 11:20AM weekdays checks which contacts are due for their next touch and signals them automatically.
Tone is set by company size. Enterprise contacts (1,000+ employees) get signal-led copy with senior framing in 5 sentences. SMB contacts get owner-direct plain English in 3 to 4 sentences. The sequence engine reads the HubSpot company size field and applies the correct template at generation time.
Every email includes a booking link to cal.com/montebelle-llc-nm9nf5 so a prospect can schedule without a reply thread. If an email bounces or a complaint is received, the contact is flagged in HubSpot and removed from the active sequence immediately. The system does not retry bounced addresses.
Attribution
attribution.js HubSpot Notes Metrics CronThree cron jobs handle the tracking layer every weekday. The outreach metrics check at 11:00AM reads open and reply signals. The sequence check at 11:20AM is silent: it identifies which contacts are due for the next touch and queues them. The attribution report at 11:45AM runs attribution.js, writes a daily report, and logs which touchpoints led to replies, bookings, or deals.
The attribution pipeline tracks every touchpoint from the first T1 send through to a conversion event. When a prospect books via Cal.com or replies, the attribution report maps which touch in the sequence they responded to, and at what day in the cycle. This data feeds back into sequence timing decisions over time.
We are notified only on events that matter: a reply from a warm lead, a Cal.com booking, or a bounce that halts a sequence. The system stays silent otherwise. There is no daily dashboard to check. The signal reaches us when something worth acting on happens.
Dog-fooding
This ran this morning at 6:30AM.
Not a simulation. Not a demo environment. The same system, running against real data, delivering real leads to our pipeline every weekday before we start work.
When a prospect asks "does this actually work?" the answer is a link to this page. We use it ourselves. The system found the prospects who are reading this right now.
That is the only honest way to sell it.
New lead enriched:
Signal: Regional hospital group quoted in Health Affairs: "AI for denial appeals reducing review time by 60%". CIO named.
Contact: John Bell, CIO
Angle: Proven AI ROI in appeals. Extension to other clinical workflows is the natural next step.
Tone: Enterprise (5-sentence, signal-led, senior framing)
One tap to approve. That is the entire human step. T2 through T4 run automatically on schedule.
The Point
We can build the same for your workflow.
Lead gen is one application. The same architecture applies to recruiting pipelines, partner sourcing, competitive monitoring, and procurement tracking. Any workflow where you currently spend hours on research and manual follow-up.
The components are the same. The data sources change. The integrations change. The outreach tone changes. The underlying agent, discover, enrich, decide, act, track, stays the same.
Recruiting
Monitor job boards for candidates matching your criteria. Enrich with contact details. Draft outreach. Track responses.
Partner Sourcing
Find adjacent businesses in your space. Qualify by audience and fit. Draft a partnership pitch. Log everything to CRM.
Competitive Intel
Track competitor announcements, pricing changes, and job postings. Deliver a daily briefing. Flag anything that needs a response.
Fixed price. Two to four weeks. You own the code.