Recommendation engine · Live

Yonder.

List the dishes you eat on repeat. Get one new recipe tuned to how far you're willing to stretch — new to you, but a plausible hit.

Try it live ↗

Calibrated distance — one dial, one destination
tuning
Your routine
Spaghetti carbonara Chicken ramen Margherita pizza
1
2
3
4
5
barely a stretchthe deep end
Distance 3 · a new direction
Pad see ew

Keep the wide-noodle, saucy comfort you already love; move it to a smoky Thai stir-fry.

kept · glossy noodle comfort new · cuisine · method
Same routine, one dial. The leap size is yours to set — the engine never gambles on a miss, and never stops growing your range.
yonderrecipes.com
The live Yonder app: a routine of Spaghetti carbonara, Chicken ramen, and Margherita pizza; a 'how far from routine' distance dial set to 3; mood and get-your-recipe controls.
The live app — routine, distance dial, mood, one destination.

You list what you actually cook on repeat. It returns one new dish at the distance you choose, grounded in a 2,476-recipe corpus of tested recipes, with a short bridge explaining why the leap is worth taking. Most recipe apps optimize for fit — more of what you already eat — or bury you in options until discovery is a research project. This does neither.

2,476tested recipes grounding every pick
~1¢cost per destination served
1–5distance dial, stretch to deep end
0build step — vanilla JS, one Worker
01The problem

Bored of the rotation, but won't gamble on a miss.

Most recipe apps fail one specific person: someone who likes to cook, is tired of the same rotation, but won't risk an evening on a recipe that flops. Fit-optimizing apps show more of the same. Option-dumping apps turn dinner into research. Neither moves the person out of the rut without a gamble. Yonder is built for that person: measured novelty, not maximum choice.

02The output

One destination, not a feed.

List what you actually eat on repeat. Get back a single destination — one new dish, tuned to the distance you set:

A bridge — two or three sentences on why the leap is worth taking, anchored to what you already cook.
Kept vs. new — which axes stay familiar — flavor, method, format, texture — and which one changes.
A real recipe — from the corpus: servings, time, ingredients, steps, and the short shopping delta for what's new.
A souvenir — one technique or ingredient you carry forward to everything after.
Swaps — substitutions for anything hard to find.

React with one tap — would I make this? — and the next pick tunes to that.

03The engine

Calibrated distance, not broad fit.

The engine optimizes for calibrated distance rather than fit. The design goal is a contradiction held on purpose: never gamble on a recipe that misses, never stop growing your range. A distance dial (1–5) sets the leap size; mood and focus shape the pick without touching that distance.

Hard constraints are absolute — allergies are never served, diet is a hard filter, equipment is a can-you-cook-it gate, and the leap stays inside the meal slot. Picks come from the 2,476-recipe corpus; the model serves an improvised sketch only when nothing fits the calibrated distance, and labels it as one. A guess never masquerades as a tested recipe.

04The build

One page, one Worker, about a cent a pick.

It deploys into the edge and stays cheap to run:

Frontend
Vanilla JavaScript, zero build. One page.
Backend
A single Cloudflare Worker; the API key stays server-side.
Model
Anthropic claude-sonnet-4-6, one canonical system prompt.
Data
Cloudflare KV for reactions, D1 (SQLite) for accounts.
Cost
About a cent per destination.

The whole thing runs serverless on Cloudflare. No container fleet to babysit — the deployment judgment that matters when something has to run unattended.

See it live ↗

← All work