About Calories

Inspiration

Food tracking is useful, but most nutrition apps make logging feel like work. Users often need to search a database, compare similar foods, adjust serving sizes, and confirm several screens before recording one meal. That friction makes consistency difficult.

We built Calories around a simpler idea: recording a meal should take only a few seconds. Say what you ate or take a photo, and let the app handle the rest.

Calories is an Australia-first, privacy-conscious iPhone nutrition companion designed around one-turn Siri logging, on-device food photo analysis, and a calm visual summary of daily progress.

What it does

Users can record food in two primary ways:

  • Voice: Say “Use Calories to log one banana,” and Siri records the meal in a single interaction.
  • Photo: Take a picture or select one from the photo library. Calories identifies visible food components, estimates calories and protein, and updates the original meal record.

The home screen shows:

  • Calories and protein consumed
  • Daily goals and remaining amounts
  • Meals logged today
  • Pending photo records that have not yet been counted
  • Transparent food cut-outs generated from meal photos

The My section includes weekly and monthly nutrition charts, daily history, meal details, and an adjustable calorie goal.

How we built it

Calories is a native iOS app built with:

  • SwiftUI for the interface and interactions
  • App Intents and App Shortcuts for Siri integration
  • SwiftData for local persistence and recovery
  • Apple Foundation Models for on-device structured food-photo analysis
  • Vision for foreground subject extraction and transparent meal thumbnails
  • AVFoundation and PhotosUI for camera and photo-library input
  • Swift Charts for weekly and monthly nutrition trends
  • A reusable Swift package, IntakeCore, for food parsing, nutrition resolution, contracts, and calculation

We designed the data flow so that only successfully saved meals contribute to the daily total:

[

\text{Daily calories}

\sum_{\text{entry status}=\text{logged}} \text{kcal} ]

Pending, failed, and deleted records are excluded. Missing nutrition values remain unknown rather than being incorrectly replaced with zero.

Every request receives stable identifiers, making retries idempotent and preventing duplicate meals. Photo analysis also writes back to the original pending record instead of creating a second entry.

Challenges we faced

Making Siri reliable

Generic phrases such as “log a banana” could be interpreted as web searches or unrelated system requests. Renaming the app also required rebuilding Siri metadata and testing multiple invocation patterns. We learned to design phrases that clearly identify both the action and the app while preserving a natural one-turn experience.

Handling model availability

Apple Intelligence models may still be downloading or preparing when the app first runs. We created recoverable photo jobs, persistent local image storage, retry support, and manual entry as a fallback so that a failed estimate never loses the user’s photo or creates an incorrect nutrition record.

Turning a photo into trustworthy data

A meal image can contain several ingredients with uncertain portions. We used structured on-device model output, validation rules, reviewed nutrition defaults, and explicit provenance for every estimate. Broad or unreliable matches remain pending instead of silently producing false precision.

Coordinating gestures and dense interfaces

Meal cards support tapping to edit and swiping to delete inside a vertically scrolling dashboard. These gestures initially competed with each other. We added directional locking so vertical and diagonal movements remain smooth page scrolling, while deliberate horizontal swipes reveal Delete.

What we learned

We learned that the most important part of an AI nutrition app is not simply generating an estimate—it is managing uncertainty honestly.

A useful experience requires:

  • Clear separation between estimated, reviewed, manual, and pending data
  • Reliable recovery when AI is unavailable
  • Stable identifiers across retries
  • Privacy-preserving on-device processing
  • An interface that makes the fastest path the easiest path

We also learned that voice and camera input work best as complementary tools. Siri is ideal for familiar foods, while the camera provides context for mixed meals that are difficult to describe.

What makes Calories different

Calories is not another searchable food database with AI added on top. It is designed around low-friction capture:

  1. Speak or take a photo.
  2. Let the device interpret the meal.
  3. Review progress without navigating through forms.

By combining one-turn Siri logging, on-device photo understanding, transparent subject extraction, recoverable workflows, and strict data integrity, Calories makes nutrition tracking feel less like administration and more like a natural part of everyday life.

Built With

Share this project:

Updates

Submission history