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-09-05. Nothing here is a projection.

  1. 2026Live, early access
    Riznar landing page: know exactly what your reps sold today

    Riznar

    Field sales intelligence for Indian commodity distributors: reps keep sending Hinglish voice notes and text orders to a Telegram group, and Riznar turns them into priced invoices, a live 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.
    • 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. Eighteen assertions and an eleven-case LLM eval gate every push.
    • GST e-invoicing through a GSP, with taxpayer credentials stored AES-256-GCM and test IRNs hard-blocked on live keys.
    • 389 commits between March and August 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. It's live and priced. No paying customer is on record yet, so that claim isn't made.

    Stack
    Vanilla HTML/JS, Node serverless on Vercel, Supabase, Claude, Whisper, Telegram Bot API
    Evidence
    Measured
    riznar.com
  2. 2026Live, invite-only
    Upranked landing page for HVAC review collection

    Upranked

    An invite-only review-collection platform for HVAC businesses. Customers rate on a public page; four and five stars route to the business's Google profile, lower ratings stay private, and the owner sees all of it on one dashboard.

    The problem

    HVAC owners need Google reviews to rank locally but have no loop to ask for them, catch unhappy customers before they post, or see the results in one place.

    What's actually built

    • A rating-gated funnel with per-step tracking: opened, clicked, reviewed, each timestamped, with low ratings triggering a private notification instead of a public post.
    • Google Business Profile OAuth end to end, with the refresh token saved before location discovery so a failed discovery can never throw it away.
    • A Stripe billing spine merged and deployed dormant, every UI path gated until keys are set.

    What got cut

    Google review import is built and deployed but blocked in production on Google's own API allowlist for the Cloud project, a request overdue since August. Until it clears, clients are onboarded by hand. Four seed clients in the production database; no public sign-up.

    Stack
    React 19, Vite, Supabase with Deno edge functions, Google Business Profile API, Stripe, Resend
    Evidence
    Measured
    app.upranked.co
  3. 2026Live
    Caloday: the still hour, a scheduling app that blocks routines

    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.

    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, with buffer time enforced by interval-overlap maths.
    • Row-level security done properly: profiles publicly readable by slug, anyone can book, only the host can read or cancel, and a Postgres trigger creates the profile and slug on signup.
    • Fully brandable public booking pages, bio, colour, meeting type, hide-branding, with no paid tier gating any of it.

    What got cut

    A GitHub Pages deployment path still exists in the repo and its URL is dead; the live site moved to Vercel. The local main branch sits 25 commits behind the feature branch that holds the real work.

    Stack
    React 18, Vite, Supabase, Resend
    Evidence
    Measured
    caloday.com
  4. 2026Live, preview URL
    Reform: public data on India's government schemes

    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
    preview deployment
  5. 2026Prototype
    Apex, a real-time ranking game prototype

    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
    apex, prototype

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.