- On the screenMy desktop
- ReadingThe Design of Everyday Things
- Lamp
I’m Rajveer Singh, and I build AI products end to end.
I’m a software engineer in New Delhi. What I’ve shipped is on the projects page; this one is the rest: how I got here, how I work, and what I do when I’m not working.
I do my best work on small teams building AI products, where an engineer carries a feature from the first screen to the server it runs on, then watches it run. So I work as a full-stack and product engineer, and I design the interfaces I build, in Figma first and then in code. I also like working fast: in one week, our team took an AI engine from a plan to the finals of Cognizant’s Technoverse 2.0, one of 24 teams of 5,600+.
a lake you can fish in an AI chat on npm voice rooms at iabtm do not unplug first place, twice finalist, top 24, in one week chess the book on my desk sherlock holmes
Story
How I got here
I started in August 2024 with Harkirat Singh’s 100xDevs Cohort 3.0 and shipped my first project two weeks later. That December 10xanswers went on npm, and strangers started installing it: 13,000+ downloads since. In 2025 Safire took first place at HackWIE 3.0 and Code Kshetra 2.0, its moderation behind a load balancer I wrote in the eight days between the two.
Then Modulus, whose product I built from its first screen; Wii Hop, a US deals app, most of its web app and its data model; and a two-day take-home, Kernel, that became my job at IABTM, where I now run the platform end to end for 3,000+ members. In 2026 the same team took HyperPersona to the finals of
Cognizant’s Technoverse 2.0.
Before all that, I was learning. I wrote Python on a phone through lockdown because I didn’t have a laptop. The one thing from then that mattered was a bill calculator for my father, who logged our electricity meter in a paper diary. Out of curiosity I gave it a window with Tkinter, Python’s GUI library, so he could log each reading himself. It ran on 22 months of his readings, and it was the first time something I wrote did a real job for someone.
I like the two ends of the stack most: the interface, where every detail is a decision, and the infrastructure, where things either stay up or they don’t. AI goes in the middle, treated like any dependency that can fail.
Timeline
The road so far
- Aug 2024Joined Harkirat Singh’s 100xDevs Cohort 3.0
- Dec 2024Put 10xanswers on npm; 13,000+ downloads since
- Jan 2025First place at HackWIE 3.0, with Safire
- Feb 2025First place at Code Kshetra 2.0, with a load balancer written in the eight days between
- Apr 2025Frontend engineer at Modulus: the product from its first screen
- Jul 2025Software engineer at Wii Hop: most of the web app, and its data model
- Aug 2025Led web development for my college’s IEEE chapter
- Sep 2025A two-day take-home, Kernel, became my job at IABTM
- May 2026Finalist at Cognizant Technoverse 2.0, top 24 of 5,600+ teams
- Jun 2026A six-round audit of IABTM’s realtime layer: 173 issues, the critical ones fixed
- Aug 2026IABTM’s Stripe billing rebuilt and live, counting every payment once
- Sep 2026Built this site, and an AI me that answers for my work
How I work
Every change, start to finish
- 01
Read before I change anything
A codebase first gets read and written down: what talks to what, where the state lives, what is already broken. Then the plan.
173 issues found in a six-round audit of IABTM’s realtime layer, 41 critical: a room anyone could join, a 100 MB buffer that could take the server down, tokens printed to logs. The critical ones shipped fixed, tagged as a baseline to roll back to. The audit
- 02
Design for what breaks
Before the happy path: the retried request, the duplicate webhook, two servers running the same job, the dependency that goes down mid-call.
Once Stripe events counted once by an insert-first ledger, seven cron jobs that take a lease before they run, socket rooms fanned out over Redis pub/sub that fall back to memory if Redis drops, rate limits kept in Redis so they hold across processes, and money that moves only inside a database transaction. The ledger and the leases
- 03
Build on contracts
Typed schemas at every boundary, lint rules and hooks that refuse the wrong thing. Coding agents work in parallel branches against those contracts; I make the design calls and read every diff before it lands.
Every diff read before it lands, mine or an agent’s: strict TypeScript, a schema on every tool an agent can call, and CI that has to pass first.
- 04
Test every layer
Unit tests for logic, a real browser for flows, evals for anything with a model in it, and a load test before I trust a number about speed.
800+ unit tests on every push here, and 84 more in a real browser against the production build, every route checked for errors, structured data and its security headers. Evals that fail the build under 90%. At IABTM, billing is tested against Stripe itself, with real signatures. The tests and evals
- 05
Let CI say no
Every repo I run has a pipeline that can refuse a change, so the checks never depend on someone remembering them.
2 pipelines IABTM’s, CI on every pull request and a deploy that health-checks itself and rolls back; this site’s, format, lint, types, 800+ unit tests, 84 browser tests and a production build on every push, IndexNow on each deploy and a daily check that opens its own GitHub issue when a key fails. The deploy, written up
- 06
Ship with a way back
Every branch gets a preview to try. Every release can be undone in one step, and knows to undo itself.
90 s for a release to prove it’s healthy, or code, dependencies and process roll back on their own. Release tags with a written rollback, a kill switch on every scheduled job, migrations that start as dry runs. The rollback, in IABTM’s write-up
- 07
Measure, then claim
No number on this site that nothing measured. Change one thing, measure again, keep it only if it paid.
460 ms for the home page to paint, lake and all, down from 1,656 on a production build; and the AI me’s retrieval measured on 35 questions before it shipped, with the vector half switched off because it didn’t pay. How the lake stays cheap
- 08
Watch it run
Shipping is the middle. Nothing should break quietly, and when something does, the fix covers every case like it, not only the one that was reported.
100% uptime on IABTM since July, with real-user speed measured in the field, billing tracked on the server where ad blockers can’t undercount it, and an alert on every failure along a path that matters.
- 09
Finish it, with taste
The last part nobody asks for and everyone notices: the detail that makes it feel made, not assembled. It works by keyboard and screen reader, it’s found by search and by AI, and it holds on a 320 px phone.
4.5:1 contrast on every word you read here, WCAG 2.2 targets and focus, a strict content security policy on every route, 100 on Lighthouse SEO, and a markdown copy of every page for AI crawlers. Read this page as an AI does
Off-screen
When I’m not coding
Chess
Chess, when I’m away from the screen. Same habit as debugging: read the whole board before you move.
Matiks
Timed mental-maths duels on Matiks, against strangers. No calculator, and no hiding.
Investing
I invest a little. Compounding is the whole idea, in code and out of it.
Sherlock Holmes
The books, the films and the series. For the method, not the mystery: notice what everyone skips, and stay calm on the clock.
Chess and Matiks scratch the same itch as a hackathon: putting myself on a clock, on purpose, to find out where the edge is.
Contact
Say hello
Rajveer Singh
Software engineer, New Delhi
- Emailrajveergreets@gmail.com
- CallPick a time
- RésuméView itDownload
- GitHub@rajveeerr
- LinkedInin/rajveeerr
- X@rajveeerrsingh
Open to conversations.