GrowthOS
Enquiries from Instagram, WhatsApp and your website land in one queue — with the follow-up already drafted in the language your patients actually speak.
A front-desk operating system for clinics and service businesses. It works on the half of the practice that practice-management software ignores: the enquiries that arrive while everyone is busy, and the follow-ups nobody has time to write.
- Take the product tour — Six steps, no signup
- Who it's for
- Indian dental clinics of one to five chairs, where the owner-dentist is also, in practice, the marketing department.
- Who it isn't for
- Not a hospital information system. It does not do inventory, insurance claims or lab workflows, and it does not pretend to.
- What it replaces
- A WhatsApp inbox, an Instagram DM folder, a website form nobody checks, and whichever staff member happened to remember.
What it’s like
without it.
Indian clinics lose money at the front desk, not in the chair. An enquiry arrives on Instagram at 9pm, another on WhatsApp during a procedure, a third through a website nobody checks. Whether any of them becomes an appointment depends on who remembered.
The practice-management software that exists treats marketing as somebody else's problem, and the marketing tools treat the patient record as somebody else's problem. The gap between the two is exactly where the revenue goes.
And the follow-up itself has to sound right. A perfectly composed English paragraph is not how a receptionist in Indore talks to a patient, so if the drafting can't do Hinglish, it doesn't get sent — and an unsent draft is worth nothing.
What’s different the day you start using it.
Nothing arrives where nobody is looking
One queue for every channel, with a running count of the revenue recovered from it. The number on screen is money won back rather than enquiries logged, because that is the number that decides whether the software survives its third month.
The follow-up is already written — in Hinglish
The draft sounds like your receptionist, not a press release. Staff read it, adjust a word, and tap once to send. The software never sends on its own: a human is always the last step before a patient hears from your clinic.
A consultation becomes a record without anyone typing
Dictate after the patient leaves and the transcript becomes a structured treatment proposal, staged for review. Follow-ups and recalls become real records only when someone confirms them — so the fastest path and the safe path are the same path.
Two clinics can never see each other
Every row carries its clinic, and the database enforces that independently of the application code. It is the least glamorous guarantee in the product and the one any clinic should ask about first, because the alternative is a single forgotten filter away from being a very bad day.
Everything in the box.
Every line below is built and running. Nothing here is a roadmap item wearing a tick.
The front desk
- One enquiry inbox across channels, with a running count of the revenue recovered from it
- Patients, appointments, recalls and billing in the same system as the leads
- A treatment pipeline that handles several treatments in one case rather than one row each
- Built for Android Chrome first — 44px tap targets, tables that collapse into cards, a hamburger rail
Follow-up
- AI-drafted WhatsApp messages, in Hinglish where that is how the patient talks
- Sent as a deep link the human taps — the software never messages a patient on its own
- Every send stamps a timestamp, and the button becomes a “✓ Sent” label so nobody double-messages a patient
Voice notes
- Dictate after a consultation; the transcript becomes a structured proposal through a Claude tool-use loop
- The proposal is staged for review — follow-ups and recalls become real records only when a human confirms
- Every action the agent takes is written to an audit table
Marketing & billing
- A content studio with Claude, ChatGPT and Gemini behind one key, priced per model in credits
- AI photo backdrops for social posts, with hard no-people and no-text safety rails
- Plans, credits, top-up packs and trials on live Cashfree payments
- A cross-tenant owner panel that clinic users cannot reach
Free trial is live. Paid plans are priced on a call.
Sign-up is open and the trial runs today — you can be inside the product in a few minutes without talking to me. Paid pricing is agreed on a call rather than published in a table, because the first clinics are being onboarded by hand and I would rather fit the plan to the practice than defend a price list.
- Self-serve sign-up and a free trial, live now
- Live payments through Cashfree, verified end to end
- Your clinic's data isolated in the database itself, not merely in the queries
- Built phone-first, because the front desk runs on an Android phone
The stack,
without mystique.
Standard, boring technology your next developer will recognise. That’s the point — nothing here is a proprietary runtime you’d be locked into.
- Framework
- Next.js 14 App Router, TypeScript
- Data
- Supabase — Postgres, Auth, row-level security, Edge Functions
- Migrations
- 53 applied
- Tenancy
- clinic_id on every table, enforced by row-level security rather than by queries
- AI
- Claude for the notes agent; Claude / ChatGPT / Gemini via OpenRouter in the studio
- Payments
- Cashfree, live
- Hosting
- Vercel
What you’re trusting when you use it.
Anyone can list features. These are the calls that decide whether the thing survives contact with real customers and real money — explained without jargon, because you should be able to judge them without being an engineer.
- 01
A leak between two clinics is the worst possible bug, so it is prevented twice
Every table carries the clinic id, every query filters on it, and row-level security in Postgres enforces the same rule independently. Application code alone is not treated as sufficient — if a page ever forgot its filter, the database still returns nothing. That redundancy is the entire tenancy model.
- 02
The AI physically cannot message a patient
The notes agent has no tool that sends anything. It can only build a proposal. Follow-ups, recalls and review requests become real records when a human presses Confirm, and patient messaging stays a link a person taps. This is a capability boundary rather than a prompt instruction — which is the only kind that holds.
- 03
Clinical content is never extracted or interpreted
Diagnoses, prescriptions and dosages stay verbatim inside the note. The agent never lifts them into structured fields and never adds an interpretation. Unknown fields are left empty rather than guessed. Software that quietly reorganises a doctor's clinical wording is a liability, not a feature.
- 04
A dictated transcript is untrusted input
Transcripts arrive fenced and are treated as data, never as instructions. Text inside one that tells the agent to ignore its rules is noted and not obeyed — the same discipline you would apply to anything a stranger can type into your system.
- 05
The admin panel returns 404, never 403
A non-admin who guesses an admin URL is told the page does not exist, so the panel's existence is never advertised. It is gated in middleware and re-verified independently inside every admin page and action, because a server action is its own endpoint and a route guard does not cover it. Every admin mutation writes an audit row.
- 06
A new vertical is seed data, never a code fork
Dermatology or physiotherapy would be rows in a catalogue table resolved through one shared fallback — never an “if vertical equals” branch in feature code. The mechanism is built and live; the flag stays off in production until a paying non-dental clinic exists.
- 3
- channels in one queue
- 1
- tap to send a follow-up
- 53
- database migrations applied
- 44px
- minimum tap target, phone-first
Sign-up, the trial and live Cashfree payments are all verified end to end — by a real ₹599 charge I made to myself. There is no paying clinic on GrowthOS yet.
Want one of these for your business?
GrowthOStook the shape it did because of one specific business problem. Tell me yours and I’ll tell you what it would take — and if GrowthOS is already most of the answer, running on it beats rebuilding it.
Thirty minutes, screen-shared: the front desk — the enquiry queue, an AI-drafted Hinglish follow-up going out in one tap, treatment plans and the revenue-recovered counter.