Project
Work in progressdecidemy.food
One button picks your next meal from real restaurants near you, with the reasons why. A real decision engine behind a slot machine, still waiting on official DoorDash API access before it is finished.
Overview
Deciding where to eat is a solved problem for nobody. decidemy.food takes your location and gives you one dish at one place, with the reasons it picked that one, and a path to ordering it. You can customize cuisine, cravings, budget, dietary needs, distance, and mood, or you can customize nothing and just ring the bell.
It is marked as work in progress on purpose. The core is done and deployed, but the DoorDash integration is built against published documentation rather than a live account, and that gap has to close before I would call it finished.
The decision engine
The interesting part is not the UI, it is that this is not names in a hat.
- Hard filters run first: open now, verified dietary needs, cuisine includes and excludes, budget, radius, rating floor, delivery time, avoid terms, locks. Each step tracks what it removed, so an empty result can tell you which constraint eliminated everything and suggest a fix, instead of shrugging.
- Soft scoring ranks what survives: rating, popularity, distance decay, price fit, meal time suitability read off the clock, craving matches, and a spirit setting that shifts how far the result strays from the familiar.
- Seeded sampling picks from the top, temperature controlled, so results stay surprising without being stupid. The same seed always produces the same result, which is what makes share links work. Recent picks are penalized so a reroll actually feels different.
- Explanations ride along. Every recommendation carries why it won.
Game mode
There is a slot machine and a roulette wheel. Both are theater for the same engine, and both obey one rule: the reels spin blind until the real decision comes back, then decelerate onto the actual result. Nothing on screen is predetermined and nothing is decided by the animation. No wagering, no prizes, no odds.
Sound is synthesized at runtime with WebAudio. There are no audio files in the project. It is muted by default and every cue has a visual counterpart.
Both game surfaces are lazy loaded, so people who just want the button never download them.
Data sources, labeled
The provider chain tries the DoorDash CLI first when it is configured, falls back to OpenStreetMap for real nearby places, and falls back again to a clearly badged demo dataset. Every result on screen says which source produced it. Where OpenStreetMap has no ratings or menus, those rows simply do not render. Nothing is invented to fill them, and the demo restaurants are labeled as fictional.
The adapter and its bridge are read only by construction. Only discovery commands are permitted. Cart, checkout, and payment commands are refused at both layers, so the app cannot spend money even if something goes wrong. Ordering hands off to the browser.
What is left
- Live verification of the DoorDash integration against an approved account. The beta is waitlist gated and the binary is macOS only, so the response mapping is defensive and logged but unproven.
- Real user testing beyond me and a handful of friends.
- Shared rate limiting and caching, since the current in-memory versions are per instance.
Independent project. Not affiliated with, endorsed by, or sponsored by DoorDash. Map data from OpenStreetMap contributors.