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.

Amit Yedurkar
Amit YedurkarProduct & delivery
Kedar Pingle
Kedar PingleMobile
Abhishek Lokhande
Abhishek LokhandeBackend
Nilesh Jagdale
Nilesh JagdaleMobile
Dnyaneshwar Fulari
Dnyaneshwar FulariAdmin
Screens in the app 0
Kinds of health data managed 0
Modes behind the Flora chat 0
Bowls of salad, grains, berries, beans, and fresh vegetables laid out on a sunlit wooden table

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

01

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.

02

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.

03

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.

One API · 92 models 374 endpoints 13 schedulers

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.

tryflourish.ai
The Flourish AI homepage: a headline about finding out what in your meal may be triggering symptoms, next to three phone screens
The live site — what Flourish promises a first-time visitor
A trigger summary in the Flourish app: a bowl of ramen scored 6, moderate, with the likely triggers listed underneath
A meal, scored — and the reasons behind the number
The Flourish camera screen framing a plate of avocado toast, with photo, text, and voice logging options along the bottom
Log a meal your way — photo, text, or voice
A weekly bloating report in the Flourish app listing suspected contributors and the meals linked to them
Weeks of logs, read back as a pattern
04

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.

05

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.

0

Commits across five repositories

//001
0

Kinds of health data, one schema

//002
0

Chat modes behind one Flora

//003
0

Scheduled jobs, none run twice

//004

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