Built a calorie tracker where you just photograph the meal — plus an agent that blocks meals when your week is trending badly
Demo above is the real app, not a mockup.
The idea: every tracker I tried wanted me to search a database, guess a portion, and log each ingredient. NutriSnap takes one photo, identifies each item separately with its own calorie/macro estimate, and shows totals, a health score and a confidence rating — then lets me correct servings before anything is committed. The model proposes, I decide.
The part I actually enjoyed building is the Wellness Agent. It treats the app's own features as callable tools and runs a Reason → Act → Observe loop over your eating history: it can plan, approve, warn, or outright block a meal, and generates a grocery list for the gaps it finds. Reproducible from the demo suite — burger against a declining week → BLOCK, salad → APPROVE, non-food image → BLOCK via guardrail.
Stack: Next.js, Gemini vision, on-device storage (works offline). The agent ships twice on purpose — a reference Python implementation and a TypeScript port so the deployed app runs it client-side with no backend.
Try it: https://nutrisnap-mocha-psi.vercel.app — mobile-first, no signup and no API key, tap a sample meal to see the full analysis.
Agent: https://nutrisnap-mocha-psi.vercel.app/agent
Code: https://github.com/zanni098/nutrisnap
Honest caveat: portion estimation from a single photo is inherently approximate — that's why confidence is shown and servings are editable. Happy to hear where it gets things wrong.