
Who
I got tired of watching catering businesses buy generic agency retainers that treat a wedding buffet like a SaaS landing page.
Catering is feast-or-famine. Wedding season starts when venues book. Corporate lunch messaging is not private-event messaging. Deposit timing matters. A Google Business profile can become tasting appointments, or a photo graveyard.
Cravees is for caterers and restaurant catering arms who need demand this month: inquiry lift, reorder lists, review velocity. Operators who want a vertical agency site on a real stack (Next, Convex, Clerk, Stripe) with lead status enums that survive a failed Resend delivery. Builders who will admit the public pricing cards and the Stripe planSlug ladder are not the same numbers yet.
If you have ever explained to a marketing generalist why plated service and buffet are different offers, this is for you.
What
I built Cravees, package name cravees, version 0.1.0, private under HurleyUS/cravees.com. Metadata line: Marketing Agency for the Catering Industry. Hero line: Turn hungry searches into booked tables, events, and repeat orders.
Stack facts from the lockfile and tree, not the stale sitrep: Next.js 16.2.6, React 19.2.6, Tailwind 4.3, Bun, Convex schema + mutations, Clerk auth surfaces, Stripe checkout/portal/webhook, Catppuccin Mocha with peach primary, Resend/Sentry/PostHog/GA wired. Seventy-three commits. HEAD ab0c4cb.

Surfaces that exist in app/: / marketing with demand cockpit + case studies + testimonials + FAQ + ROI embed, /about, /pricing with comparison table, /blog + three SEO posts, /contact enhanced form (business type + service interests), /book Calendly, /roi-calculator, four /services/* landings, Clerk catch-alls, private /dashboard (+ messages, assets), newsletter + Stripe API routes.
Convex tables: leads, subscribers, clients, subscriptions, addOnPurchases. Lead pipeline: new to contacted to qualified to proposal to won | lost. Public packages: Starter $299, Growth $599, Premium $999. Stripe definitions in lib/billing.ts: Bronze $499, Silver $999, Gold $1,999 (+ annual labels). Add-ons: extra social post $49, rush design $199, additional listing $99.
That dual ladder is not a typo in this write-up. It is the product honesty.

Where
Code lives at github.com/HurleyUS/cravees.com. private. GitHub homepage points at cravees-com.vercel.app. Custom domain www.cravees.com also 200 at pack time. Apex redirects to www. Auth-gated /dashboard and /sign-in returned 500 without living Clerk keys. marketing stays up because May commits taught the app to tolerate missing auth/env.
Audience sits next to restaurant marketing shops, with a catering-only pitch: inquiry funnels, seasonal search pages, winback email for lapsed brunch guests. Sibling operator furniture is present. .hustlemc, Blacksmith ship workflow, Vitest/Playwright, Stripe type-safe webhooks.

When
2026-01-08. 8b80d36 Initial commit: Next.js, Convex, Tailwind. Same morning OPPORTUNITIES. Afternoon PLAN. Market thesis lands day one: ~12k dedicated caterers, $60B+ industry framing, Starter/Growth/Premium sketch.
2026-01-31 / 2026-02-05. Sync. Prod build ready. Tailwind v4 globals @import fix.
2026-02-13. Catppuccin Mocha default. Routes, contact, pricing, about. Four service landing pages. Replace a real business name with fictional Copper Kettle Catering. quiet ethics commit.
2026-02-21–24. The agency week. Zod schemas shared across form + API. XSS sanitize on contact HTML email. Clerk middleware. Convex lead storage. FAQ. Testimonials. Pricing comparison table. Blog section. Calendly booking. PostHog. ROI calculator page. Portfolio/case-study cards. Newsletter + Resend double opt-in. Protected client portal scaffold.
2026-03. SEO robots/sitemap/GA. Stripe type-safety and event guards. Enhanced contact form. Interactive ROI on the homepage.
2026-05-14–22. Blacksmith CI and deploy verification. Keep public site up without auth env; disable Clerk UI for dummy keys; tolerate invalid Resend sender. Redesign commits. Merge blacksmith migration PR #64.
2026-08-08, 06:54 ET. ab0c4cb set X-Robots-Tag to index, follow on Vercel. HEAD. Seventy-three commits total.
Pack day 2026-09-08. Draft and assets only. Live marketing 200 on vercel + www. sitrep.md still claims purpose unclear and last commit February 5. treat it as drift, not truth.

Why
I did not want another hospitality brochure with stock plate photography and a contact form that emails into the void.
I wanted lead status enums next to subscription sync. I wanted an ROI calculator that routes into the same contact pipeline as the pricing CTA. I wanted newsletter double opt-in and a client portal sidebar even while /dashboard still 500s without Clerk. I wanted the public $299/$599/$999 story and the Stripe bronze/silver/gold amounts to be visible in the same repo so nobody pretends they already match.
So the February issue board became the agency: close FAQ, social proof, pricing table, blog, book, analytics, ROI, newsletter, portal. March hardened SEO and Stripe. May made the public site survive missing secrets. August flipped robots headers on a site that actually answers.
Would you ship the public Starter/Growth/Premium ladder first, or make the Stripe bronze/silver/gold amounts match the pricing page before the next catering discovery call?
