Case study — Flourish AI · Digestive health
Log the meal. Flora does the rest.
Flourish AI is a US health app for people living with a sensitive gut — IBS, IBD, and reflux. You log a meal by photo, by voice, or by typing a line. The app names the dishes, estimates the nutrition, and scores the meal from 0 to 10 against your own history. Script Lanes has built it from scratch since early 2025, on iOS and Android.
Flourish AI
flourishAI labs, Inc. · Digestive health
Scope
Product build · iOS & Android
Backend · Admin
In production
Since 2025
~4,000 commits and counting
Stack
TypeScript · React Native
Node · Postgres · Prisma
LangChain · OpenAI · Gemini
Pinecone · AWS
Market
United States
Direct to consumer
The brief
Build a digestive health app from the first commit — and keep shipping it.
flourishAI labs came to us with a product idea and an empty repository. The brief was one loop, done well: log a meal, see what may be in it, and watch the pattern build over weeks. The companion in the app is called Flora.
Script Lanes wrote the first commit in February 2025 and has shipped every part of it since — the iOS and Android app, the API, the admin console, and the knowledge base behind the score. Around 4,000 commits later, across five repositories, we are still shipping.
The problem
People with a sensitive gut spend years guessing.
A flare-up arrives hours after the meal that may have caused it. Was it the garlic, the cream, the late dinner, or none of the three? The usual advice is to keep a food diary. Diaries are homework — typing ingredients into a form three times a day — and most people stop by the second week.
Flourish takes the typing away. A photo, a voice note, or one line of text is enough, and everything after that is the app's job. Weeks of logs turn into evidence a person can actually use. The app is careful about what that means: it finds patterns between foods and symptoms, and patterns are not a diagnosis. Flourish is not a medical device, and it never pretends to be one.
The build
Five repositories. One health record.
The app, the API, the admin console, and the knowledge base are separate products with separate release cycles, and every one of them reads the same Prisma schema — 92 models, 128 migrations. One record of the user's meals, symptoms, and scores. Nothing about a person lives in two places.
Mobile app
One bare React Native codebase for iOS and Android — 84 screens covering meals, symptoms, check-ins, chat, and reports.
Flora chat engine
One chat surface, 19 intent-routed modes. Answers stream over SSE, and Flora can call the app's own API mid-conversation.
Meal pipeline
Photo, voice, or text in. Dishes, ingredients, a nutrition estimate, and a Trigger Score out — all in the background.
Insight reports
Weekly AI reports that connect what a person ate to what they felt, drawn from their own logs.
Admin console
Next.js. Food taxonomy, users, forced-update gating, and a live prompt editor for every Flora mode.
Knowledge base
A retrieval service: clinical research embedded with OpenAI and stored in Pinecone, ready to ground a score.
Three ways in, one pipeline.
Point the camera at the plate, say what you ate, or type a line at midnight — photos come in through Vision Camera, voice through Whisper transcription. The app gets a meal back within a moment and polls for the rest, while identification, nutrition, and scoring run in the background. Nobody sits watching a spinner think.
A score from 0 to 10, and the reasons behind it.
Every meal gets a personal Trigger Score — 0 to 3 low, 4 to 6 moderate, 7 to 10 high — and so does each dish and each ingredient inside it, weighed against that person's own health profile. The methodology is published in the open at tryflourish.ai/evidence, and the app links to it. A number the user can argue with is worth more than one they have to trust.
The score stands on research, not on a hunch.
A separate service ingests research literature, turns it into OpenAI embeddings, and stores it in Pinecone. 192 clinical research entries are in there today, and the scoring pipeline retrieves from them before it decides anything.
Prompts change without a deploy.
Flora's 19 modes are prompts in the database, edited from the admin console, with each model bound to its prompt at runtime — LangChain over OpenAI and Google Gemini. The team can rewrite how Flora reviews symptoms on a Tuesday afternoon and see it live. Every run is traced in LangSmith, across seven named projects, so a bad answer can be read back line by line.
Reliability
Two servers, thirteen jobs, and nothing runs twice.
A health app is trusted in the moment it is inconvenient — dinner logged in a restaurant, on a weak signal, at the end of a bad day. Production runs on two EC2 servers behind a load balancer, and the scheduled work is written so that a second server never doubles it.
The meal pipeline heals itself.
Identification, nutrition, and scoring each run as their own background step, and any step can fail. A job runs every minute, finds meals stuck mid-pipeline, and pushes them along. A user's lunch finishes scoring whether or not anyone is watching.
One lock, one leader.
All 13 scheduled jobs take a Postgres-backed lock before they start, so only one server ever wins a given run. No duplicate reports, no duplicate notifications, no clever coordination service to keep alive.
Old app versions get told.
The admin console sets a minimum version per platform. An app below it stops and deep-links straight to the right store — App Store or Play Store — so a breaking API change never leaves someone stranded on last quarter's build.
Boring, well-trodden, in production.
TypeScript · React Native · Node · Express · Postgres · Prisma · Next.js · LangChain · OpenAI · Google Gemini · Pinecone · LangSmith · AWS. No tools picked because they look good in a tweet.
What it does, every day
Built from nothing in early 2025. Still shipping every month.
From the first commit to the app in the stores today — the same team, the same codebase, growing month after month. That is the result we want to be measured by.
Commits across five repositories
Kinds of health data, one schema
Chat modes behind one Flora
Scheduled jobs, none run twice
Want yours shipped like this?
Tell us what you have in mind. Within 48 hours you'll hear back with an honest plan, clear pricing, and friendly, straight answers.
Start a projectStart a project
