The work, shown.

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.

An autonomous outbound engine, built for a services firm with no salesperson.

The problem

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.

The system

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”:

Signal-based sourcing

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.

Enrichment and verification

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.

Personalization at write time

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".

Sending with guardrails

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.

Reply triage

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.

Follow-ups as a state machine

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.

One channel per company

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.

A CRM the operator can touch

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.

Self-monitoring

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.

One engine, many verticals

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.

What a day looks like

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.

“Every prospect it reaches was sourced, written, verified, and sent with nobody at the keyboard. The only human step is replying to the ones who write back.”

What it replaced

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.

3
Sourcing channels
Hiring signals, local business data, and social listening, merged and deduplicated.
2
Send windows a day
Capped, ramped, and verified before every send, running unattended.
0
Rented SaaS seats
No sequencer, no data subscription, no per-seat CRM. Owned code end to end.

A client automation hub for a bookkeeping firm.

The problem

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.

The hub

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.

The workspace side: client delivery

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.

Reconciliation across exact and fuzzy matches

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.

Exceptions surfaced, not buried

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.

Receivables aged automatically

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.

Reminders drafted with the right tone

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.

Every draft waits for approval

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 growth side: client acquisition

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.

Demand signals, read continuously

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.

Scored on a documented rubric

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.

A pipeline that stages itself

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.

Outreach drafted, never auto-sent

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.

Cheaper than the tools it replaced

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.

What makes it hold up

Three decisions separate this from a demo that impresses once and breaks in week two.

A human in the loop everywhere

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.

Bring your own AI

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.

Deliberately conservative hours-saved math

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.

2
Sides, one login
Client delivery and client acquisition in a single dashboard the staff open each morning.
0
Automatic sends
Every reminder and every outreach message waits in an approval queue for a person to release it.
$200
Monthly SaaS replaced
The rented prospecting and sequencing tools the growth side stood in for, folded into a hub the firm owns.

The same three founders build
your automation.

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.