What It Is
One big prompt kept doing everything badly, so we split it into five agents that each do one job and hand over a checked result. A person stays in charge of the only step that matters: sending.
The Five Agents
Scout. Looks at new requests every few minutes and keeps only the ones that fit: the right region, a client with a track record and little competition so far. It reads and never writes.
Writer. Drafts two different replies per request from a catalog of real past work, so nothing is invented. Both open with the client's own problem, not a greeting.
Reviewer. A separate agent that checks each draft before a person sees it. Plain code catches contact details and dead or unknown links; a model checks the opening, the claims against the catalog and whether the draft answers what was asked. If something fails it fixes the draft and says what changed.
Approver. Ordinary code, not a model. It builds a preview with the bid, the cost and the attachments, posts it to the owner's phone and waits. It sends only after a tap on Confirm. Cancel does nothing.
Editor. Changes a draft or the price when the owner asks in the chat thread, such as "shorter" or "add the map project". Changes to something already sent also show a preview first.
Example Use Case: Quote Requests
The poster shows the same pipeline on a home-services company. A homeowner asks about a second floor that will not cool. The scout keeps it because it is inside the service area. The writer drafts two replies from the price book and past jobs. The reviewer catches a quote below the price book, a promise of same-day service the calendar cannot keep and a dead financing link, and fixes them. The owner sees a preview on the phone and taps Confirm before anything reaches the customer.
Why Five and Not One
A writer that also checks its own work approves its own mistakes, so the reviewer looks at the draft cold. Keeping the approver as code means the step that spends money and speaks for us cannot be talked into anything by the text of a request. Each agent gets only the tools it needs, and the ones that prepare work cannot confirm anything.
A Real Catch
In a test on a live draft, the writer had linked to a page that returned 404. The reviewer's link check found it, swapped in the closest live case study and fixed the closing line as well. That is the kind of slip that is easy to miss when drafts are pasted by hand.
Stack
Python, a scheduler on the host machine, Claude and OpenAI Codex driven from the command line with MCP connectors, a Discord bot for the phone side and a link checker built on HTTP requests. The writer runs on one model and the scout and reviewer on another, so the load is spread across two subscriptions.
A Note on the Results
It is new, so there are no win rates to quote yet. The reviewer reduces bad drafts; it does not guarantee good ones. The poster shows an example use case, quote requests for a home-services company. Names and figures in it are sample data.
Need an agent workflow with an approval step?
Multi-agent pipelines where each agent has one job, the checks are real code where they can be, and a person decides what goes out.
Book a Free Call