Mealshark: Fixing MealPal's UX (and its math) with a Chrome extension

Mealshark is an unofficial Chrome extension for MealPal that finds the new meals and best deals on the platform. It’s open source and written entirely with AI.

Tiny pins and mental math

I’ve used MealPal on and off since 2018. I love the platform, but I’ve spent far too many hours of my life clicking tiny pins on the mobile app’s map looking for new meals, and the credit system makes it hard to understand how much I’m really paying for a meal - and therefore I’m doing arithmetic to figure out whether it’s a good deal. I decided I’d build a Chrome extension to stop wasting my time these ways, and Mealshark was born.

Meal prices in dollars and the new-meals filter
Meal prices in dollars and the new-meals filter

Mealshark lets me instantly find the best deals on the platform as well as new meals to try. It does all this without sending any new requests on the user’s behalf - it just introspects the normal API responses the user gets when visiting the MealPal web app. All the information surfaced in Mealshark is already sent to the user’s browser when they’re viewing the app; the extension just makes it (much) faster to find what I’m looking for and understand its price.

And speaking of math: MealPal’s discount math is not mathing

I’d never really questioned the discounts listed in the MealPal app prior to building Mealshark, but when I saw the dollar prices next to MealPal’s claimed discounts, something stuck out to me - for a $14.14 salad costing $9.28, MealPal reported that I’d get a 29% discount - but the correct number would be 34%.

Mealshark corrects discounts in the MealPal UI
Mealshark corrects discounts in the MealPal UI

The likely explanation is that the app is inadvertently comparing pre- and post-tax prices. The $14.14 price is pre-tax per the restaurant’s menu, and my credit cost of $1.16 is consistent with the pre-tax price of my credits ($139 for 120 credits, $151.34 with tax), so these are the right numbers to compare. But if you apply New York’s 8.875% sales tax to the credit price, you get an in-app price of $10.10 for the salad - and $10.10 / $14.14 gives the 29% number. I also checked whether MealPal might be using the credit price from the lower-tier plan instead ($89 for 70 credits, or $1.27 per credit), but the numbers ruled that out; only the tax explanation fits all the meals I tested. Comparing a post-tax price to a pre-tax one is, of course, nonsense.

I’d be remiss if I failed to note that this error is actually in the user’s favor (i.e., the true discounts are better than what’s showing in the app and web experience). Still, in the interest of accuracy and straightforwardness, Mealshark corrects the discounts.

AI + unofficial extensions: 👯‍♀️

In building this out, I discovered that AI-assisted development is a perfect match for writing unofficial extensions, for several reasons:

  • No domain knowledge about writing Chrome extensions is required. I don’t know how to write them, and being real here, I am too lazy to learn.
  • In the past, when some generous dev took the time to write, share, and publish an extension like this, the platform being extended would inevitably get updates. These updates would break the extension’s functionality, and often the original maintainer wouldn’t have the cycles, or continued interest, to fix it. If and when that happens to Mealshark, Claude or Codex can fix up the extension code in a couple minutes. I’ll try to maintain this extension, but if I’m too busy, any user could fix the issue for themselves by cloning the repo and loading the fixed-up extension into their Chrome with “Load Unpacked”.
  • A particularly straightforward and effective implementation loop for browser extensions is achievable by setting up an MCP server for the browser in question, and asking the agent to leverage the MCP server to iterate while developing the feature you want. Playwright has worked great for me.

I’d like to see more software like Mealshark in the world, and I hope this project can inspire others interested in making web services more useful to try their hand at building extensions.

Ethical notes

  • Mealshark is intended solely to be helpful to the user.
  • Mealshark doesn’t store any user data or send it anywhere.
  • Mealshark was built with the bare minimum permissions.
  • I hope that this software will be allowed to exist.