Inspiration

The same meal from the same restaurant can cost a different amount on Uber Eats, DoorDash, and SkipTheDishes. The menu price is marked up differently on each app, and the delivery fee, service fee, and tax are added on top. You only see the real total at checkout, after you've built the whole cart, so almost nobody checks all three. FairPlate does that check for you.

What it does

FairPlate shows the real total for each app side by side: menu price, delivery fee, service fee and 13% HST.

  • Find a place. Browse 2,300+ real restaurants and cafés in downtown Toronto, in a list or on a 3D map. Filter by cuisine, open now, or places that already have real prices.
  • Capture real prices. The FairPlate browser extension saves the menu prices and checkout fees you see on Uber Eats, DoorDash and Skip as you browse them.
  • Compare. Each restaurant page lines up the three apps and marks the cheapest one. If the carts weren't the same, it says so instead of pretending the comparison is fair.

Nothing is estimated or made up. A place with no captured prices says "No price yet".

It works on desktop and phone, in light and dark mode.

How we built it

I'm a solo builder. The code was written with AI assistance (Claude). I directed the product and design, made the calls on what to build, and tested it.

  • Site: plain HTML, CSS and JavaScript with no build step, hosted on GitHub Pages.
  • Places: OpenStreetMap data, refreshed live through the Overpass API. Addresses use Nominatim, and opening hours are read from OpenStreetMap's hours tag.
  • Map: MapLibre GL with OpenFreeMap tiles, restyled with 3D buildings, coloured parks, water and main roads. It only loads when you open Map view.
  • Extension: Manifest V3 with one permission (storage). It makes no network requests of its own. It reads only the menu and the order-summary box, and passes what it saved to the FairPlate site.
  • Design: I studied how real delivery and fintech apps lay out their pages, then cut the text down over several rounds.
  • Testing: Unit tests for the extension's page reading and restaurant matching, plus automated browser checks of every page on desktop and phone.

Challenges we ran into

  • There is no price API. None of the three apps publish prices, and they block automated browsers. The answer was an extension that reads the pages you are already looking at in your own browser.
  • Matching a store to a real place. A DoorDash page and a map entry spell names and addresses differently, so captures are matched by name, street, and distance.
  • Checkout pages don't name the restaurant. The extension ties a checkout to a store page you opened recently, and saves it as "Store not known" when it can't be sure.
  • Staying honest. Early design screens used sample numbers. Every one had to be replaced with real data or a clear "not checked yet" state.
  • The 3D map. Tall buildings hid street names, and the dark map drew labels underneath the towers. Both needed custom styling.

Accomplishments that we're proud of

  • It's real, not a mock-up: real restaurants, real captured prices, and a working extension you can install today.
  • No invented prices, ratings or reviews anywhere on the site.
  • The extension asks for one permission and keeps your data in your own browser.
  • A 3D city map that works on a phone.
  • Light and dark mode that both look finished.

What we learned

  • Reading a page the user already has open is far more reliable than trying to scrape it.
  • Showing "No price yet" builds more trust than filling the gap with a guess.
  • Matching messy real-world data takes more work than the comparison itself.
  • Testing the live site catches problems that never show up on your own computer.

What's next for FairPlate

  • A shared price database, so one person's capture helps everyone looking at that restaurant.
  • Chrome Web Store listing, so installing takes one click.
  • Live testing on Uber Eats. DoorDash and Skip are tested against real pages; Uber Eats still needs it.
  • Price history and alerts for the places you order from most.
  • Membership maths: is DashPass or Uber One worth it for how you order?
  • More cities beyond downtown Toronto.

Built With

Share this project:

Updates

Submission history