How I work

The process is written down, because agents read it too.

Every repo I own has a CLAUDE.md an agent reads first, a STATUS file it updates last, and decision records in between. These principles are distilled from those files. The quoted lines are verbatim.

The loop

  1. 1
    Read

    CLAUDE.md, then STATUS.md, then the charter. State before action.

  2. 2
    Branch

    A dated branch named for the change. Never commit on main.

  3. 3
    Build

    Directives describe intent. Code carries the logic. Tests pin the money rules.

  4. 4
    Verify

    Production build and tests locally. Then exercise it live and keep the receipt.

  5. 5
    Record

    ADR for the decision, changelog entry, STATUS update, all in the same PR.

  6. 6
    Ship

    Squash merge, deploy from main, and only then start the next batch.

Principles

Verify live before claiming anything.

A feature is done when it has been exercised in production and the receipt is written down: the revision id, the HTTP status, the object id. Anything not verified is labelled not verified. Status files keep three buckets: claimed and verified, not verified, deliberately incomplete.

“Run every non-obvious code sample before writing the output down.”

Push complexity into deterministic code.

Language models are probabilistic and most business logic is not. Directives in Markdown describe intent, an agent orchestrates, and Python or TypeScript does everything that has to be repeatable. The model writes prose and classifies. Code decides.

“90% accuracy per step is 59% success over five steps. Push complexity into deterministic code.”

Money rules never live in agent judgment.

Budget caps, kill switches, dry-run defaults and paused-first launches are enforced on the server and pinned by tests that fail if loosened. Automated de-risking is allowed. Automated re-risking is not. Turning real risk on is always a human call.

“Gemini writes analyst notes only; decisions stay reproducible.”

Docs ship in the same commit as the code.

Every repo has a CLAUDE.md that an agent reads first, a STATUS file that is read first and updated last, numbered architecture decision records, a changelog, and per-PR notes. A doc update is part of the change, not a follow-up.

“If you make a decision and there is no ADR for it, you are not done.”

Dated branches, small pull requests, deploy from main.

Every change gets a branch named with the date. At most a few changes per pull request, squash merged, and deployed before the next batch starts. Merging is the release. Nothing else touches production.

“Never wait on the user to merge or deploy. Real-capital decisions still flow through the approval system.”

Never debug in production.

Development builds are forgiving and production builds are strict, so the production build and the tests run locally before every push. Fixes that were needed once become scripts so they are never needed twice.

“Follow the process. Every. Single. Time.”

Say what was not done, and why.

Every decision record lists what was deliberately not shipped, what was consciously rejected, and what was deferred rather than rejected. Corrections are appended, never silently rewritten. Stale claims get marked stale.

“Dead code implying otherwise is worse than none.”

Secrets stay server-side, and so do prompts.

API keys live in Secret Manager or a gitignored env file, never in a browser bundle or an APK. For voice products the system prompt, voice and tools are locked into a single-use token on the server, so the client can connect but never read or alter them.

“The browser never sees the key and cannot alter the prompt.”

Honest copy, human voice.

No invented numbers, no fake scarcity, no marketing filler. Structured data must match the visible text. Copy is linted for em dashes and the vocabulary that gives away machine writing. A claim I cannot stand behind does not ship.

“No AI-styled language on any user surface. Em dashes called out as the giveaway.”

Mobile first, one accent colour, no decoration.

Most of my traffic is on phones, so the phone layout comes first. White or near-black surfaces, hairline borders, one accent, system type, motion limited to transform and opacity and silent under reduced motion. No gradients, glass or emoji in product UI.

“If a feature does not reduce time to decision, it does not ship.”

Spend is measured, not guessed.

Cloud credits, generation costs, voice minutes and per-tick model calls are tracked to the rupee and written into the status file. Generation freezes are tied to credit expiry dates. Cost per unit is what prices a product.

“Burn was measured against the live catalog, not guessed.”

Read the real source instead of guessing.

When a library or vendor behaves unexpectedly, the fix starts by reading its actual source, not by adding a workaround on top of a theory. Environment traps that have already cost time are written down so they are never rediscovered.

“These have all bitten already. Do not rediscover them.”

Toolbelt

Claude Code
Primary development environment. Custom skills, scheduled routines, and in one case a trader.
Angular
Zoneless, signals, standalone. Aggressive lazy loading and small bundles.
FastAPI and NestJS
Backends. Pure modules for anything that has to be unit tested.
Google Cloud and Firebase
Cloud Run, Cloud Tasks, Scheduler, Secret Manager, Firestore, Hosting.
Gemini
Live audio, vision, text, and Veo for video. Ephemeral tokens for anything in a browser.
Kotlin and Compose
The café point of sale. Offline first, Room then Firestore.
Astro and Netlify
Static sites with zero client JavaScript, including this one.
Playwright and Vitest
Screenshot audits, end-to-end flows, and specs that enforce invariants.

Timeline

  1. 2026 Aug
    Claude sleeve goes live inside Alphie

    Claude Code places discretionary orders every ten minutes through one endpoint with deterministic risk rails.

  2. 2026 Jul
    Baristalk shipped in five days

    Multi-tenant voice ordering piloted at The Jaggery Point. Domain purchased the same week.

  3. 2026 Jul
    PanelPrep submitted to the NamasteDev hackathon

    Two-voice AI interview panel on Gemini Live.

  4. 2026 Aug
    DhanChakra submitted to Build with Gemini XPRIZE

    An autonomous affiliate loop, documented in numbered decision records from day one.

  5. 2026 Jun
    club by The Jaggery Point launches

    Loyalty club with a QR pass the POS redeems in real time.

  6. 2026 Mar
    Alphie starts trading

    Backtested gap-fade strategy on NSE stocks with a Flutter dashboard.

  7. 2026 Feb
    Oasis POS rebuilt for Android

    Kotlin and Compose, offline first, replacing the Google Sheets version.

  8. 2026 Jan
    Tea Tee Store leaves Shopify

    Own Angular SSR and NestJS platform with Razorpay and print-on-demand.

  9. 2025 Dec
    IgniteAI begins

    A product photo into a finished UGC video ad. Later a Devpost submission and a remote MCP server.

  10. 2025 Dec
    OASIS v1 runs the café on Google Sheets

    Zero-cost back office. Sales, closing cash, expenses.

  11. 2024 Nov
    Zenith announced

    Vision AI receipts into Google Sheets, voice to task, dashboards. Internal tools for my own cafés first.

  12. 2024 May
    Voice avatar interviewer at a hackathon

    Speech in, avatar out. The seed of PanelPrep.

  13. 2023 Nov
    The Jaggery Point · Bengaluru and Belgaum

    A chai café chain built around jaggery chai. Opened November 2023. Started brewing chai, now building systems.

  14. 2023 May
    First LangChain experiments

    Searchable YouTube transcripts with FAISS and GPT-3.5.

  15. 2023 Jan
    Appetite Avenue founded

    Corporate café partnerships. The café your workplace runs on.

  16. 2021
    A run of Medium articles

    Lazy loading images, Ember versus React, Google Sheets automation, a party analogy for auth.

  17. 2020 Oct
    Joined Publicis Sapient · Bengaluru

    Frontend, then lead engineer.

  18. 2017 Dec
    How hard can Angular 5 be?

    A checklist PWA in four days, and the first Medium post.

  19. 2015
    Graduated · KLS Gogte Institute of Technology, Belgaum

    B.E. Information Science. ACM chapter coordinator, Firefox Student Ambassador.

  20. 2014 Apr
    Joined GitHub as indieNik

    Here to make the web a beautiful place.