ARYAMAN.BUILD™
All work

(Case study · 01)

Clinora

The Clinora owner dashboard: Needs attention with estimated pipeline at risk, beside a daily brief written from the clinic's own records.

I built Clinora to make the journey from enquiry to follow-up, appointment and recorded revenue visible. Every new enquiry gets an owner, a response clock and a next step, and the owner sees what is slipping and what it is worth while there's still time to act.

A self-initiated product, live in production and ready for a pilot, with no clinic onboarded yet, so no results are claimed. The clinic, patients and figures in the screens are fictional demo data; WhatsApp and Meta lead ads are built but not yet verified with a live account.

Role
Product design · Interface · Content · Front end · Back end
Year
2026
Type
Self-initiated
Built with
Next.js · React · TypeScript · PostgreSQL · Drizzle · Vercel
Status
Live in production, demo open, no clinic onboarded yet

(Why I built this)

What happens after a clinic pays for an enquiry?

I wasn't interested in building another clinic dashboard.

What I kept coming back to was the part after the ad. A clinic pays for an enquiry from Instagram, a Facebook lead form, Google or WhatsApp. Then a price question gets answered hours later, a callback has no owner, a booked patient is never reminded.

And because nobody records how each enquiry ended, the owner can't tell a bad campaign from a slow reply. That felt like an operations problem, not a marketing one.

(The problem)

Where I thought the journey was breaking

Workflow reconstruction · drawn from the stages the product now tracks

  • Meta lead ads
  • Google
  • Instagram
  • Website
  • WhatsApp
  • Phone call
  • Walk-in
  • Referral
  1. EnquiryThe reply comes hours later
  2. Front deskNobody clearly owns it
  3. Follow-upCallback missed, no next step
  4. AppointmentBooked, never confirmed
  5. VisitNo-show, nobody recovers it
  6. RevenuePayment never linked back to the ad

(What I looked at)

What I wanted to understand

This part is a retrospective scan, written for this case study in October 2026 from public material. It isn't a record of research done before the build, so it doesn't pretend to be one.

Meta lead ads
What arrives with a lead, and what gets lost on the way? Every lead in Clinora keeps its source and campaign.
WhatsApp Business Platform
When may a clinic message someone first? Each lead records whether, and when, the person opted in.
Clinic, CRM and WhatsApp tools
What would a clinic otherwise use, and what is each built around? The scan below.
Category scan · public material only · October 2026
CategoryExampleWhat its public material centres onMy read, for a small clinic
Clinic softwarePracto RayAppointments, medical records, billing and e-prescribing1Starts once a patient is booked. The enquiry before the booking isn't the centre.
General CRMHubSpotRotating record owners through workflows; customisable deal stages2Powerful, but a clinic would build its own stages, response clocks and service values.
WhatsApp inboxInteraktA shared inbox: assign, reassign and auto-assign chats3The conversation is the unit. Whether it became a visit, and revenue, lives somewhere else.
Healthcare CRMLeadSquaredCapture from many channels, distribution to agents, booking and reminders4The closest category. Its case studies describe call-centre dialer setups; its speed figures are vendor-reported.

"My read" is my interpretation, not a feature audit. Sources are listed at the end of the page.

(What changed because of it)

Observation, decision, screen

Design hypotheses · each one is visible in the live product

  1. Totals are easy to show. Exceptions are what an owner actually needs.

    Open the dashboard on Needs attention, ordered by the estimated value at stake.

    Owner dashboard

  2. An estimate placed next to revenue gets read as revenue.

    Revenue only when the team records a payment. Everything else says est.

    "Configured average, not revenue"

  3. Receptionists work between patients, on their phones.

    One queue, each lead once, under its most pressing reason. One button.

    Receptionist home

  4. A visit booked outside the lead loses where it came from.

    Book from the lead's page, so every visit stays attributed to its enquiry.

    Appointments

(Information architecture)

How the product is organised

Today holds work, not reports. Reports sit under Insights, away from the things you act on.

A lead's history lives inside the lead as one timeline, instead of becoming another feed to check.

Settings hold the numbers that decide when a lead counts as late, quiet or at risk, so the clinic sets its own definition of "slipping".

