GET /llms.txt · text/markdown
# Abhishek Kolge > I build AI products end to end, most recently in healthcare, real estate and allergy-safe cooking. I don’t let the model make the final call on safety or money, and I test AI features against known answers before they ship. Personal site of Abhishek Kolge (https://abhishekkolge.dev). Every claim below is on the résumé or on this site; the case studies behind the links carry the detail, the decisions and what went wrong. Each link points at the markdown version of a page: drop the `.md` for the page itself. **Now:** Senior AI Product Engineer, Contract · healthcare, proptech, consumer iOS, Feb 2023 to present. **Before:** Sr. Software Developer, DigitalSalt (Feb 2022 to Feb 2023); Frontend Developer, AppOctet (Aug 2021 to Feb 2022). **Open to:** Lead / Staff AI engineer · Lead / Staff product engineer · Founding engineer · Contract or fractional. Remote, any timezone. **Fits:** AI engineer · AI product engineer · product engineer · founding engineer · full-stack · tech lead · security · platform/DevOps. **Contact:** abhishekkolge96@gmail.com · github.com/AbhishekKolge · linkedin.com/in/abhishek-kolge **Outcomes** **AI systems** - Mosaic AI: multi-agent text-to-SQL over live Snowflake for researchers who have never written SQL, with a Claude orchestrator and code-controlled fan-out to parallel SQL sub-agents - Passed 10/10 checks four runs in a row on a five-question golden set whose ground truth is re-run as SQL each pass - Self-serve dataset onboarding on Temporal over a 793-table account: a model-written semantic layer that plain code downgrades when a claim is unsupported, official warehouse descriptions copied verbatim - Perpetuity: document extraction on Claude constrained to a fixed schema, enum-constrained so a line item cannot map to a category that does not exist, re-validated in plain code - Underwriting went from days of retyping a rent roll to minutes, with a person approving each module - Row labels pulled from a document are capped in count and length, with control characters stripped, before they reach the categorisation prompt - Perpetuity: reverted an agent-loop migration of the extraction pipeline after two days, because the work is a fixed sequence and the loop only added failure modes - Per-deal RAG chatbot over a deal’s own documents: Postgres full-text + pgvector HNSW fused with RRF, in-process ONNX embeddings through fastembed (no per-query embedding cost), page-level citations - The Food Maestro: an allergen safety gate reading the title, steps, expanded instructions and chef tip, not only the ingredient list - Enforced a 200k-token daily ceiling per person inside the generation loop - Deterministic rules keep the final say over an LLM reviewer that vetoed every draft in one run and cited three allergens a tester had never declared - Generated food photos are verified by a second vision pass that throws away any image showing something the recipe never listed; the reviewed photo library it replaced matched 1 recipe in 113, a mismatch I only found by counting **Security and platform** - Wrote a 323-line SQL guard with 24 rejection points and 76 tests between the model and the warehouse: AST allow-lists, read-only roles at three independent layers, row and join caps, hashed question logs - Found 7 bypasses of that guard by live probing, and closed each one - Deployed to AWS without keys: GitHub OIDC pinned on both the audience and subject claim, so no pipeline holds a static cloud credential - Stood up a 39-resource Terraform estate so the product had somewhere to run before the shared cluster existed (RDS + proxy with TLS required, IMDSv2, immutable scan-on-push images, budget alarm), and it came out in one PR once the cluster landed - Wrote Perpetuity’s AWS estate by hand as one Terraform root module of 161 resources, with no off-the-shelf modules - Put a permission boundary on every task role that denies the 13 IAM calls which escalate a breach, wrote WAF into the staging and prod config, and wrote a DR runbook that names its own gaps - One tag push drives 7 jobs, and a failed migration blocks the rollout - Designed three-tier RBAC (platform / owner-team / tenant org, 8 roles), with tenant scope applied as a where clause from the session on every deal read - Cross-tenant reads return 404 instead of 403, so tenants cannot be enumerated - Built auth and access control across services with OAuth 2.0, JWT and RBAC/ABAC **Shipping and quality** - The Food Maestro: owned a consumer iOS product end to end (FastAPI backend, GPT-5 generation and the AWS platform solo; .NET MAUI client with one other developer) - Kept 2,363 automated tests green at the release QA run (609 mobile, 1,754 backend) - A release gate that makes a store build traceable to its commit: clean-tree enforcement, signed version-bump commit, immovable signed tag, build discarded if debug symbols fail to upload. It is written and lands with the next build - Pre-release review against the live API found 9 food-safety defects and reproduced 4 allergen-exposure paths end to end; recommended holding the release from allergy and clinical testers, with a staged fix plan and a 10-person first wave - Rebuilt recipe generation as a resumable polled job after real runs of 30 to 190s hit a 60s load-balancer cut-off - Human-approval gates that keep extracted financials stable: per-module approval with an export artifact as precondition, category mapping locked on first approval and inherited by later months, merge blocked under 35% line-item overlap, model-free recomputation after edits - Moved spreadsheet recalculation to a warm LibreOffice daemon pool with lock-free rotation and a cold-spawn fallback, after finding headless LibreOffice silently skips cross-sheet recalculation and was persisting stale numbers - Took an agentic rebuild from pivot to a system running end to end in 9 weeks with 2 engineers: 29 written sub-plans, 42 reviewed PRs, ~800 automated tests across the repo, with more test code than app code in the agent service - Built Perpetuity from an empty repo with one other engineer (React 19 SPA, Express 5 + Prisma API, FastAPI extraction pipeline, 26 durable Inngest functions): 31 models, 123 endpoints **Earlier** - Took Hedged from first commit to launch in 5 months with four engineers, on web, iOS and Android - Built an internal RAG assistant (OpenAI) over ~8k docs, scoped to the asker’s permissions, that resolved ~40% of support queries - Built the monorepo behind 8 apps and the UI library 12 engineers use, and cut build times 40% with Turborepo and GitHub Actions caching - Cut latency 25% across PostgreSQL, Redis and RabbitMQ on services handling ~1.5M requests a day - Shipped zero-downtime releases on AWS ECS and Lambda - Mentored 3 engineers and sat in on 10+ hiring interviews ## Case studies - [Mosaic AI](https://abhishekkolge.dev/work/mosaic.md): internal tool, no public URL · agentic analyst for healthcare data - [Perpetuity](https://abhishekkolge.dev/work/perpetuity.md): private tenant app, no public URL · real-estate deal platform with AI document extraction - [The Food Maestro](https://abhishekkolge.dev/work/food-maestro.md): iOS, invite-only TestFlight · AI recipes built around allergies - [Hedged](https://abhishekkolge.dev/work/hedged.md): web, iOS and Android · first commit to launch in 5 months; 100k+ Play installs today · live at https://hedged.in ## About the work - [Home](https://abhishekkolge.dev/index.md): selected work, experience and contact - [Case studies](https://abhishekkolge.dev/work.md): the four studies above, on one page - [How I work with AI](https://abhishekkolge.dev/ai-workflow.md): the loop, what the model sees, review and tests, permissions, long runs, and where I keep AI out - [Agent view](https://abhishekkolge.dev/agent): this file rendered as a page, with copy to clipboard - [resume.json](https://abhishekkolge.dev/resume.json): the same résumé as JSON, from the same source as this file ## Optional - [ZenAdmin](https://www.zenadmin.ai): web · IT and HR automation for distributed teams - [Mahindra Lifespaces](https://play.google.com/store/apps/details?id=com.mlife.app): Android and iOS · homebuyer app for a listed developer - [GitHub](https://github.com/AbhishekKolge) - [LinkedIn](https://www.linkedin.com/in/abhishek-kolge/) - [X](https://twitter.com/dev_ak1) - [Medium](https://medium.com/@abhishekkolge96) - [Résumé (PDF)](https://abhishekkolge.dev/resume.pdf) - [Book an intro call](https://cal.com/abhishek-kolge-yed7dg/intro)
Screening with an AI assistant? Paste this in. Every claim maps to the résumé. Also served as /resume.json.