Documents before code.
A public website in two full languages, a patient portal, a staff console, a back office and a growth engine — built in sixteen days of recorded history on top of a month of written strategy, and rebuilt once from scratch along the way.
Booking tools assume you are a salon. Clinic software assumes you are a hospital.
Neither assumes a centre where the assessment decides what happens next, where no plan begins until the patient understands it, and where a therapist should never deliver a session nobody paid for.
So three rules were enforced in code rather than in staff training: no plan without a signed assessment, no sale without recorded understanding, no delivery without payment. The third one came from a sentence written on paper long before any software existed — people get treatment and pay later — and the commercial flow was redesigned around it.
- Role
- Brand, product, systems, engineering
- Period covered
- Jun – Aug 2026
- Languages
- Two in full, five in part
- Status
- Live in production, with real patients
the ontology from the strategy documents, implemented exactly
pages and routes
URLs in the sitemap
independent payment-confirmation paths
rounded corners, shadows, spinners or emoji
Eleven documents, written between the first build and the second.
The governing rule is in the repository's own README: where this code and those documents disagree, the documents win.
Who we are
Vision & positioning
Avoid technology as the differentiator. The patient wants someone who understands the problem and gives a clear plan.
Brand & identity
Belief, purpose, personality, voice, standard, promise.
Space redesign
The physical environment, planned alongside the software.
How we work
Patient journey
Eight stages. No treatment begins until the patient understands the plan.
Operational standards
Six auditable standards, each with required actions, do-nots and escalation. If an activity is not documented, it is considered not performed.
What we sell
Service architecture
Domain → Capability → Delivery pattern → Offering → Programme → Site. This ontology is the database schema, not a diagram of it.
Master service universe
Every conceivable service across twenty-one domains, with regulatory context and risk matrices.
Catalogue design
Sell the recovery programme, not the individual therapy. The customer buys the transformation.
The deliberate exclusions were constitutional: several common treatments are excluded by name in the seed data, decided on paper first. Differentiation by refusal is harder to copy than a feature list.
A patient paid ₹400 and got nothing.
After go-live, a real payment produced no confirmation, no message, no appointment and no database row. The centre had the money and no record. Nothing alerted anyone — it was found by looking.
- Before
- Turning a paid booking into records ran inside a single five-second database transaction, with two helpers inside it each opening their own connection to a pooler in another region.
- What forced it
- The obvious diagnosis was a missing payment webhook. Clean, plausible, and wrong — the logs said the transaction had taken 6,698ms against a 5,000ms ceiling. A webhook would have hit the same wall.
- The decision
- Move the numbering outside the transaction, raise the ceiling — twenty minutes of work. Then redesign so no single path is load-bearing: a browser redirect, a server-to-server webhook, and a sweep that asks the payment provider directly every ten minutes, all funnelling into one idempotent function.
- What it changed
- A rule that now governs everything: a booking that has been paid for must never be undone by something else failing. Notifications and calendar sync never throw — they record their own failure and are retried by the sweep.
The lesson the project recorded from this is not about transactions. It is verify, do not reason. The first diagnosis was arrived at by thinking about the system instead of reading what the system said.
The patient's booking was recovered by hand.
Six of them, and the two I'm least comfortable with are the useful ones.
The whole first build, discarded
A working system existed. It printed credentials on its login page, showed one price and billed another on every package, and let a phone number alone reach somebody else's clinical record. It was baselined in version control, not erased, and rebuilt from a fresh schema.
Payment at the centre → paid in advance
An explicit early decision was reversed: a hold expires in fifteen minutes and counts as occupied, and the appointment is created only after server-side verification. Not confirmed until paid, made literally true.
Waiver → what to expect
A legally accurate consent page with five red warning blocks read like a company expecting a dispute. Same protections, restated as things a patient would want to know. Red blocks to zero — and a stronger legal position, because a document people actually read is better evidence of informed consent.
Review incentive → policy-safe split
A discount for a five-star review screenshot was designed, then found to breach the review platform's policy outright. Buying stars would have been the first dishonest thing on the whole site.
Affiliate commissions → community partners
Built one day, rebuilt the next. A discounted assessment is a less serious one, and paying per booking pays for fakeable bookings. Now the customer pays in full and earns credit toward a programme; the partner earns on attendance only, and their dashboard shows counts and money owed and no patient details at all.
Sign-in, three generations
Matching on email address locked out exactly the people who needed it. The final shape starts a sign-up for an unknown identity on the patient door, refuses rather than links a phone number that already has a record, and creates nothing at all on the staff door.
The affiliate rebuild is the one I would point at. It was wrong in a way I could not see until I said it out loud — and what makes “community partnership, not referral commission” honest rather than a euphemism is that a partner who never learns anything about a patient cannot influence clinical judgement.
The guideline is the token. There is nothing to remember.
The distinguishing move on this project: the brand is implemented as system constraints, not as guidance a designer is asked to follow.
| Brand guideline | What it became in the system |
|---|---|
| Square corners | Every radius token set to zero — a stray rounded class is a no-op |
| No shadows | Every shadow token set to none |
| A fixed spacing scale | Six values, and no others available |
| Reading measure | Prose never exceeds 680px, verified in the browser |
| Ground rhythm | Two grounds alternate; three identical ones in a row is forbidden |
| Red means clinical risk | A semantic token, reserved — never a delete button, never an overdue payment |
| No spinners | Count of spin animations in the shipped stylesheet: zero |
The build log records the system winning an argument with its own author: hunting a suspected brand violation in the markup, I found the token config had already set that radius to zero and the class was doing nothing. A rule enforced by the system does not require anybody to remember it at four on a Friday afternoon.
The waiting state is three petals brightening in sequence — opacity only, resting at 0.22 rather than 0 so that someone who has asked for reduced motion still gets feedback. There is no percentage and no time estimate, because a made-up number would be the first dishonest figure on the site.
Diluting red is how clinical software becomes unsafe.
Live, with real patients and real money.
- In production, in two full languages, with roughly ten thousand words of clinical content written in Hindi
- A deliberate register shift from literary to spoken Hindi, with a count-guard rule so a list only substitutes when the item counts match
- Three payment-confirmation paths, a one-way calendar mirror with a drift-detecting sweep, and an automated messaging assistant with an emergency-phrase guard tested in three scripts
- A second door at /lifestyle for people who have not decided anything is wrong yet
- Navigation cut from seven items to five; refusing service redesigned to require two people
- The display typeface is on a trial licence, recorded as a known gap by the guidelines themselves
- Several finished features deliberately switched off pending credentials or decisions
- The abandoned directions are kept in the record rather than deleted — per-practitioner calendars, a superseded credit model, an enum whose name no longer matches its label
One enum in the live database still carries the old commission-era name. Renaming a live enum is not worth the risk, so every human-readable label changed and the stored value did not. That is the kind of decision that never appears in a portfolio and is most of what the job actually is.
If an activity is not documented, it is considered not performed.
Operational Standards v1.0, written before the rebuild
Where wellness begins.
Nirmalkaya · Panchkula, Haryana · 2026