Skip to content
Back to portfolio
Crumbs — Diet & Symptom Tracker for Digestive Conditions
mobileflutterhealthprivacy

Crumbs — Diet & Symptom Tracker for Digestive Conditions

Overview

Crumbs is a mobile app built for people living with IBS, BAM, coeliac disease, FODMAP sensitivities, and other digestive conditions. It helps users track what they eat, log symptoms, and uncover the hidden patterns between food and flare-ups — all without sending a single byte of data off their device.

The app was born from a real gap in the market: generic food trackers don't understand digestive health, and medical apps are often clunky and clinical. Crumbs sits in the middle — purpose-built for gut health, designed to be fast to use in the moment, and smart enough to surface insights that would take weeks to spot manually.


The Problem

For millions of people with digestive conditions, identifying food triggers is a slow, frustrating process. The standard advice is to "keep a food diary" — but paper diaries are tedious, and most apps aren't built for this use case. They track calories and macros, not whether your lunchtime pasta caused bloating three hours later.

Key challenges Crumbs addresses:

  • Digestive lag makes cause-and-effect invisible. A meal might not trigger symptoms for 2–8 hours. Without tooling that accounts for this delay, patterns stay hidden.
  • Trigger foods are highly individual. There's no universal "bad food" list. What triggers one person's IBS is perfectly fine for another. Users need personalised correlation data, not generic advice.
  • Logging fatigue kills compliance. If it takes more than 30 seconds to log a meal, people stop doing it. Every tap matters.
  • Privacy is non-negotiable. Health data is deeply personal. Users shouldn't need to create accounts or trust cloud servers with their medical information.

Tech Stack

Layer Technology
Framework Flutter 3.11+ / Dart
State Management Riverpod
Database SQLite via Drift (type-safe ORM with code generation)
Charts fl_chart
Voice Input speech_to_text (native device SDK)
Monetisation Google Mobile Ads (AdMob) + RevenueCat (IAP)
Platforms iOS and Android from a single codebase

Key Features

Smart Food Logging

Users type a free-text description of what they ate, and the tag suggestion engine kicks in immediately. It uses a greedy n-gram matching algorithm against a bundled dictionary of 500–800 keyword-to-tag mappings. Tags are organised into 36 categories spanning ingredients, allergens, and preparation methods. Additional options include portion size, saved meal templates, and voice input via native speech recognition.

The Lag Timeline

The app's signature feature. A dual-track lag timeline displays foods on one track and symptoms on a parallel track, with an adjustable lag offset of 0–8 hours. Slide the offset and watch symptoms align with the meals that actually caused them.

Correlation Engine

An isolate-based correlation engine scores every food tag against symptom occurrence, using confidence tiers from "insufficient data" through to "pattern observed" at 15+ logs. It also identifies safe foods — tags with 15+ logs and a symptom follow rate below 10%.

Analytics Dashboard

Symptom frequency charts, severity trend lines, Bristol trend charts, calendar heatmaps, and a correlation dashboard ranking trigger and safe foods with confidence indicators.

Privacy by Design

All data stored in on-device SQLite — no cloud sync, no accounts, no servers, no analytics SDKs. Health data never leaves the device unless the user explicitly exports it. Full CSV, JSON, and PDF export for medical appointments.


Technical Highlights

Aspect Detail
Tag suggestion Greedy n-gram matching — fast, offline, no API dependency
Correlation scoring Background isolate computation with confidence tiers
Database 11-table schema with type-safe Drift ORM and migration support
State management 18 Riverpod providers with async database integration
Codebase 114 Dart files, 20,000+ lines of code
Offline-first 100% functional without network connectivity

Interested in a similar project?

Get in Touch