# Piyush Gambhir > Piyush Gambhir is a Software Engineer II building production voice AI, agent systems, browser automation, telephony infrastructure and developer tools. Piyush Gambhir is a Software Engineer II based in Gurugram, India. This file is the concise, canonical guide to the portfolio's public pages and machine-readable resources. ## Core pages - [Home](https://www.piyushgambhir.com/): Overview, selected work, and recent writing - [About](https://www.piyushgambhir.com/about): Professional profile and areas of expertise - [Projects](https://www.piyushgambhir.com/projects): Software, AI, infrastructure and developer-tool projects - [Writing](https://www.piyushgambhir.com/blogs): Technical articles and field notes - [Voice agents in production](https://www.piyushgambhir.com/voice): The six-part series on running voice agents, in reading order, with the systems behind it - [Glossary](https://www.piyushgambhir.com/glossary): Short definitions of the terms behind the work, from coding agents to voice agents to operations tooling - [Resume](https://www.piyushgambhir.com/resume): Experience, skills, and education ## Projects - [This Site](https://www.piyushgambhir.com/projects/this-site): An editorial portfolio built in Next.js, with an odometer loader, gated ambience, route curtains, and a content system that turns MDX into a case study. - [Document OCR](https://www.piyushgambhir.com/projects/document-ocr): Local-first OCR for passports and Indian KYC documents, on RapidOCR and PP-OCRv5. Packaged for Python, HTTP, Docker and Node.js. No image leaves your network. - [PDF Everything](https://www.piyushgambhir.com/projects/pdf-everything): A unified PDF console and REST API with nineteen tools for conversion, rendering, extraction, and document workflows. - [CubeAPM CLI](https://www.piyushgambhir.com/projects/cubeapm-cli): Command-line investigation of distributed traces, PromQL metrics and LogsQL logs in CubeAPM. A single Go binary for incident work without leaving the terminal. - [Elasticsearch CLI](https://www.piyushgambhir.com/projects/es-cli): A Go CLI for Elasticsearch clusters, indices, documents, Query DSL and SQL. Cluster health, index management and ad-hoc querying from one binary. - [Grafana CLI](https://www.piyushgambhir.com/projects/grafana-cli): Command-line access to Grafana dashboards, data sources, alerts, folders and annotations. Scripted dashboard management and alert triage without the web UI. - [Jenkins CLI](https://www.piyushgambhir.com/projects/jenkins-cli): A Go CLI for Jenkins jobs, builds, pipelines, nodes, queues and plugins. Trigger builds, stream logs and inspect queue state from a terminal or a script. - [Jira CLI](https://www.piyushgambhir.com/projects/jira-cli): A fast command-line interface for Jira issues, JQL, transitions, boards and sprints. Triage and bulk updates at the speed of typing rather than clicking. - [Nginx Proxy Manager CLI](https://www.piyushgambhir.com/projects/nginxpm-cli): Command-line management of Nginx Proxy Manager proxy hosts, certificates, streams, users, and settings, so reverse-proxy changes can be scripted and reviewed. - [Telephony Voice Simulator](https://www.piyushgambhir.com/projects/telephony-voice-simulator): A local-first test platform for voice agents, AMD, IVRs, PBX routing, live carrier behavior, recordings, and automated grading. - [The Noir Game](https://www.piyushgambhir.com/projects/the-noir-game): A voice-only detective game on LiveKit, Deepgram, NVIDIA NIM and ElevenLabs, where the whole interface is a conversation and there is nothing to click. - [Perch](https://www.piyushgambhir.com/projects/perch): A private, local-first browser extension for organizing, stashing and restoring tab groups, built with WXT and React. No account, no server, no telemetry. - [Telephony](https://www.piyushgambhir.com/projects/telephony): A provider-agnostic NestJS backend for SMS, voice, verification, lookup, phone numbers and A2P 10DLC. Product code talks to a capability, not a vendor SDK. - [Conversational Voice Agents](https://www.piyushgambhir.com/projects/conversational-voice-agents): A provider-neutral control plane with interchangeable LiveKit and Pipecat workers for production voice agents. - [Infra Lab](https://www.piyushgambhir.com/projects/infra-lab): Ready-to-use Docker Compose environments for databases, queues, search, observability, caches, and vector stores. - [FastAPI Boilerplate](https://www.piyushgambhir.com/projects/fastapi-boilerplate): A structured FastAPI starter with Poetry, Docker Compose, consistent response conventions and optional LangChain helpers. The layout I stopped rewriting. - [Fill Data Figma Plugin](https://www.piyushgambhir.com/projects/fill-data-figma-plugin): A Figma plugin that fills selected vehicle-listing layers from live Google Sheets inventory, replacing copy-paste across dozens of near-identical mockups. - [Google Reviews Scraper](https://www.piyushgambhir.com/projects/google-reviews-scraping): A free, resumable Google Maps review scraper on Playwright and SQLite, with CSV and JSON export and checkpointing so an interrupted run resumes cleanly. - [Reckon](https://www.piyushgambhir.com/projects/reckon): A read-only agent workspace for investigating production incidents across observability, CI/CD, cloud, databases, and source control. - [Movie Ticket Booking Webapp](https://www.piyushgambhir.com/projects/movie-ticket-booking-webapp): A hackathon movie booking app on Next.js and PostgreSQL, with a TMDB catalog, trailers, showtimes and a seat picker. Payments were out of scope. - [QuizItNow](https://www.piyushgambhir.com/projects/quiz-it-now): Turn any content into quizzes with AI. Generate assessments from text, URLs, PDFs and YouTube videos, with difficulty levels you control. - [Typesense Dashboard](https://www.piyushgambhir.com/projects/typesense-dashboard): A control plane for Typesense collections, search behavior, migrations and cluster health, in one browser interface instead of curl and Postman. - [Yoink](https://www.piyushgambhir.com/projects/yoink): A media extraction platform with a browser extension, a web dashboard, Lambda streaming downloads, and one backend for auth, billing and analytics. ## Writing - [Formatting Belongs to Tools, Not Code Reviews](https://www.piyushgambhir.com/blogs/code-formatting): One formatter per language, pinned to a version, enforced at save, commit and CI. The rules I apply across my JavaScript, TypeScript and Python repos, and why I stopped tuning the options. - [I Stopped Prompting and Started Specifying: How I Work With Coding Agents](https://www.piyushgambhir.com/blogs/cursor-100x-practices): The practices that decide whether a coding agent helps or costs you time: context budgets, spec-first delegation, parallel runs, verification gates, and knowing when to stop prompting. - [Your Docs Have a Second Reader Now, and It Does Not Scroll](https://www.piyushgambhir.com/blogs/docs-are-the-new-ai-knowledge-base): Practical ways to make documentation readable by agents: llms.txt, plain-markdown endpoints, stable URLs, answer-first pages, and doc servers. With what I could verify and what I could not. - [Everything I Ship Is a Wrapper. The Model Was Never the Product.](https://www.piyushgambhir.com/blogs/emergence-of-ai-wrappers): What a product built on someone else's model actually has to own: the workflow, the integrations, the evaluation harness, and the failures the provider will never see. - [The Next.js Naming Conventions I Actually Follow](https://www.piyushgambhir.com/blogs/next-js-naming-conventions): I audited twelve of my own Next.js repos before writing this down. Here are the naming rules that survived the audit, the two places my repos disagree with each other, and the rules the framework decides for you. - [AI Made Building Faster. We Still Have to Decide What to Build.](https://www.piyushgambhir.com/blogs/ai-made-building-faster-we-still-have-to-decide-what-to-build): Small teams can ship more with AI. But unclear requirements still send us back to rebuild. My thoughts on planning, prototypes, and engineering judgment. - [One API, Many Carriers: Designing a Provider-Neutral Telephony Layer](https://www.piyushgambhir.com/blogs/one-api-many-carriers-provider-neutral-telephony): Product code should talk to a capability, not a vendor SDK. Lessons from running Twilio, Vonage and Telnyx behind one interface. - [STIR/SHAKEN, CNAM, and Why Nobody Answers Your AI's Calls](https://www.piyushgambhir.com/blogs/stir-shaken-cnam-and-why-nobody-answers-your-ai-calls): Your agent can be flawless and still show up as Spam Likely. What I learned about caller identity and number reputation running outbound voice agents. - [The Real Cost of a Voice Agent Minute](https://www.piyushgambhir.com/blogs/the-real-cost-of-a-voice-agent-minute): Our infrastructure cost fell from $0.26 to $0.10 per minute. How to meter each component, compare operating costs, and protect conversation quality. - [Answering-Machine Detection Is Turn-Taking's Evil Twin](https://www.piyushgambhir.com/blogs/answering-machine-detection-is-turn-takings-evil-twin): Before a voice agent can decide when to speak, it has to decide whether anyone is there. Why AMD is hard, and why you cannot test it by calling your own phone. - [Turn-Taking Is the Hardest Problem in Voice AI](https://www.piyushgambhir.com/blogs/turn-taking-is-the-hardest-problem-in-voice-ai): Callers forgive a mediocre answer long before they forgive being interrupted. Notes on endpointing, latency and barge-in from real phone lines. - [Migrating Production Voice Agents from Vapi to LiveKit](https://www.piyushgambhir.com/blogs/migrating-production-voice-agents-from-vapi-to-livekit): We ran dealership voice agents on Vapi and now run them on LiveKit. What we did before the migration so it would not become a rewrite, and what it did to cost. - [Issue Tracking Is Dead. The Ticket Is Just a Receipt.](https://www.piyushgambhir.com/blogs/issue-tracking-is-dead): I pulled 18 months of my own commit history to test whether tickets still do anything. Here is what the data shows, including the part that contradicts me. - [What Is the Singularity? Why Sam Altman and Elon Musk Say We Are Already In It](https://www.piyushgambhir.com/blogs/what-is-the-singularity): What the singularity means, why Altman and Musk argue it has already started, and which parts of that claim survive contact with the evidence. - [Claude Code: The AI Coding Assistant That Lives in Your Terminal](https://www.piyushgambhir.com/blogs/claude-code): What Claude Code actually does in a terminal, how it differs from an editor plugin, and where an agent that reads and edits your repo earns its keep. - [Claude Cowork: AI That Actually Does the Work on Your Computer](https://www.piyushgambhir.com/blogs/claude-cowork): Claude Cowork runs real work on your machine rather than suggesting it. What that changes, where it holds up, and the tasks worth handing over first. - [Twilio A2P 10DLC: Brands, Campaigns, Costs, Throughput, and Compliance](https://www.piyushgambhir.com/blogs/twilio-a2p-brands-campaigns-costs-throughput-compliance): A comprehensive guide to Twilio’s A2P 10DLC system, including Brand and Campaign types, associated costs, throughput limits, and compliance requirements. - [The Real Bottleneck in Software Development Isn’t Writing Code](https://www.piyushgambhir.com/blogs/the-real-bottleneck-in-software-development-isnt-writing-code): Typing was never the slow part. Where the time actually goes in shipping software, and why writing code faster moves the needle less than you would hope. ## Machine-readable resources - [Full site context](https://www.piyushgambhir.com/llms-full.txt): Long-form text from the public articles and projects - [XML sitemap](https://www.piyushgambhir.com/sitemap.xml): Canonical indexable URLs - [RSS feed](https://www.piyushgambhir.com/feed.xml): Latest writing - [Robots policy](https://www.piyushgambhir.com/robots.txt): Crawler access rules ## Optional - [GitHub](https://github.com/piyush-gambhir): Public source code and open-source work - [LinkedIn](https://linkedin.com/in/gambhirpiyush): Professional profile