I build
Five things shipped on my own time.
Designing a product and running one are different jobs. These are the second kind: I wrote the code, wired the backends, talked to the users, and read the logs. Each one says what stage it is actually at, and each one names what got cut.
Every claim below was read off the repo or the live site on 2026-10-12. Nothing here is a projection.
Where each one stands
Stage, not spin
- 2026Live, early accessRiznar landing page: see what every rep actually sold, with a Telegram order message turning into a GST bill
Riznar
Field sales intelligence for Indian commodity distributors: reps send Hinglish voice notes and text orders to a Telegram group, and Riznar turns them into priced invoices, an owner dashboard, a Monday digest and GST e-invoices.
The problem
An owner of a rice, atta or oil distribution business doesn't know what the reps sold today. Orders live as loose messages and get re-keyed by hand into invoices and GST filings.
What's actually built
- The whole loop is wired end to end: Telegram webhook, Whisper transcription, Claude extraction, a deterministic check against the product catalogue, Supabase, and the parsed order echoed back to the group so reps self-correct. Owners can send an accountant a read-only report link.
- The quantity grammar reps actually use. '47 kg 15 bori @1348' is fifteen packs at 1348, never 47 units. Brand misspellings collapse with Levenshtein matching. 107 assertions in two test files (95 on extraction and the money path, 12 on shop de-duplication) run on every push to main.
- GST e-invoicing through a GSP, with taxpayer credentials stored AES-256-GCM and test IRNs hard-blocked on live keys.
- Redesigned in October as Bahi: two inks and one marigold highlighter across the app, landing page, login and share links. The landing hero now plays the Telegram message turning into a bill. 402 commits on main between March and 8 October 2026.
What got cut
It started in March as a B2B deal-intelligence landing page with a waitlist. By May the field-sales problem was clearly the real one, and the deal-intelligence idea was cut entirely. The 45-message LLM eval of the real prompt is run by hand before a prompt change and is not part of CI, so that safety depends on someone remembering. It's live with pricing on the page. No paying customer is on record, so that claim isn't made.
- Stack
- Vanilla HTML/JS with no build step, Node serverless on Vercel, Supabase, Claude, Whisper, Telegram Bot API, pdf-lib
- Evidence
- Measured
- 2026Live, invite-onlyUpranked client dashboard on the Volt design system: ratings, requests sent, and what the reviews say
The product's own demo mode with made-up data, run locally. The live app is behind a login.
Upranked
An invite-only review platform for local businesses. A business asks customers for a Google review by WhatsApp or email, watches each request move from sent to rated to clicked through, replies to Google reviews from the dashboard, and reads the patterns across its reviews on one overview.
The problem
A local business lives or dies on how it looks in Google search, and most have no loop to ask for reviews, no way to see which requests went anywhere, and no habit of replying. Nothing in the product is tied to a trade; it works for any place with a Google profile.
What's actually built
- WhatsApp review requests through Meta's Cloud API, with delivered, read and failed coming back from Meta's webhook. The webhook's HMAC signature is checked before the body is trusted, and a funnel (sent, delivered, read, opened, rated, clicked to Google) never rises between steps. 13 funnel tests and 6 signature tests.
- Replying to Google reviews from the dashboard through the Business Profile API. Google moderates replies, so each shows as live, waiting or rejected with the reason, and a rejected reply never looks published. Google's 4096-byte limit is counted in bytes, so Hindi and emoji don't slip past it.
- An insights panel on the overview: rating trend, recurring complaints, praise, and low ratings still waiting for a reply. Reviews are tagged in the browser with word lists and negation handling, replacing a Claude call that needed a key, a cron job and a migration. Quotes are copied from the review text, never written.
- Self-serve billing on Dodo Payments, priced in rupees: pick a plan, switch with proration, and a client can only ever act on their own record. Redesigned on the Volt design system on 5 October with no backend call changed.
What got cut
It removed its own review gating. The first version sent 4 and 5 star ratings to Google and kept low ones private. On 25 September and again on 10 October that was stripped out, because steering unhappy customers away from Google is gating: every customer is now offered Google, and a low rating gets an equal private-feedback button beside it. Google approved the Business Profile API on 5 October, after a wait that ran from August, so reviews import on their own now. Still invite-only with no public sign-up, and no revenue is claimed.
- Stack
- React 19, Vite, Supabase with Deno edge functions, Google Business Profile and Places APIs, Meta WhatsApp Cloud API, Dodo Payments, Resend
- Evidence
- Measured
- 2026LiveCaloday landing page: let people book you, not your morning walk, with a day timeline of protected, booked and open blocks
Caloday
A booking link that respects your routines. A host sets weekly availability plus recurring blocks like gym or deep work, and guests only ever see the slots left after both are removed, and after the times the host is busy in Google Calendar.
The problem
Sharing one scheduling link without exposing personal time. Existing tools treat every free hour as bookable.
What's actually built
- Slot availability computed as the availability window minus routine blocks minus confirmed bookings minus busy times from Google, with buffer time enforced by interval-overlap maths.
- Google Calendar in both directions with the narrowest permissions that work: busy times only, never event titles, cut to the hours the host offers, and cut off after 4 seconds so Google can't slow the booking page. Since 11 October each booking is also written to the host's calendar and removed on cancel, through a ledger that makes a repeat do nothing and never puts back an event the host deleted.
- Row-level security done properly: profiles publicly readable by slug, anyone can book, only the host can read or cancel, and the Google refresh token is readable by nobody but the server. Four test suites cover calendar events, the Google path, the database rules and the browser flows.
- A design language called Dusk Field: daylight is bookable, dusk is protected, and one pink afterglow marks the single key action. Host booking pages are fully brandable at no cost.
What got cut
There is no paid tier yet. Pro is a planned list on the Pricing page with a waitlist, and Google Calendar busy times were made free on purpose after reading Calendly's and Cal.com's free plans on 6 October. The repo's own comparison says where Caloday loses: one event type, no payments, fewer integrations. The Google connection was built and demoed in Google's Testing mode; the repo holds a checklist for Google's review, not a record that it passed.
- Stack
- React 18, Vite, Supabase with Deno edge functions, Google Calendar API, Resend
- Evidence
- Measured
- 2026Live, preview URL

