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
- 1Read
CLAUDE.md, then STATUS.md, then the charter. State before action.
- 2Branch
A dated branch named for the change. Never commit on main.
- 3Build
Directives describe intent. Code carries the logic. Tests pin the money rules.
- 4Verify
Production build and tests locally. Then exercise it live and keep the receipt.
- 5Record
ADR for the decision, changelog entry, STATUS update, all in the same PR.
- 6Ship
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
- 2026 AugClaude sleeve goes live inside Alphie
Claude Code places discretionary orders every ten minutes through one endpoint with deterministic risk rails.
- 2026 JulBaristalk shipped in five days
Multi-tenant voice ordering piloted at The Jaggery Point. Domain purchased the same week.
- 2026 JulPanelPrep submitted to the NamasteDev hackathon
Two-voice AI interview panel on Gemini Live.
- 2026 AugDhanChakra submitted to Build with Gemini XPRIZE
An autonomous affiliate loop, documented in numbered decision records from day one.
- 2026 Junclub by The Jaggery Point launches
Loyalty club with a QR pass the POS redeems in real time.
- 2026 MarAlphie starts trading
Backtested gap-fade strategy on NSE stocks with a Flutter dashboard.
- 2026 FebOasis POS rebuilt for Android
Kotlin and Compose, offline first, replacing the Google Sheets version.
- 2026 JanTea Tee Store leaves Shopify
Own Angular SSR and NestJS platform with Razorpay and print-on-demand.
- 2025 DecIgniteAI begins
A product photo into a finished UGC video ad. Later a Devpost submission and a remote MCP server.
- 2025 DecOASIS v1 runs the café on Google Sheets
Zero-cost back office. Sales, closing cash, expenses.
- 2024 NovZenith announced
Vision AI receipts into Google Sheets, voice to task, dashboards. Internal tools for my own cafés first.
- 2024 MayVoice avatar interviewer at a hackathon
Speech in, avatar out. The seed of PanelPrep.
- 2023 NovThe Jaggery Point · Bengaluru and Belgaum
A chai café chain built around jaggery chai. Opened November 2023. Started brewing chai, now building systems.
- 2023 MayFirst LangChain experiments
Searchable YouTube transcripts with FAISS and GPT-3.5.
- 2023 JanAppetite Avenue founded
Corporate café partnerships. The café your workplace runs on.
- 2021A run of Medium articles
Lazy loading images, Ember versus React, Google Sheets automation, a party analogy for auth.
- 2020 OctJoined Publicis Sapient · Bengaluru
Frontend, then lead engineer.
- 2017 DecHow hard can Angular 5 be?
A checklist PWA in four days, and the first Medium post.
- 2015Graduated · KLS Gogte Institute of Technology, Belgaum
B.E. Information Science. ACM chapter coordinator, Firefox Student Ambassador.
- 2014 AprJoined GitHub as indieNik
Here to make the web a beautiful place.