Inspiration

The idea for Nomi came from a very real, familiar scene. It is 11 PM, you are standing in the kitchen staring at the back of a salad dressing bottle or a skincare tube, frantically searching online: "Can I have this at 12 weeks?"

The internet is notoriously awful at answering that question. You usually end up in a rabbit hole of horror stories, terrifying forum threads, and flashing red warning banners that send your stress levels through the roof. We built Nomi to do the exact opposite. We wanted an app that takes a breath with you, gives you instant clarity based on your exact week or stage, and swaps the panic for genuine peace of mind.


What We Learned

  • Nobody wants an account when they are stressed: Asking an anxious mom to create an account or verify an email kills the experience. Keeping Nomi completely sign-up free with all data saved locally on device built immediate trust.
  • Empathy is a feature, not just copywriting: Adding our "I already had some" button taught us a big lesson. Software should not just spit out raw data; it needs to handle real human emotion. Helping someone realize that a single bite of feta is not going to ruin everything was the single most appreciated part of the app.
  • How people actually buy peace of mind: Integrating RevenueCat showed us how critical timing is for monetization. Giving users three free scans lets them feel that relief firsthand. Once they experience how much easier grocery shopping feels, upgrading to our Nomi Bloom subscription feels like a totally natural decision.

How We Built It

  • Frontend: Built natively in SwiftUI for iOS 18. We wanted the interface to feel warm, calm, and tactile, completely avoiding a cold, clinical hospital aesthetic.
  • Scanning & OCR: We used Apple's VisionKit and Vision framework to grab text off wrinkled snack bags, curved lotion bottles, and dimly lit restaurant menus, alongside native barcode scanning.
  • The Safety Engine: We mapped ingredients against guidelines from ACOG, the FDA, and the CDC. To make the rating easy to digest, we created a contextual Care Score out of 100 that adjusts depending on where you are in your journey:

$$ \text{Care Score} = \max\left(0, 100 - \sum_{i=1}^{n} w_i \cdot \gamma_i(s)\right) $$

In this equation, $n$ is the number of flagged ingredients, $w_i$ represents the baseline risk weight, and $\gamma_i(s)$ is a stage multiplier tuned to whether you are in your first trimester, third trimester, breastfeeding, or introducing baby solids.

  • RevenueCat Integration: We hooked up RevenueCat to manage our Nomi Bloom premium tiers, offering monthly ($8.99), yearly ($49.99), and lifetime ($79.99) options. RevenueCat handled the entitlements, free trial logic, and receipt checks seamlessly, saving us from having to stand up an expensive backend during a hackathon sprint.

Challenges We Faced

  • Real world packaging is messy: Lab testing clean text is easy; scanning a shiny, crinkled bag of chips under warm kitchen lighting is another story. Normalizing OCR text, catching typos, and mapping chemical aliases took days of regex tweaking.
  • Getting the tone right: It is surprisingly tricky to tell someone "you should probably skip this" without terrifying them. We rewrote our result cards repeatedly until they felt honest and informative rather than alarmist.
  • Racing the App Store clock: Shipping a health-related app during a hackathon sprint meant being extra diligent with non-medical disclaimers, clear privacy policies, and getting our in-app purchases approved smoothly through App Store review.

Built With

  • apple-vision
  • ios
  • revenuecat
  • storekit
  • swift
  • swiftui
  • visionkit
Share this project:

Updates

Submission history