Reform
Public data on India's rural welfare schemes, explained in plain language and shown only where a number traces to a named government source.
The problem
Data on MGNREGA, PMAY-G and DAY-NRLM is spread across dashboards, Acts, CAG audits and press releases, with mislabelled units and state breakdowns that don't add up.
What's actually built
- Calls the Ministry of Rural Development dashboard's own JSON endpoint directly, the one its charts use, and found it's shared across schemes.
- Caught a unit error in the government's own data: four money KPIs arrive in lakh while the dashboard labels them crore. Verified against Uttar Pradesh's raw figure, 4.8x the national total, then divided by 100.
- An automated anomaly scan across six KPIs and ten states flags year-over-year swings of 40% or more, then hand-verifies the West Bengal findings against reported fund-suspension coverage.
What got cut
It deliberately withholds data it could not reconcile. PMAY-G's state breakdown and DAY-NRLM's rupee figures are excluded because they summed to impossible national totals, one year of one fund exceeding India's GDP. Headcount figures stayed because they landed within 0.02% of the all-India number. It's on a Vercel preview URL, not a domain, with no remote git yet.
- Stack
- Next.js 16, React 19, Tailwind v4, hand-built SVG India choropleth, no database
- Evidence
- Measured
- 2026Prototype

Apex
A real-time ranking game where players burn money per second as thrust to climb, and the score is seconds held above a line that solo spending cannot reach. To cross it you draft in a rival's wake or form a pact.
The problem
Pay-to-rank leaderboards sell a static position: no event to watch, no counterplay once outbid, and the deepest pocket holds first forever.
What's actually built
- The design rests on a measurable claim: the line at 110 km sits above the solo max-burn ceiling of 104.4 km. In headless 600-second runs the whale rival spends about $1,118 and holds the line for 1.3 seconds; towed craft hold up to 32.3.
- A tuning fix found by measurement, not feel: classifying every failed tow showed the wake was too short. Lengthening it moved a competent player from 0 to 32 seconds on the line while the whale stayed at zero.
- A 12-second forward trajectory integration drives both the predicted arcs and a collision alert with countdown.
What got cut
It's a prototype and the README says so. Continuous real-money burn resembles a penny auction, and it would need spend caps before taking a cent. Nobody has paid anything.
- Stack
- Vanilla JavaScript, Canvas 2D, a Node build script that inlines everything. No framework.
- Evidence
- Measured
None of these has a marketing number on it because none of them has earned one yet. What they have is working code, real users where stated, and a clear account of what isn't done. That is the same standard the design work on this site is held to.