Two builds in detail. An autonomous outbound engine, and a client automation hub for a bookkeeping firm. No stock-photo testimonials, just the architecture and what each one does every day.
A B2B services firm with a full delivery pipeline and nobody to run outbound. The usual fix is renting a stack: a lead database, a verification service, a sequencer, an enrichment tool, and a CRM to glue it all together, plus the hours to operate it. The brief was the opposite. Founder-quality personalization at machine volume, with a human's daily involvement reduced to almost nothing.
So the outbound was built as software. One engine owns the whole path, from “this company has a problem we solve” to “there is a reply waiting that deserves a person”:
The engine watches hiring boards for companies recruiting ops, admin, and bookkeeping roles. A company hiring someone to do manual work is a company paying for a problem we automate. Social listening on public feeds adds founders describing ops pain in their own words.
Company websites are resolved, contacts discovered, and addresses built by permutation. Every address passes DNS and live SMTP handshake verification before a send. Generic role inboxes like info@ are rejected by a hard gate in code, not by a guideline in a doc.
An LLM layer drafts each opener around the specific hiring signal that got the company onto the list, under a strict style ruleset enforced at generation. No merge fields, no "I came across your company".
Plain-text SMTP, no tracking pixels. Two daily send windows with per-window caps, a warmup ramp on daily volume, randomized spacing between sends, a file lock so concurrent jobs can never corrupt state, and a hard daily backstop that makes over-sending impossible.
An IMAP loop reads the inbox, matches replies to prospects by address and by company domain, strips quoted text, and classifies each one: positive, question, unsubscribe, out of office, bounce. Any human reply pauses the sequence. Opt-outs are suppressed permanently, bounces handled automatically.
A multi-step sequence where every touch introduces a new angle instead of "floating this back up". State is persisted per lead so a follow-up can never double-send, and follow-ups draw from their own budget so they never crowd out new conversations.
A channel registry reserves every company to exactly one channel, email or LinkedIn, keyed on a canonical company identity. Nobody gets the same pitch twice from two directions.
CSVs are the system of record, mirrored two-way into Google Sheets with a three-way merge against a baseline snapshot. Edit a status on your phone and the engine obeys it; delete a row and it stays deleted. The sync never clears a tab and never fights a human.
Scheduled jobs with watchdogs that kill hung runs and release locks, a dry-queue alarm that flags a starved pipeline the next morning, and a daily digest email that is the only thing a human has to read.
The same engine runs a separate outreach workflow per domain, with the sourcing signals and the messaging angle tuned to each one. A firm hiring a part-time bookkeeper reads differently from a clinic with no front-desk coverage or a home-services company buying leads it cannot answer. Accounting firms, healthcare clinics, HVAC and home services, and sales teams each get their own signals and their own opening angle, run through the same guardrails.
Sourcing jobs run in the morning and early afternoon and top up the queue. Each send window verifies its batch, sends within its cap, and stamps every row. The reply loop triages the inbox on a schedule. Follow-ups fire when due. The sheet syncs both ways. If anything starves or stalls, the digest arrives flagged the next morning. No step waits for a person.
A rented outbound stack, the data subscription, the verification service, the sequencer, the enrichment tool, and the per-seat CRM, plus the part-time operator it all demands. Here that is code the firm owns, running on its own hardware, with deliverability protected by verification gates, volume ramps, and suppression handled at send time.
A Toronto bookkeeping firm ran its whole practice out of spreadsheets and a shared inbox. Two jobs ate the day: keeping existing clients reconciled and chased, and finding the next client. Both were manual, both were repetitive, and neither got the attention it needed. The firm wanted one place its staff could open every morning that did the heavy lifting on both sides.
We built a portal with two sides, one for delivering client work and one for winning it. The staff log in each morning to a single dashboard, review what the automation prepared overnight, and approve or edit before anything goes out. Nothing sends on its own.
This side turns raw exports into finished, reviewed work. It ingests QuickBooks invoice exports, a bank or Excel transaction feed, and vendor invoice PDFs, then does the reconciliation the firm used to do by hand.
Every bank deposit is matched to the invoice it pays, catching the clean matches and the near-misses where amounts or references do not line up perfectly. The work the firm used to do line by line runs before anyone logs in.
Duplicate payments, partial payments, unknown deposits, and invoices past 60 days unpaid are pulled out and flagged, so the staff open the day looking at the handful of things that actually need a person.
Every open invoice is sorted by how long it has gone unpaid, turning a static export into a live picture of who owes what and for how long, without anyone building the aging report by hand.
For every overdue invoice the hub drafts a personalized reminder, escalating by age from a friendly nudge to a firm reminder to a final notice, plus nudges on quotes that have gone stale without a reply.
Nothing sends automatically. Each reminder sits in an approval queue where a person reads it, edits if needed, and releases it, or decides it can wait. The firm is always the one who hits send.
The other side keeps the pipeline full. It reads public signals that a business needs a bookkeeper and turns them into a scored, staged pipeline with outreach ready to review.
A company posting for a part-time bookkeeper, a founder posting about doing the books at 11pm, a local business with no bookkeeper on staff, and inbound replies and referrals all become prospects on the same board.
Each prospect is scored 0 to 100 on a fit rubric written down in code, weighing industry, size, signal strength, and locality, so the ranking is explainable rather than a black box the firm has to trust blind.
Prospects move through defined stages, so the firm always knows who is new, who has been contacted, and who is warm, without maintaining a separate CRM by hand alongside the client work.
For every qualified prospect the hub drafts a three-step personalized sequence into the same approval queue the reminders use, so winning clients and serving them are reviewed side by side in one place.
The sourcing and sequencing it does in-house stood in for roughly $200 a month of rented prospecting and sequencing SaaS, folded into a hub the firm already owns.
Three decisions separate this from a demo that impresses once and breaks in week two.
AI drafts, a person approves. Every reminder and every outreach message is a draft, not a decision, and a person releases it. The firm never wakes up to something the machine sent on its own overnight.
Each automation runs on the firm’s own Claude key, so client financial data is processed under the firm’s own account and never touches a model Tyntex hosts. The firm owns the keys and the data path.
The time saved is counted from per-task manual baselines documented in the code, two minutes per bank transaction, twelve minutes per personalized follow-up, so the ROI number is understated on purpose and survives scrutiny.
These are two builds shipped by the three people who would build yours. Same hands, same standard, pointed at the repetitive work in your business. It starts with a free Automation Audit over your real workflows.