Clinora

  • Today
    • Dashboard
    • My work
    • Leakage radar
    • Inbox
    • Tasks
    • Appointments
  • Leads
    • All leads
      • Lead page: contact · commercial · ownership · activity · next action
    • Pipeline
  • Insights
    • Reports
    • Team
    • Messaging costs
  • Setup
    • Automations
    • Settings
      • Response time · pipeline stages · branches and doctors · services and values · team and access · lead channels · WhatsApp and costs · audit log
    • Help and guide

Four front doors, one product

  • Owner Dashboard, radar, attribution, daily brief
  • Receptionist Who to call next, inbox, today's appointments
  • Manager Team, pipeline, automations, settings
  • Viewer Reports, no edit rights

(Flows)

Four journeys the product has to get right

Taken from the product's own activity log and states

01 · New enquiry

  1. Source
  2. Lead created
  3. Owner assigned evenly
  4. First-call task
  5. 10-minute response clock
  6. First reply, or managers told
  7. Next step

02 · Appointment

  1. Qualified lead
  2. Booked from the lead
  3. Unconfirmed
  4. Confirmed
  5. Visited · no-show · cancelled
  6. No-show recovery

03 · Revenue

  1. Source and campaign
  2. Lead
  3. Appointment
  4. Visit
  5. Conversion recorded by the team
  6. Report by channel

04 · Leak

  1. Response missed · callback overdue · gone quiet
  2. Radar group
  3. One line on what to do
  4. Someone acts
  5. Off the radar

(Scope)

What made the first version, and what stayed out

I could have kept adding modules. But Clinora had one job: make the enquiry-to-revenue journey visible and actionable.

Adding medical modules would have made the product bigger, not clearer. Clinora holds contact and commercial details only, and even the note field asks the team to keep medical details out.

Must have

  • An owner for every enquiry
  • A response clock
  • A next step on every lead
  • The appointment lifecycle
  • Source and campaign on every lead
  • A leakage radar
  • Walls between clinics

Built, still being proven

  • WhatsApp and Meta lead ads: built, not yet verified with a live account
  • AI reading of enquiries: built, switched off by default

Not in V1

  • Diagnoses
  • Prescriptions
  • Clinical notes
  • Pharmacy
  • Insurance
  • Telemedicine

