More Than Salad
What a vegan can actually order at whatever restaurant you're standing in front of.
What It Does
More Than Salad used to be a curated, user-sourced database of vegetarian and vegan restaurants. Now it's becoming a source of data on specific plant-based and vegan protein options anywhere they exist. I've found myself many times traveling in the sticks with what I thought were no options but I have found surprising options in surprising places. The idea is to use public datasets and clever heuristic and AI analysis to build a comprehensive, non-curated database which avoids staleness and dependence on users for information and updates. I kind of want to make the data available to other restaurant apps if anyone ends up being interesting.
How it works
There is a front-end native SwiftUI app but the magic happens at the data curation layer on the backend.
Several publicly accessible databases are mashed together, a heuristic non-AI layer is applied including menu searching, OCR of PDFs and images and more and then finally for stubborn stragglers AI is used to figure out plant-based protein availability. I hope to make this an API down the road for third-party access and data sharing.
Built with
- Built with: Python/FastAPI backend over async SQLAlchemy + Postgres, built around a deterministic-first analysis pipeline — an escalating fetcher (httpx → curl_cffi TLS impersonation → headless Playwright) pulls restaurant menus, a non-AI pass greps/OCRs them for vegan protein evidence, and Claude Haiku tool-use runs only where that stalls; nearby search is served from a canonical FSQ/Overture/OSM dining dataset built in DuckDB and loaded into Postgres, with a SwiftUI/iOS client and a Jinja-rendered admin UI.
- Packaged with Docker Compose (app + Postgres) on a VPS behind Caddy, Alembic migrations, a daily AI cost cap, and a standalone crawl/analysis experiment harness in for coverage audits and re-crawls.