← Back to automations

Restaurant Reviews → Menu Builder

Five stages turn a restaurant's name and menu URL into a finished, photo-illustrated menu. Every stage below shows real data from a live run on The Old Mohawk in Columbus, OH.

01

Menu Extractor

Reads the restaurant's online menu page and turns the messy HTML into clean, structured text — every section, item, and price.

Input — menu URL

oldmohawktavern.com/our-menu/
<div class="menu-item">
  Hummus Plate ... 12.95
</div>
<div class="menu-item"> ...

Workflow

Fetches the live menu page HTML
gpt-oss-120b extracts every dish and price into structured markdown
Groups items under their menu sections

Output — menu.md · 8 sections · 63 items

Appetizers
Hummus Plate$12.95
Nacho Grande$12.25
Spinach and Artichoke Dip$11.50
Chicken Strips$10.95
Crab Tater Tots$8.99
Soups and Salads
Mohawk Turtle Soup$9.50
Mohawk House Salad$7.99
California Salad$11.95
French Onion Soup$7.99
Caesar Salad$9.99
Quesadillas
Cheese Quesadilla$6.95
Grilled Chicken Quesadilla$11.25
Santa Fe Beef Quesadilla$11.95
Chicken Salad Quesadilla$11.50
Spinach + Mushroom Quesadilla$11.25
Entrées
Smoked Chicken Ravioli$12.95
Veggie Paella$11.95
Crustless Pizza$13.95
Fish + Chips$18.75
Baked Mac 'n Cheese$9.99
02

Photo Scraper

Pulls every customer and owner photo from the restaurant's Google Maps listing — no paid API. A headless browser opens the Photos panel and scrolls each tab to exhaustion.

Input

The Old Mohawk
819 Mohawk St, Columbus OH
Google Maps

Workflow

Playwright launches headless Chromium
Opens the restaurant Photos panel on Google Maps
Detects and iterates every photo filter tab
Scrolls each tab to exhaustion, collecting image URLs
Deduplicates and downloads all images

Output — 417 images scraped (16 shown)

scraped 0010
scraped 0011
scraped 0012
scraped 0013
scraped 0017
scraped 0019
scraped 0027
scraped 0035
scraped 0040
scraped 0047
scraped 0049
scraped 0056
scraped 0058
scraped 0060
scraped 0068
scraped 0073
03

Classifier

Most scraped photos are storefronts, menus, or crowded tables. A vision model labels every image and keeps only clean single-dish food shots — then a human gives the final yes/no in a review widget.

Input — 417 scraped photos

Workflow

perceptron-mk1 vision model labels each photo (food, storefront, menu, people…)
Keeps only primary_food_one_dish images
gpt-oss-120b matches each dish to a menu item
Human reviewer confirms each keep/discard in a review widget

Output — single-dish food shots, human-approved

kept
kept
kept
kept
kept
kept
kept
kept
04

Retoucher

Each approved plate goes through an image model that cleans up the shot — removes silverware and clutter, fixes lighting, and crops so the food fills the frame. About $0.04 per image.

Input — approved single-dish photos

before
before
before
before
before
before
before
before

Workflow

Sends each single-dish photo to bytedance-seed/seedream-4.5
Prompt: clean restaurant-quality shot, remove silverware, food fills the frame
Saves the retouched plate for the menu builder

Output — retouched plates

after
after
after
after
after
after
after
after
05

Menu Builder

The final stage joins the structured menu with the retouched photos — matching each dish image to the right menu item — and renders a clean, photo-illustrated menu.

Input

menu.md
8 sections · 63 items
retouched photos

Workflow

Matches each retouched photo to its best-fit menu item
Places photos alongside the matching dish
Renders a clean, photo-illustrated HTML menu

Output — finished menu (live HTML the pipeline produced)

Scaled to fit — open the full menu.

← Back to automations