(What didn't work)

The first dashboard was wrong

My first dashboard opened with eight number tiles of equal weight. It answered "what happened?" and pushed the owner's real question, "what needs me now?", below the fold.

I rebuilt it around exceptions: Needs attention first, ordered by what's at stake, the daily brief beside it, and the totals last.

Sketch of the first dashboard: eight equal number tiles, with the needs-attention list pushed below the fold. fold the owner's question is down here eight equal tiles: too passive
V1 Retrospective sketch of the first dashboard
Sketch of the rebuilt dashboard: needs attention first with estimated value at risk, the daily brief beside it, totals at the bottom. at risk, and it says est. written by rules totals last needs attention first
V2 Retrospective sketch of the rebuilt dashboard
Sketch of the lead page structure: next action in its own panel above the history, the activity timeline in the middle, commercial details on the left. next step above history keep medical details out score explains itself estimated value: not revenue
LEAD Retrospective sketch of the lead page's structure

Drawn for this case study, after the fact. They show the structure, not the original working files.

(Values)

What I refused to compromise

(Mood board)

Calm paper, sharp signals

A front desk is noisy enough. I wanted the product to feel like warm paper, not hospital white, with one deep green for action and colour kept for status: red only for someone still waiting, amber for a warning, green when it's done.

Assembled from the product's own colour tokens and screens

  • Paper#F6F5F1
  • Ink#15171A
  • Action#0F4C45
  • Still waiting#B42318
  • Warning#8A5300
  • Done#1D6A3A
  • Sage#8FE3C8
  • Ember#F08A6C
Estimated pipeline at risk, in red, labelled as estimated
Money at risk, always "estimated"
Status pills: New, Warm 46, No reply 1d 4h late
Late says how late
Estimated value, configured average, not revenue
Every estimate carries its qualifier
Next best action card: Call now, past response time, Log call
One action, its reason, one button
  • Calm
  • Exact
  • Front-desk fast
  • Honest about estimates
  • Paper, not hospital white

(What I built)

A system that follows one enquiry all the way

I built a multi-clinic web app that follows an enquiry from first contact to appointment, visit and recorded revenue, with a phone view for the front desk, a marketing site, and a demo anyone can open.

  • Lead ownership
  • Response clock
  • Next best action
  • Appointments
  • Leakage radar
  • Source attribution
  • Daily brief
  • Automations
  • Help in Hinglish, Hindi or English

The screens

A revenue-leak system for high-value clinics: every enquiry gets an owner and a response clock, the team always sees the next step, and the owner sees what is slipping and what it is worth.

(Up close)

The decisions, on the screen

Owner dashboard with Needs attention, estimated pipeline at risk and the daily brief 12345
  1. Attention before analytics
  2. At risk, labelled as an estimate
  3. What each group is worth, "est. at stake"
  4. The brief is written by rules from the clinic's own records
  5. "They are not revenue": said once, under the list
Lead page: No reply, 1d 4h late, with Call now as the next best action and the score explained 123456
  1. The next step gets its own panel, above the history
  2. "No reply · 1d 4h late": how late, not just late
  3. Estimated value: "Configured average, not revenue"
  4. The note field asks to keep medical details out
  5. The score is explained line by line
  6. "Rule-based reading (AI off)": it says what it is

(System)

How it fits together

Every clinic's rows are walled off by the database itself, with row-level security in PostgreSQL, not only by checks in the code. The app runs under database roles that can't bypass those policies.

Simplified · drawn for this case study from how the product behaves

  1. Lead sourcesMeta lead ads · WhatsApp · website · Google · Instagram · phone · walk-in · referral
  2. IntakeLead created with source, campaign, service and branch
  3. AutomationsAssign evenly · first-call task · response clock · WhatsApp acknowledgement · manager alert
  4. WorkOwner, stage, tasks, next best action, activity timeline
  5. AppointmentsBranch hours and doctors · unconfirmed → confirmed → visited / no-show / cancelled
  6. RevenueConversions recorded by the team
  7. InsightLeakage radar · reports · daily brief written by rules
  • Next.js · React · TypeScript
  • PostgreSQL + Drizzle
  • Row-level security · 134 policies
  • Roles: owner · manager · receptionist · viewer
  • Audit log
  • Vercel

Simplified data model · reconstructed from the product's screens, names simplified

  • Clinic
    • Branches · doctors · hours
    • Members · roles
    • Services · average values
    • Pipeline stages · win probabilities
    • Automations · audit log
    • Lead source · campaign · service · branch · owner · stage · score
      • Activity timeline
      • Tasks
      • WhatsApp messages · opt-in
      • Appointments
      • Conversions (recorded revenue)

(States)

Beyond the happy path

Each of these is a real state in the live demo

(Testing)

What I didn't want to leave to chance

I audited every screen in a real browser and fixed what was unclear before adding anything new.

Then I ran the full browser suite against production, on its own database, through the same invite-only path a clinic uses. It caught two things local runs hadn't: a back door in invite-only sign-up, and a demo refill that timed out. I fixed both with a test first.

Automated tests
194, with 14 run against the live site
Database policies between clinics
134, under roles that can't bypass them
Bugs the live run caught
2, each fixed with a failing test first

(What I learned)

Clinora changed how I think about dashboards. The best one isn't the one that shows the most. It's the one that makes the next decision obvious.

(Sources for the category scan · checked October 2026)

  1. Practo Ray features as listed by Capterra and SoftwareSuggest (third-party listings): capterra.com/p/167778/Ray
  2. HubSpot Knowledge Base, "Assign and rotate record owners using workflows": knowledge.hubspot.com; HubSpot deal pipeline: hubspot.com
  3. Interakt help, "Shared team inbox: assigning and reassigning chats": interakt.shop
  4. LeadSquared healthcare pages and a published customer case study: leadsquared.com/healthcare, case study

Need something like Clinora?

Tell me what you want to build. I'll reply with how I'd build it, a rough timeline and a cost range. Free, and no obligation.

Next project

Pitwall