Founder · one lens of six · 2026

Built one day. Rebuilt the next.

The affiliate scheme worked. It took an afternoon, it shipped, and nothing about it looked like a defect. It was replaced the following day because both halves of the incentive pointed at the wrong thing.

PivotsIncentive designShipping disciplineEight rendered panels
01 · Origin02

It did not start as software.

The earliest document is a turnaround plan for a physical clinic: thirteen workstreams, of which technology is the eighth.

Before
A clinic with a recorded, specific problem: people get treatment and pay later.
What forced it
The checklist redesigned the commercial flow on paper, in five steps — consultation, recommendation, quotation, payment, treatment — before any code existed.
The decision
That sentence became the third rule the eventual system enforces: no delivery without payment. The business decision came first and the software was built to make it unavoidable, rather than offering a feature somebody might use.
What it changed
The checklist closes by naming the real ambition: we are no longer writing a renovation plan, we are writing a single source of truth, and if we do that well the physical clinic becomes just the first instance of a system that can be replicated elsewhere.

Workstream eight imagines the product a year before it existed — a scan on arrival, a structured assessment, a recommended package, the doctor editing it, payment, tracking, follow-up — and states the intended division of labour in one line: the humans become advisors, the system becomes the memory.

02 · Six reversals03

Six decisions taken back, in sixteen days.

  1. The whole first build, discarded · 5 Aug

    A working system existed. It printed credentials on its login page, showed one price and billed another on all eight packages, and let a phone number alone reach somebody else's clinical record. Baselined in version control rather than erased, and rebuilt from a fresh schema with the old data left as a fallback.

  2. Payment at the centre, to paid in advance · 5 Aug

    An explicit early decision said there would be no gateway and payment would happen at the centre. Reversed the same day: a hold expires in fifteen minutes and counts as occupied, and the appointment is created only after server-side verification.

  3. The waiver, to what to expect · 17 Aug

    A legally accurate consent page with five red warning blocks that read like a company expecting a dispute. Same protections, restated as things a patient would want to know. Red blocks to zero — and arguably the stronger legal position, because a document people actually read is better evidence of informed consent.

  4. The review incentive, to a policy-safe split · 17 Aug

    ₹300 off for a five-star review screenshot — designed, then found to breach the review platform's policy outright. Split into ₹300 off for scanning and turning up, plus a separate unincentivised ask afterwards. Buying stars would have been the first dishonest thing on the whole site.

  5. Affiliate commissions, to community partners · 17 → 18 Aug

    Built one day, rebuilt the next. The one worth arguing about.

  6. Sign-in, three generations · 5 → 20 Aug

    Matching on email address locked out exactly the people who needed it, because an address that is a mailbox is not a login. The final shape starts a sign-up for an unknown identity at the patient door, refuses rather than links a phone number that already has a record, and creates nothing at all at the staff door.

03 · The incentive that pointed the wrong way04

The shape was the obvious one. Every marketplace on the internet works like this.

Built on 17 AugustReplaced it on 18 August
The customer₹300 off the ₹800 assessment.Pays the full ₹800 and earns ₹300 of credit towards a programme. Nothing comes off the door.
The partner₹150 when the person signs up.₹150 on attendance only, wired to the moment a staff member marks the appointment complete — a click that already happens.
FailureA booking is a booking.Cancelled or no-show moves the referral to lost and pays nothing. Only genuinely new patients count, or a gym can farm its own members.
The nameAffiliate commission.Community partner. The role is still AFFILIATE in the database — renaming a live enum is not worth the risk — and every human-facing label changed.

Why the discount moved: taking ₹300 off the assessment costs the centre ₹300 and tells the person that the assessment is the sort of thing that goes on sale. The second is much more expensive than the first. A person who came because it was cheap is not the person who finishes a six-week programme.

Why attendance became the paying event: bookings are free to make and easy to fake, and a gym paid per booking has been handed a reason to book slots. Paying on attendance means paying for somebody who got up and travelled to Panchkula. That cannot be manufactured — and it is exactly what the centre wants.

04 · Switched off is a finished state05

Shipping them enabled would have been faster and worse.

Where it stands
  • Self-service patient accounts — built, and switched off until an authentication-category message template clears review, because the one-time code is the whole safety argument: a phone number alone must never be enough to claim somebody else's clinical record
  • Four leaflet campaign codes — created, not activated. An active code is money leaving the till
  • A messaging assistant that answers costs, hours and what happens in the room, then hands over a booking link — and will not give clinical advice, because a chat that engaged with symptoms would undo a site built around telling people when to see a doctor instead
Still open
  • Each one waits on a price, a credential or a decision that was not the author's to make unilaterally
  • The emergency-phrase guard is the only code with a dedicated test file, for a stated reason: it is the only list where being wrong hurts somebody
  • The feature flag alone is not enough — self-service checks both a deliberate flag and a messaging configuration that can actually deliver a code, because the flag alone gets you a form asking for a code nobody will ever receive
05 · Did this month make money06

The only question that matters at the end of a month could not be answered from the system at all.

Before
Orders, payments and collections were modelled in the first week. Money out was not modelled anywhere, so the answer lived in a notebook.
What forced it
A business that cannot answer what it kept is not being run from its own records.
The decision
A back office built around one figure: collected, less paid out, equals what the month did. One ledger for every outgoing, salaries deliberately included, because a salary is money out like any other and two ledgers is one you forget to add.
What it changed
Alongside it, the commercial model the strategy required: every price public in both languages, the per-session figure derived rather than stored and rounded upward, and programmes that cannot be bought online at all because everything follows a documented finding.

One detail is most of what the job actually is. A role enum in the live database still carries its commission-era name, because renaming a live enum is not worth the risk — so every human-readable label changed and the stored value did not. The same shape repeats: a column added for per-practitioner calendars and then dropped rather than left dead, a superseded credit model kept only so historic rows still read correctly. None of it appears in a portfolio.


It wrote most of the code. I set the constraints, made the calls it should not have made alone, and caught it inventing a logo when real artwork already existed. The decisions in this document are mine. Several of the mistakes in it are too.

BUILD-LOG.md, closing note

Switched off is a finished state.

Nirmalkaya · one of six perspectives on the same project

Executed by me, with an AI collaborator writing most of the code under constraints I set. The reasoning behind every pivot comes from my own build log and decision log; the dates come from version control. No revenue, bookings or business results appear, because none are documented.

All case studiesNirmalkayaThe illustrated documentWork with me

B-SIDEOff the record