Wishdeal Factory · Storefront
Operator interview · $75/hr · Roll Digital's seat
← Back to Saltline

How Caleb would build Saltline.

First-person from one of our chief operators. What he'd ship and how, AI-amplified. Stack, hour estimate, day-by-day plan, the parts that are hard, and the handoff. Synthesized from the agent spec.

How I'd build Saltline

I'd reach for Next.js on the frontend, Postgres for the database, Stripe for billing, and Twilio for SMS intake. The agent itself runs on Claude API calls with cached system prompts to hold the house-style rules. I'm estimating 90-110 hours soup-to-nuts: 40 hours for multi-tenant infrastructure and auth, 25 hours for the agent logic and formatting layer, 20 hours for Stripe and the pricing tier implementation, and 15-20 hours for integration testing and a basic Loom runbook. That's roughly two weeks of focused work, assuming minimal scope creep.

Day-by-day plan

  • Day 1: Provision Next.js project, set up Postgres schema for tenants and API keys, seed free trial credit logic into the database.
  • Day 2: Implement NextAuth with email magic links, wire up multi-tenant row-level security in Postgres, test tenant isolation.
  • Day 3: Build the dish submission form (name, ingredients, cuisine type, optional mood cues). Wire form POST to a queue table, validate inputs.
  • Day 4-5: Implement the agent endpoint. Claude API call with cached system prompt containing menu-engineering rules, dietary constraint logic, and format-specific word limits. Generate three description variants per dish, store results.
  • Day 6: Build the output formatter: render descriptions as a styled Google Doc template and a basic PDF export. Test character constraints per format (chalkboard special vs. laminated menu vs. Instagram).
  • Day 7: Integrate Stripe. Implement three pricing tiers (free trial, $25/month, $35/month with annual discount). Sync seat counts and description limits per tier.
  • Day 8: Wire Twilio for optional SMS dish submission. Add a route that accepts incoming SMS, parses dish data, queues it for agent processing.
  • Day 9: Implement house-style profile capture during onboarding. Store tone preferences, forbidden words, allergen flagging policy per tenant.
  • Day 10: Build seasonal menu prompt logic. Detect 90-day windows, send proactive outreach emails via Resend, capture user acknowledgment, schedule batch refresh jobs.
  • Day 11-12: Load testing, edge-case enumeration, fix bugs, record a Loom walkthrough of the admin dashboard and customer workflow.

What's hard about this build

The conflict-checking logic is subtle. Describing a dish as "contains no nuts" exposes the restaurant to liability if cross-contamination happens. I need to implement a rule layer that flags allergen claims and surfaces a legal disclaimer to the owner before they publish. That's not a hard engineering problem, but it's a hard product problem: get it wrong once and you've created a lawsuit factory. Second, Meta's Graph API for drafting captions to Business Suite is rate-limited and the auth flow is finicky. I'll need to test extensively against sandbox environments and handle token refresh gracefully. Third, the seasonal refresh cadence requires a reliable job queue. Postgres with pgboss or a lightweight Bull queue in Node.js is the right move, but I need to ensure nothing gets orphaned or runs twice. Finally, restaurant owners are not technical; onboarding must be bulletproof or support requests will drown the handoff.

What's fast because of AI

Scaffolding the three-variant generation function compresses hours into minutes. Claude writes the logic that branches on dish complexity, cuisine type, and mood cue with edge-case handling I'd have sweated through manually. Writing comprehensive test fixtures for allergen handling, character-count validation, and tone consistency now takes a prompt and verification rather than a day of manual case enumeration. Copywriting the onboarding flow and error messages is vastly faster: instead of workshopping tone, I generate five options and pick the strongest one. Debugging the Stripe webhook integration is straightforward because Claude helps me enumerate the failure cases upfront and write tests that catch timing mismatches. The PDF template logic, which would have been tedious HTML-to-PDF conversion work, gets scaffolded and adjusted in a few iterations rather than a full slog.

How I'd hand it off

I'd record a 20-minute Loom covering the admin dashboard, the customer onboarding flow, and the support runbook. You get a Postgres backup, the env vars template, and a Linear board with known edge cases and growth priorities. I'll do a 30-day pager rotation: you can Slack me with questions or escalate bugs, and I'll respond within 24 hours. You get the Stripe, Twilio, and Meta app credentials transferred to your own accounts so you own the integrations from day one. Finally, I'll leave a database schema diagram and a comment guide in the codebase so the next engineer can navigate without a geology degree.

Hire Caleb to build this for you.

Saltline is available to own for $200 flat. Or pay $75/hr for a Roll Digital chief operator to build it for you, AI-amplified.

See pricing →