← All posts

April 19, 2026 · 8 min read

Menu photo to live website in 60 seconds: what Claude vision actually parses

Upload a photo or PDF of your menu and we extract every item, price, and category. Here's what works, what doesn't, and what we did when it didn't.

The friction in onboarding a restaurant onto any website builder is the menu. Forty items, six categories, modifiers and prices and dietary flags. Hand-keyed, that's a 90-minute task that owners push to next week and never come back to. The site goes live with a placeholder "Menu coming soon" and stays that way for months.

We solve this with vision. Snap a photo of your menu (or upload a PDF), and Sonnet returns structured JSON: categories, items, descriptions, prices, dietary flags. It works well, but only if you understand what it can and can't do. Here's the honest version.

What works

Clean, modern menus parse near-perfectly. If your menu is laid out in a single column with category headings (Starters, Mains, Desserts), a consistent font, and prices aligned to the right, you'll get ~98% accuracy on a first pass. We've tested this on roughly 40 sample menus from independent restaurants in the Northeast Florida area and the failures cluster narrowly.

PDFs work as well as photos. Better, actually — PDF text layers give the model exact characters to anchor on, and it cross-checks them against the visual layout. If your menu is a typeset PDF with an actual text layer (most are), you're in the easy case.

Multilingual menus work. We've parsed Spanish, French, Italian, Japanese, and Vietnamese menus with no special handling. Sonnet handles non-Latin scripts natively, including kanji and katakana.

Handwritten supplements work too — the chalkboard with the daily specials, the printed insert clipped to the leather menu folder. As long as the writing is legible to a human at typical reading distance, the model gets it.

What doesn't work (and what we do about it)

Multi-column layouts with cross-references

Some menus have a left column listing entrées and a right column listing "sides — pick two, $4 each". The relationship between the two columns is invisible to the parser unless the menu is explicit. We get it about 70% of the time. The fallback: we extract everything as separate items, and the owner cleans up the modifiers in the dashboard. Better than blank.

Menus with stylized fonts and decorative borders

Heavy script fonts, deeply ornamental layouts, and menus where the item name and the description are typeset in the same color and size all reduce accuracy. We've seen worst-case 80% accuracy on late-90s steakhouse menus with gold foil and Copperplate Gothic. Solution: the parser flags low-confidence items, and the dashboard prompts the owner to verify them before publishing.

Pricing edge cases

"MP" (market price), "mkt", ranges ("$24–28"), prices on a per-ounce or per-piece basis ("$5/oz", "$3/pc"), and bottomless or all-you-can-eat pricing all need special handling. We treat MP and ranges as text fields rather than numeric prices and let the owner decide how to display them. Numeric per-ounce pricing gets stored as a unit price with the unit string preserved.

Modifier groups

Sandwich shops with "Add bacon $2, avocado $3, extra cheese $1.50" require us to model these as modifiers, not as separate items. The parser does this correctly when the modifier list is at the bottom of a section with clear pricing. It's less reliable when modifiers are inline ("BLT — add avocado $3") or when the modifier prices vary per item.

What it costs

The vision call is Sonnet, not Haiku — Sonnet is the right model for this. Each menu parse costs roughly $0.02–0.08 depending on size and whether it's a PDF (text layer reduces token count). We bake a monthly quota into every paid plan: 30 scans on Essential, 150 on Pro, +1,000 with the AI Boost add-on. The counter increments before the call so a retry doesn't double-charge.

What this lets you do

The point of the parser isn't showing off vision capability — it's collapsing the onboarding step that kills most website rollouts. Photo to live menu in under a minute means owners go from signing up to a published site in one sitting, before they have time to overthink it.

Once the menu is structured data (categories, items, prices, dietary flags), everything else gets cheap: AI menu descriptions for items that don't have one, structured-data SEO so each dish shows up in search, an AI-powered menu chat widget for diners who ask "is anything gluten-free?".

If you've been putting off building your menu page because you don't want to type 40 items into a form, that's the friction we're trying to remove.

aimenuengineering

Try it yourself

Every template has a live demo with no signup. Personalize one for your own restaurant and see how it looks:

Browse 13 templates →