Situation
A capacity ceiling set by human hours
Breez is a lead generation company. Pipeline is not their overhead. It is their product.
The team was researching prospects by hand, hours every day. Contact information was scraped one profile at a time. Outreach was written one message at a time, because personalized messages were the ones that got answered. Proposals took hours each to assemble. Add it up and the operation topped out at 10 to 20 touches a day.
That number is not a Breez problem. It is the human maximum. A person who researches a prospect properly, writes something that prospect would answer, and assembles a proposal worth opening can only do that so many times before the day ends.
The two standard escape routes both lead somewhere bad. Hire more people, and cost scales in a straight line with output. Switch to templates, and volume goes up while the research, the thing that made the outreach work, disappears from every message. Breez's edge was that their outreach did not read like outreach. Any system that scaled volume by burning that asset would have made the company worse, faster.
Three constraints were fixed before anything was built. Messaging quality could not drop, because reply rates were the business. The team had to run it themselves after handoff, with no vendor ticket for every tweak. And the first version had to be live inside weeks, then improve in production. Constraint one ruled out every blast tool on the market. Constraint two ruled out a black box only we could operate. Constraint three ruled out a research project. What was left was a pipeline of small, inspectable stages.
What we built
One pipeline, raw lead in, delivered proposal out
Seven stages, each running without a human in the loop until a prospect replies.
- Lead sourcing. Automated sourcing from several data sources, continuously, matched to the target profile.
- Enrichment. Contact and company data gathered, verified and merged into one clean record per lead.
- AI strategy. A custom analysis for every lead: who they are, what they need, why Breez fits. This layer is the difference between personalization and mail merge.
- Personalized outreach. Messages built from the strategy layer, so every line traces back to something true about the prospect.
- Deck creation. Proposals generated through PandaDoc, with 40+ personalized data points per prospect.
- Reply detection. Responses caught the moment they land and routed to a human, so nothing goes cold in an unwatched inbox.
- Follow-up. Sequences that continue until there is a reply or a deliberate close-out.
Enrichment is where most outbound systems quietly fail. Different sources disagree about the same company, contacts go stale, and half-complete records leak into campaigns. Here, every source feeds one record per lead, conflicts get resolved before anything downstream runs, and every later stage reads the same truth.
The strategy stage is where the build earns the word engine. For every lead, the system reads the full enriched record and produces an analysis: what this prospect's situation looks like, what they are likely trying to fix, and why Breez is the right answer. The outreach and the proposal are both generated from that analysis. That is why a thousand messages can go out without one of them reading like the other nine hundred and ninety-nine.
The whole pipeline reports into Slack, with a channel for research-ready, strategy-ready, deck-ready and reply-detected. The team watches deals move through stages and steps in exactly where a human matters.
Delivery is warmed up and throttled rather than blasted, every message identifies the sender, and unsubscribes work. The engine is built to respect CASL.
How it runs
Isolated stages, one lead record, a human at the reply
A demo pipeline and a production pipeline look identical in a screenshot. The difference is what happens when something breaks.
Each stage runs on its own and hands its result to the next through the data store. A failed enrichment call never blocks the pipeline. The one lead that failed waits for a retry while every other lead keeps moving, so failure is a line item instead of an outage. Supabase holds the single lead state: a lead's stage, history and data live in one record in one store, any stage can crash and restart without losing track, and when something looks wrong there is exactly one place to look.
The pipeline is fully automated up to the moment a prospect shows intent. Then it stops being automated, on purpose. A reply routes to a person in the team's working channel, and the machine never negotiates with a live deal on the line.
Tone, targeting rules, follow-up logic and qualification criteria sit in plain-text directives the team can read and edit. Changing how the system behaves is a text edit. This is the DOE architecture (directives, orchestration, execution) and it is the single biggest reason the handoff worked.
Cost is controlled per stage. The expensive model calls sit in the one stage where they pay for themselves, strategy. Sourcing, enrichment and delivery run on cheap, deterministic tooling. Each stage carries its own budget and reports its own spend, so scaling the volume up never shows up as a surprise invoice.
Every tool earned its place by doing one job. Claude runs the strategy and personalization layer, because turning everything the pipeline knows about a lead into an argument for why Breez fits is a judgment-shaped task. Scrapers and structured data sources feed the top of the pipeline. Instantly and HeyReach handle email and LinkedIn delivery, with the warm-up, ramps and monitoring that sending at volume needs. Supabase is the single store for lead state. PandaDoc assembles the proposals. Slack is where the system talks to people, because the team already lived there. The full stack, with the reasoning behind each choice, is at /stack.
Under our Build + Educate model, the Breez team learned the system while we shipped it. Day to day it lives behind the same client platform every Advizr engagement ships with: an approval queue for anything consequential, a live activity feed, and reporting the whole team can read.

The team learned the DOE architecture, so they change system behavior by editing directives. They learned how to evaluate AI output instead of trusting it. Once they understood how the system worked, they started seeing automation opportunities elsewhere in the business and asked for more, which is how the scope grew.
What we measured
Hours to minutes per prospect, with the standard held
Before, a day's output was 10 to 20 touches, each carrying hours of research. After, hundreds to thousands of touches a day, each still carrying the research, because the research is now a pipeline stage instead of a person's morning. Per prospect, the work dropped from hours to minutes. That figure is our estimate, timed by hand on the live pipeline, and a pipeline log will replace it.
The thing to notice is what did not change. The work per prospect is the same work: research, strategy, a personal message, a proposal. It got faster because machines took over the assembly, not because the standard moved.
The first version was live in two to four weeks, then iterated on in production. This build is productized as the outbound engine, the same seven-stage pipeline scoped for your business. The same pattern maps onto brokerage prospecting, which AI for real estate walks through. If you want the capacity math on your own pipeline before committing to anything, start with the free audit.