Prices hidden behind a call
Most agencies make a small business book a call just to hear a price. Owners want to know what it costs before they spend time talking.
Case study · Syndicate Holdings Group
Small agencies usually run on a pile of rented tools that don’t talk to each other. I designed and built one system instead: a store, CRM, client portal, analytics and AI agents on one database. A small business can buy from us online without a sales call, every new client is set up automatically, and the AI does real work inside rules it can’t bend.
01 The problem
Syndicate Marketing builds websites, runs ads and manages Discord communities for small businesses. I wanted it to run like a much bigger company without the cost of one. Three things stood in the way.
Most agencies make a small business book a call just to hear a price. Owners want to know what it costs before they spend time talking.
Every new client meant the same manual setup: invoice, project, logins, kickoff, tracking code. That doesn’t scale, and it’s easy to miss a step.
Rented analytics and reporting add monthly cost and cookie banners, and clients rarely get a clear view of what their money is doing.
02 The system
Every stage of a client’s journey runs through the same database, so nothing is copied by hand from one tool to the next.
A free website checkup, a blog, local landing pages and rule-bound cold email bring new businesses in.
AI agents research prospects and write personal emails; the system decides what can actually be sent.
Published prices, a cart and a four-step Stripe checkout, with one-off and monthly plans in one order.
Payment triggers the whole onboarding: contact, invoice, project, portal access and analytics.
The client fills in a kickoff form, an AI agent drafts the site, and I review it before the client sees it.
Uptime, security and speed checks, a monthly report, renewals through Stripe and online cancellation.
03 Automation
The checkout never trusts prices from the browser: the server prices every cart again from our own catalog. Once Stripe confirms the payment, the onboarding runs by itself, and each payment is handled exactly once even if Stripe sends it twice.
If a confirmation ever goes missing, a scheduled job checks with Stripe directly every 15 minutes, so no order falls through the cracks.
04 Where the AI fits
Scheduled AI agents do the judgment work: researching prospects, writing emails, answering replies, drafting websites and blog posts. Everything with a rule stays in plain, tested code.
Who’s worth contacting, what to say, how to answer a reply, how a client’s site should look. One narrow job per agent.
Daily send limits, opt-outs honored at once, only approved links, one job claimed by one run, and a stop if bounces climb. The agent can’t talk its way past any of it.
No website draft or blog post goes out until I’ve reviewed it, and anything an agent isn’t sure about is handed to me.
05 The pieces
Every screenshot is a live page. The client portal is a demo account for a made-up business, so you can click around without seeing real client data.



06 Engineering decisions
The judgment calls that shaped it, with what each one cost.
Prices live in one catalog and every rule lives in one spec the AI agents read before they change anything, so the code, the site and the docs can’t drift apart.
Trade-offEvery change updates the spec too.
No frameworks and zero npm dependencies. It runs on ordinary shared hosting, and every push to GitHub builds and deploys the sites.
Trade-offSome things a framework gives you had to be built.
The agents are told the rules, but the system enforces them. A clever prompt can’t send to an opted-out address or post a draft to a client.
Trade-offSlower than letting automation run unchecked, on purpose.
Checkout, quotes, booking and sign-in run against a local copy with a fake Stripe server and fake mail before anything ships: 152 checks.
Trade-offA test harness to keep up alongside the code.
Cookie-free analytics that store no personal data, so our sites and every client’s get honest numbers without renting another tool.
Trade-offMore to maintain than a free tracker.
It handles payments and client data, so staff sign in with passkeys or two-step codes, leaked passwords are refused, sign-ins are logged and backups are checked nightly.
Trade-offA few extra steps to sign in.
07 How I built it
The same loop for every change, from a typo to a payment flow.
How it should be built: OWASP, NIST, the RFCs, Stripe’s and Google’s own docs.
The rules, written down where the agents read them before touching anything.
AI coding agents write most of the code, one scoped task at a time.
I read the code, catch the errors and shortcuts, and send them back.
End-to-end tests, then a push to GitHub deploys it.
I read and understand the code, spot bugs and bad patterns before they ship, and research best practices instead of taking an agent’s word for it. That isn’t vibe coding: it’s specifying, reviewing, testing and owning what goes live.
08 What it shows
You probably aren’t hiring someone to build a CRM. This project is about how I take a messy business problem and ship an AI-powered system that solves it, safely.
I mapped every handoff in the business, automated the ones that didn’t need a person, and put AI where judgment was the bottleneck.
Narrow jobs, rules in code, human gates and stop switches. I run these agents every day and tighten the rules when they drift.
Published prices, a portal that shows the work, plain-English reports and compliance built in: CAN-SPAM, FTC rules, auto-renewal laws.
I’m happy to share my screen and show how any part of this works, down to the code. Email me and I’ll reply within one business day.