AI food tracking across iOS and Android

aical is a calorie counter and food diary that uses AI to interpret meal descriptions and photos. It combines those estimates with nutrition targets, meal history and weekly planning. We built the native iOS and Android apps around a shared backend, focusing on simpler food logging and consistent records across both platforms.

View on the App Store
aical / FOOD DIARYA MEAL IN EVERYDAY WORDSChicken soup andtwo slices of breadNUTRITION ESTIMATESCaloriesProteinCarbsFatPERSONAL TARGETSCalories + macrosMEAL HISTORYA record over timeWEEKLY PLANFamiliar food
NativeiOS and Android apps
AImeal analysis
Local-firstfood diary
What we built

From food logging to meal planning

01

AI meal logging

Meal descriptions and photos become estimates of calories, protein, carbohydrates and fat. A shared AI service interprets the food and returns a consistent result to both apps, with follow-up questions when portion information is missing. This supports everyday descriptions while giving the diary structured nutrition data to work with.

Natural languageMeal photosShared AI service
02

Different inputs, one diary

Packaged food, home cooking and repeat meals call for different ways of logging. We combined AI analysis with barcode lookup, manual entry and saved meals. Each method contributes to the same food diary and daily totals, so the product can accommodate different eating routines without maintaining separate records for each input method.

Barcode lookupManual entrySaved meals
03

Personal targets and progress

Daily calorie and macro targets put individual meals in context. aical calculates these from a person's profile, activity level and goal, then tracks intake and weight history over time. We linked each meal to the daily targets, with totals recalculated as portions are adjusted or new food is logged.

Nutrition targetsWeight historyConsistent calculations
04

Meal planning from diary history

The recorded meals also provide a basis for planning ahead. aical combines eating history with nutrition targets to suggest meals for the coming week. Planned meals remain separate from recorded intake, so a suggestion does not count as food already eaten. This connects planning and tracking while preserving the meaning of the diary.

Weekly planningEating historyMeal suggestions
05

Local records and health integration

The food diary is stored on the device, with optional connections to Apple Health and Android Health Connect for nutrition and weight data. Health synchronization is separate from saving a meal, so the core diary does not depend on that connection. AI analysis runs through the backend; the apps retain the resulting records locally.

Local storageApple HealthHealth Connect
06

One product across two native apps

We used SwiftUI for iOS and Kotlin with Jetpack Compose for Android. Each app works with its platform's camera, speech and health services, while a shared backend supports meal analysis and planning. Common data formats and comparable tests keep the core behavior aligned across the two implementations.

SwiftUIJetpack ComposeShared backend
Under the hood

What powers it

Native mobile apps

SwiftUI and Jetpack Compose provide the iOS and Android foundations. Native integrations support camera capture, dictation and health data within each platform's permissions model.

Shared AI backend

A Ruby on Rails API connects both apps to meal analysis and planning services. Requests run asynchronously, with recovery handling so an interrupted connection does not require starting the whole flow again.

Local data storage

SwiftData on iOS and Room on Android store meals, profiles and plans. Tests cover calculations and data migrations to help preserve the record as the applications evolve.

Process
Calculation unit testsRecovery regression testsMigration tests
Technologies
SwiftUISwiftDataKotlinJetpack ComposeRoomRuby on RailsHealthKitHealth Connect
Takeaways

What we learned

01

Simplify the repeated task

Food logging is the action the product asks people to repeat. Supporting descriptions, photos, barcodes and familiar meals reduces the work around that action. A common diary model then connects those inputs to history, targets and planning.

02

Give AI a defined role

AI interprets food; application logic handles the calculations around it. Keeping those responsibilities separate made portions, targets and daily totals easier to test, while leaving room to improve meal analysis independently.

03

Keep the record consistent

The same meal should retain its meaning after a portion edit, an app restart or a change of device time zone. Regression tests cover those everyday changes alongside the main logging flow, helping both native apps maintain a consistent food history.

Let's talk about your project