A catering channel the franchise owns — twelve points under the marketplace it replaces
A 15-store San Diego franchise group was growing catering fast on a third-party marketplace that took roughly 30% and kept the customer list. In five weeks we shipped the alternative: a direct ordering channel, a purpose-built catering CRM, and a go-to-market engine — all owned by the client, all priced on attributed performance only.
cheaper than the marketplace, on attributed revenue
signature to live channel, CRM & outreach engine
corporate accounts normalized and enriched
modeled base-case revenue kept in year one
The marketplace channel costs roughly 30% of food revenue all-in — commission, fees, placement, and misc charges — on every order, forever, with the buyer's contact details staying on their side. The direct channel carries an 18% performance fee that applies only to accounts the engine sources or reactivates, with organic marketplace volume never counted. Same demand, twelve points cheaper, and the customer relationship stays with the franchise.
Overview
Everbowl's San Diego franchise group runs 15 stores and a catering business whose order volume had grown 3.5× in a year — almost entirely through a third-party ordering marketplace. The marketplace worked: 249 orders and $73.3k in food revenue in the trailing twelve months, against an all-time book of 370 corporate accounts. It also took roughly 30% of that revenue all-in, and kept the buyer's contact information, so every reorder started on their platform at their rate. We built the franchise its own channel instead — a direct ordering site, a catering CRM to replace the rented one, and the outreach engine that fills them — and priced our side of it on attributed performance only.
The challenge
This wasn't a demand problem. The demand was proven and repeat. Three things capped what the franchise could keep of it:
A ~30% tax on proven demand. Between commission, fees, placement, and misc charges, the marketplace kept $20.7k of $73.3k in trailing-twelve-month food revenue — on orders from accounts that had already chosen Everbowl and would reorder monthly.
No customer list. The buyers were named in the order history — biotech, health systems, law firms, professional services — but the relationships lived on the platform. Nothing the franchise owned could reach them directly, and 182 of the 370 accounts hadn't ordered in a year.
Operations on rented software. Catering ops ran on a generic event-management tool with no link to the marketing site, no account history, and no attribution — so even if a direct channel existed, nothing could prove which orders it produced.
The direct channel
A public catering site and a customer-facing ordering flow, built on the same app as the CRM so an order and its attribution land in the pipeline the moment it's placed:
Zip-first routing. Every quote starts with a zip. Inside the service area it opens the full inquiry form and posts into the pipeline as attributed revenue; outside it, the visitor is captured as a market-interest record instead — a per-market demand map for the corporate conversation, visible only at org scope.
Group ordering, Chipotle-style. The host creates an order, shares one link, and each participant builds their own bowl with no account and their own edit token. The host sees a live roster, closes ordering, and pays once. Each person's selections become a labeled line on the kitchen ticket.
Real per-store menus. The full 15-location catalog with the modifier tree the flat menu never had — 96 option groups and 899 choices — with all three real per-store pricing patterns resolving correctly, plus capacity rules (minimum lead time, max events per day) enforced server-side at intake, not just in the UI.
Routed, not chosen. For delivery the customer gives an address and the system assigns the store — zip rules, then nearest store by resolved coordinates, then the franchise default. The posted store is ignored entirely for delivery, so routing can't be forced from the client.
The catering CRM
A purpose-built replacement for the rented event tool, owned outright by the franchise under a perpetual license — built inside the sending-domain warmup window, so it cost the launch timeline nothing:
Inquiry to paid, in one pipeline. Inquiry → Quoted → Invoiced → Paid → Fulfilled, with quotes, change orders that force re-acceptance, printable order sheets and BEOs with an allergen summary, a per-store delivery calendar, and daily production rollups that turn every confirmed event into one prep list per store.
Multi-tenant by construction. Org → franchise → store, with cascading scope enforced at a single choke point and roles asserted server-side on every mutation. Access is invite-only magic link — customers live in a separate table with no membership, role, or scope, so a self-serve form can never become a path into the CRM.
The money loop. Stripe invoicing and payment links, recurring standing orders cloned a week ahead by cron, a token-gated customer portal with one-click reorder, and a channel scoreboard that puts direct revenue and marketplace revenue side by side each month with the fees paid on each.
An AI layer where it earns its place. Paste a raw email inquiry and Claude extracts company, contact, date, headcount, and notes into a pre-filled order with the account matched by canonical name. Inbound replies are classified automatically into attributed inquiries and a triage queue.
Get the build breakdown — and a plan for your pipeline.
Drop your email and we'll send a full breakdown on how this catering growth engine was built.
The go-to-market engine
The channel is only worth what fills it. The outreach side is a data asset plus a sequenced, attributed engine — not a mailing list:
The account asset. 387 raw records resolved to 370 true accounts behind a single canonical-name resolver that sits in front of every intake path, so the same buyer never enters twice under a new spelling. Segmented by recency and spend, then enriched to a named decision-maker with a machine-verified direct email — generic inboxes are never sequenced.
A sized universe, not a scraped list. A curated target frame of San Diego offices matching the proven buyer profile, plus a 3,687-practice medical universe built from public registry data — the two segments the order history shows converting best.
Dedicated sending infrastructure. Three sending domains registered and DNS-verified with a three-week warmup — the client's own domain is never put at risk — running 5-touch sequences across three tracks, with a three-way offer A/B persisted per lead so the discount question gets answered with data.
Nothing sends without a human. A site beacon resolves tokenized campaign visits to the exact contact, and a nightly job turns un-replied visitors into follow-up drafts with the visit evidence attached. An operator edits and approves each one before it enrolls. Automation does the labor; the human keeps the judgment.
Attribution is the product
The entire commercial model depends on being able to prove which revenue the channel created, so the ledger was built as infrastructure rather than reporting. Every order carries its attribution channel — funnel, group order, portal reorder, or sourced account — from the moment it's created. The monthly account-level ledger shows what was sourced, what it ordered, and what the fee is, reconciled against the franchise's own export with discrepancies resolving in the client's favor. The fee is calculated on food subtotal net of refunds only: never tax, tips, or delivery. The report is the invoice.
What it adds up to
Five weeks from signature: 57 migrations, a live CRM on Vercel and Neon, a public catering site, group ordering across 15 stores, and an outreach engine loaded and staged behind its go-live checklist. Modeled on the franchise's own economics — a $236 median order and roughly one order per month per active account — the base case of 35 attributed accounts produces about $84k in attributed revenue, of which the franchise keeps roughly $69k and the accounts themselves, on top of untouched organic marketplace volume. That's a modeled projection, not a result; what's already banked is the asset. The funnel, the database, the CRM, and every customer relationship are the client's, during the engagement and after it — with a self-hosted copy available on exit.
Want an engine like this?
Book a free setup call and we'll map where automation pays off first.