Inspiration

Cooking for my family often meant tweaking recipes—doubling a cake for a party or halving soup for a quiet night. I hated messy math errors (too much salt!) and inconsistent cook times. I wanted a tool that didn’t just multiply ingredients, but understood cooking rules—like capping baking soda or rounding eggs. That’s how RecipeScaler was born: for home cooks who want precision, not guesswork.

What it does

RecipeScaler adjusts recipe servings with AI-powered logic: it parses messy ingredient lists (1/2 cup flour, 200g chicken), applies non-linear rules (75% scaling for spices!), converts units (imperial ↔ metric), and suggests cook time/temp tweaks. It saves history, offers smart substitutions, and works on any device—no login needed.

How we built it

I started with core math: Scaled Amount = Original Amount × (Target Servings ÷ Original Servings), then layered in cooking rules (yeast caps, egg rounding). I used React for the UI, MathJS for calculations, and LocalStorage to save history. I built custom parsing logic to recognize fractions, ranges, and preparation notes (e.g., "flour (sifted)") and added a confidence score for parsed ingredients.

Challenges we ran into

The biggest hurdle was ingredient parsing—recipes use so many formats (3/4 tsp, 2 1/3 cups, 1-2 oz)! I had to build flexible logic to handle variations, plus edge cases (empty inputs, 10x scaling). Another challenge: balancing precision with practicality (rounding 1.03 cups to 1 cup without losing accuracy).

Accomplishments that we're proud of

RecipeScaler parses 90% of common ingredient formats accurately, applies cooking-specific scaling rules (no more over-spiced dishes!), and works seamlessly across mobile/desktop. Users love the smart suggestions—like substituting eggs or adjusting pan sizes—and the one-click copy/export features.

What we learned

I deepened my understanding of user-centric design (home cooks hate complex UIs!) and edge-case handling in math logic. I also learned to prioritize real-world cooking rules over strict linear scaling—recipes aren’t just numbers, they’re practice.

What's next for this project

I want to add support for regional ingredient names (e.g., "cilantro" vs "coriander"), integrate a small recipe library for quick access, and add a print feature. Long-term, I’ll test user feedback to refine non-linear rules (e.g., adjusting yeast scaling for high-altitude cooking) and make the parsing even more robust for global recipes.

Built With

  • chartjs
  • localstorage
  • mathjs
  • tailwindcss
Share this project:

Updates

Submission history