Saltline -- Beautiful Menu Copy, Written in Minutes - Vertical Agent Spec
One-line definition
An agent that generates, formats, and delivers print-ready menu descriptions and social captions for independent restaurant owners who have the food but not the words.
The workflow it owns end-to-end
- Owner or manager submits a dish name, core ingredients, and optionally a cuisine style or mood cue ("rustic," "upscale casual") via a simple web form or SMS.
- The agent generates three description variants per dish: a concise menu body (under 40 words), an expanded tasting-note version, and a social caption with relevant hashtag suggestions.
- It checks each description against a house style profile (tone, forbidden words, allergy flag policy) that was captured during onboarding.
- It packages the full batch as a formatted Google Doc or PDF ready for print, and optionally pushes captions to a draft queue in Meta Business Suite.
- On seasonal menu cycles (flagged by the owner at onboarding), it proactively prompts: "Your spring menu update window is open. Submit new dishes or I will refresh existing descriptions with seasonal language."
What it knows that a generic LLM doesn't
- Menu engineering vocabulary: it understands the difference between a "descriptor anchor" (the word that justifies a price point) and filler adjectives that trained diners now ignore ("fresh," "house-made").
- Character and word constraints by format type: a chalkboard special has different limits than a trifold laminated menu or an Instagram carousel slide.
- Dietary and allergen adjacency: it knows not to write "contains no nuts" without flagging that this is a legal exposure, and it knows that "vegan-friendly" language differs from "certified vegan" in ways that matter to a restaurant's liability.
- Cuisine-specific ingredient naming conventions: when a dish has guanciale, it knows whether the audience is likely to recognize that word or whether the description needs a bridge phrase.
- Seasonal availability windows by region: it will not write "fresh local strawberries" for a December menu in Minnesota without flagging the inconsistency.
- Formatting expectations for common POS and menu-printing workflows, including Square for Restaurants and Toast menu import templates.
What it explicitly declines
- Pricing strategy: it will not suggest what to charge for a dish, because that requires food cost data and margin targets the agent does not have and should not guess at.
- Legal health or allergen certifications: it generates descriptive copy only, and it explicitly labels any allergy-adjacent language for human review before print.
- Brand identity decisions: it works within a style guide but does not create one from scratch, and it will not tell a restaurant whether its concept is positioned correctly.
- Website builds, photography direction, or any output format requiring visual design judgment beyond text.
Tools and integrations required
- Google Docs API or Dropbox Paper for formatted output delivery.
- Meta Business Suite API for pushing social captions to draft queues.
- Toast or Square for Restaurants API (read) to pull existing menu item names and reduce re-keying.
- Twilio or a similar SMS gateway if the target market (independent operators, often non-desk workers) is to be reached via phone rather than a web dashboard.
- Stripe for per-batch billing.
- A lightweight onboarding form (Typeform or equivalent) to capture cuisine type, tone preferences, allergen policy, and brand vocabulary once at setup.
Trust escalation: when it pings a human
- Any description that includes a health or therapeutic claim ("aids digestion," "anti-inflammatory") gets flagged and held, not delivered, until the owner explicitly approves.
- If a submitted dish name matches a known trademark or brand (e.g., a proprietary cheese or spirits name), the agent surfaces this and asks the owner to confirm usage rights before including it in print copy.
- When the agent detects a significant inconsistency between the stated cuisine and an ingredient list (a signal that something was mistyped or the dish is still evolving), it pauses and asks rather than generating copy for a dish that may not exist yet.
- If the owner has not logged in or submitted dishes in 60 days and a billing cycle is approaching, it sends a check-in rather than silently continuing to charge.
Pricing model
The honest pricing shape here is per-batch, not per-seat per month. A full menu batch of up to 20 dishes for $29, with individual dish top-ups at $2 each, fits the actual usage pattern: a restaurant opens, runs the agent once for their full menu, then touches it a few times a year for seasonal specials. An annual plan framed as "unlimited seasonal refreshes for $99/year" might hold better than a monthly SaaS, because it maps to how restaurant owners actually think about costs (annual, like their POS contract) rather than recurring overhead. The honest assessment is that willingness to pay even $99/year is fragile in this segment; the product has to close on the first interaction, because the repeat purchase motivation is structurally low.
Differentiation from a generic LLM wrapper
The existential answer here is narrow and should be stated plainly: a restaurant owner who is comfortable with ChatGPT will not pay for this. The real buyer is the owner who is not comfortable with AI prompting, who wants a result in under three minutes without learning anything new, and who needs the output in a format they can hand to a printer without reformatting. The moat is not the writing quality; it is the zero-configuration path from "dish name and ingredients" to "print-ready file," plus the cuisine-aware style guardrails that prevent the generic hallmarks of AI copy (overuse of "mouthwatering," "delectable," "bursting with flavor") that experienced diners now recognize on sight. If the agent cannot consistently produce copy that reads like a human writer who knows the specific cuisine, the product has no durable edge over a 30-second paste into any major LLM. That bar is achievable, but it requires ongoing prompt investment and a curated bad-output feedback loop, neither of which is free.