What we built
MainShop (mainshop.ai) is an agency-in-a-box for local small businesses — barbers, plumbers, dentists, small contractors. It bundles a website, a missed-call engine (Cadence underneath), lead capture, review automation, and managed social into a Crawl/Walk/Run tiered offer at $199 / $349 / $499 one-time + $10 / $20 / $50 monthly.
The shape of what we shipped
The wedge is the day-zero site. The moment a customer signs up, an AI build pipeline generates and deploys a real mainshop.ai-quality website at their domain. Not a queued brief, not a "we'll be in touch" page — a live site, hosted, in minutes.
The Crawl/Walk/Run ladder is the operator-set pricing model (replaced an earlier $1,950/mo agency-retainer model that was wrong for the buyer).
- Crawl ($199 + $10/mo) — real site, day-zero, hosting kept current.
- Walk ($349 + $20/mo) — Crawl + SEO + lead capture + missed-call engine (Cadence-backed voice receptionist).
- Run ($499 + $50/mo) — Walk + managed social (Castmint-backed) + lead gen (SDR-backed) + monthly growth report.
Why "agency-in-a-box" is the wedge
Agencies charge $2k/mo for retainers. Local businesses can't afford that. SaaS tools (Squarespace, etc.) leave the owner to figure it out. The agency-in-a-box bundles agency outcomes (site + leads + reviews + content) into a SaaS price point — single canonical price, no proposals, no discovery calls. Crawl/Walk/Run lets the owner start small and climb.
The honest result
MainShop just landed its first paying customer (Shear & Shave barbershop, $250 deposit, founder-direct sale). The product is real, the ladder is real, the canonical price source is test-locked. The next M0 milestone is 3 paying clients; we're 1 of 3 as of 2026-05-20.
What the next lessons cover
- Lesson 2: the single canonical price source pattern — how to lock pricing across every surface (homepage, /pricing, Stripe, OG meta) so it can't drift.
- Lesson 3: the day-zero site build pipeline — how to deploy a real client site in minutes, not weeks.
The real artifacts referenced above. Each entry is a production pattern in one of the 5 sister products.
- Pricing discipline · MainShop lib/pricing.tsSingle canonical price source (test-locked)Every pricing surface (hero, /pricing, Stripe checkout, OG meta, dashboards) reads from ONE file. A vitest test bans the numeric literal from appearing anywhere else. Stops the drift bug forever.
- Auth · MainShop + EarnkitHMAC service tokens with audience-distinct scopesHow we wire cross-service auth without standing up an IDP. Each product issues HS256 JWTs with a distinct audience claim (`mainshop:account`, `earnkit:account`, etc.) so a token can't be replayed across products.
One short question to confirm the takeaway. Re-read the lesson if needed.
1. Why does MainShop have a single canonical pricing file with a test that bans the literal price strings everywhere else?
Mark this lesson complete to track your progress through the module.
Loading…
One thread per lesson. Ask the operator a question, share a take, or post what you shipped after this lesson.
Loading…
Sign in to join the discussion.