Inspiration

  • People leave hospital after gallbladder removal with "eat low fat" and little else. Then come the questions nobody answers: Why did a meal that was fine last week send me running today? How long after eating should I stay near a bathroom?

What it does

  • Meal estimates: snap or describe a meal, or scan a barcode. You get an estimate of how it's likely to sit, with plain-English reasons and the fat in grams.
  • Corrections: if it misreads the portion, the cooking method or the ingredients, you fix it and the estimate is worked out again.
  • Logging: record urgency or symptoms in three taps. The app works out the time since your last meal.
  • Patterns: how soon after eating episodes tend to come, and which meal characteristics show up before them, with counts. Nothing is shown until there's enough data.
  • Clinician summary: a one-page summary to bring to an appointment.
  • Onboarding starts from your surgery date and gives first guidance before any account.
  • Pricing: free to start, Premium with a 3-day trial. It doesn't diagnose.

How we built it

  • Stack: Laravel API with PostgreSQL, an Expo/React Native app, and RevenueCat for subscriptions on the App Store and Google Play.
  • Scoring: a vision model reads the photo; a deterministic engine scores it. Scoring never reads the clock or calls a model, so the same meal always rescores identically.
  • Spec-driven development: a written constitution, with three principles enforced by tests that fail the build:
    • a vocabulary check: never refer to a gallbladder in the present tense, never mention gallstones
    • parity with the parent's scoring engine
    • deterministic scoring
    • plus over 300 backend tests in total

Challenges we ran into

  • RevenueCat webhooks had silently never worked for 17 days. The payload was nested under event, and the server answered 204, which RevenueCat counts as success.
  • The entitlement identifier was wrong twice: first the parent's, then the display name instead of the lookup key.
  • Android testers spent the whole 14-day closed test on an older build, and Apple rejected a build because version 1.0.0 was already live.
  • Making the demo video exposed a real bug: ordinary scans weren't stored with a meal time, so episodes never linked to meals. It was fixed on the server, with no app update needed.

Accomplishments that we're proud of

  • Live on the App Store since Sep 23 with subscriptions approved. Google Play's 14-day closed test completed, and production access applied for.
  • Tester feedback shipped during the event: an honest onboarding step counter and editable names (1.0.1).
  • Patterns stated as observations with counts, never as causes, and nothing labelled "safe".

What we learned

  • Ask the people first. "Everyone's fat limit is different" changed what the app shows.
  • Check which build testers actually have.
  • A success response can hide a dead integration, so verify end to end.
  • Wording is part of the product.

What's next for GallDiet: Post-Op

  • A personal fat-limit setting. You promised this publicly, so worth including.
  • An episode list in History.
  • Google Play production.
  • A view across several days for "fat stacking".
  • Recovery-stage content and food reintroduction. The backend for these already exists.
Share this project:

Updates

Submission history