Map your macros to the menu

Our inspiration

One of our team members works as an online fitness coach and has noticed that often when people are craving fast food, their macros just go out the window. But it doesnt have to be this way. You can eat fast food and still hit your macros. That's where our project MAP (Macro Aware Picks) comes in. Right now, every fast food place's nutrition info is in some PDF buried somewhere, and doing the math by hand across a few menus just to find something that fits is annoying. So we built something where you put in your numbers and it tells you what you should order

What it does

You give Macro Aware Picks a calorie and protein target and (optionally) pick a restaurant, and it ranks real menu items by how well they match. You can also filter by:

  • price
  • category
  • dietary tags
  • search by name

plus quick filters like "High Protein" or "Under 400 kcal." It doesn't just show single items, it'll also suggest combos (like a burger + a side) when pairing two things gets you closer to your target than any one thing on its own

How we built it

Flask API on the backend, sitting on a JSON menu dataset with calories, protein, carbs, fat, price, and tags per item. The matching logic scores every item on how close it gets to your macros, blends that with a text-relevance score if you searched for something, and sorts by that combined score. Bundles work the same way, we generate combos of 2-3 items per restaurant, score them like regular items, then trim it down so you're not just seeing five versions of the same pairing. The frontend's just HTML/CSS/vanilla JS, no framework. One form that expands into an "Advanced Search" section for people who want to dig into ranges and dietary filters.

Challenges

Getting the ranking to feel right took way more tweaking than we expected because a mediocre match could beat a great one just because of how sorting worked, so we ended up building a tiered relevance cutoff instead

What we learned

Scoring systems can be really finicky, it can seem correct when you're writing it but then the output just feels so wrong

What's next

  • Adding more of the most popular restaurants
  • Favouriting and comparing meal options
  • Scraping nutrition information in real time
Share this project:

Updates

Submission history