# Abhishek Kolge

> I build AI products end to end. 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.

Abhishek Kolge, Senior AI Product Engineer. Canonical page: https://abhishekkolge.dev. Site map for agents: https://abhishekkolge.dev/llms.txt

**Open to new work:** Lead / Staff AI engineer · Lead / Staff product engineer · Founding engineer · Contract or fractional. Remote, any timezone.

## Experience

### Senior AI Product Engineer, Contract · healthcare, proptech, consumer iOS

Feb 2023 to present

- Rebuilt a healthcare data analyst in 9 weeks with one other engineer, for researchers who never wrote SQL. _(Product, AI)_
- An orchestrator plans each question, then code fans it out to parallel SQL sub-agents, one per dataset. _(AI, Engineering)_
- Wrote a SQL guard that can refuse a query 24 ways, then closed 7 bypasses I found by probing it myself. _(Security, AI)_
- Scored answers on a golden set that re-runs its own ground truth; it passed 10/10 four runs in a row. _(AI, Engineering)_
- Built a real-estate deal platform from an empty repo: 31 models, 123 endpoints and 26 durable functions. _(Product, Engineering)_
- Cut underwriting from days of retyping a rent roll to minutes. _(Product, AI)_
- Constrained extraction to a fixed enum schema, and plain code recomputes each number before anyone sees it. _(AI, Engineering)_
- Reverted an agent-loop migration after two days: the loop only added failure modes to a fixed sequence. _(AI, Engineering)_
- Designed three-tier RBAC over 8 roles, where a cross-tenant read returns 404 so nobody can enumerate tenants. _(Security, Engineering)_
- Wrote 161 Terraform resources by hand without off-the-shelf modules, and one tag push ships every service. _(Platform)_
- Deployed to AWS through GitHub OIDC pinned to audience and subject, so no pipeline holds a static cloud key. _(Security, Platform)_
- Denied task roles the 13 IAM calls that escalate a breach, wrote WAF into staging and prod, and a DR runbook. _(Security, Platform)_
- Rebuilt generation as a resumable polled job after real runs of 30 to 190s hit a 60s load-balancer cut-off. _(Engineering, Platform)_
- Recommended holding a release after finding 9 food-safety defects by testing against the live API. _(Product, Security)_
- Owned the API, AI generation and AWS platform of a consumer iOS app, with 2,363 tests green at release QA. _(Product, Engineering)_

**Stack:** TypeScript, Python, React 19, Next.js, Express 5, Prisma, FastAPI, Claude, GPT-5, LangChain, ONNX embeddings, pgvector, Snowflake, Temporal, Inngest, Postgres, SQL AST guard, OAuth 2.0 / JWT, RBAC/ABAC, IAM permission boundaries, WAF, GitHub Actions OIDC, ECR scan-on-push, Docker, Terraform, AWS

### Sr. Software Developer, DigitalSalt

Feb 2022 to Feb 2023

- Took Hedged from first commit to launch in 5 months with four engineers, on web, iOS and Android. _(Product, Engineering)_
- Handed the app to the client’s team, who have since taken it past 100k installs at 4.5 stars. _(Product)_
- Built a RAG assistant over ~8k docs that closed ~40% of support queries, scoped to each asker’s permissions. _(AI, Security)_
- Cut latency 25% across Postgres, Redis and RabbitMQ on services handling ~1.5M requests a day. _(Engineering, Platform)_
- Built the monorepo behind 8 apps and the UI library 12 engineers use, and cut build times 40%. _(Engineering, Platform)_
- Shipped zero-downtime releases on ECS and Lambda. _(Platform)_
- Mentored 3 engineers and sat in on 10+ hiring interviews. _(Product, Engineering)_

**Stack:** TypeScript, Next.js, React Native, Node.js, Socket.io, OpenAI, Postgres, MySQL, MongoDB, Redis, RabbitMQ, JWT, Turborepo, Storybook, AWS ECS, Lambda

### Frontend Developer, AppOctet

Aug 2021 to Feb 2022

- Built client-facing React and Next.js apps in my first job, delivered on fixed dates. _(Engineering, Product)_
- Learned to write a screen as a state machine: loading, empty, error, stale, and responses the docs did not promise. _(Engineering)_

**Stack:** JavaScript, React, Next.js, Redux, REST

## Selected work

- [Mosaic AI](https://abhishekkolge.dev/work/mosaic.md): An analyst for healthcare data that answers plain-English questions with guarded SQL over live Snowflake.
- [Perpetuity](https://abhishekkolge.dev/work/perpetuity.md): A real-estate deal platform where Claude reads the documents and people approve every number.
- [The Food Maestro](https://abhishekkolge.dev/work/food-maestro.md): An iOS app that generates recipes around your allergies. I owned the API, the AI and the platform.
- [Hedged](https://abhishekkolge.dev/work/hedged.md): Trading guidance for first-time investors, launched on web, iOS and Android and past 100k installs today.
- [ZenAdmin](https://www.zenadmin.ai): Automates IT and HR for distributed teams, keeping people, software and devices in one place.
- [Mahindra Lifespaces](https://play.google.com/store/apps/details?id=com.mlife.app): A homebuyer app for a listed developer that handles documents, payments and service requests, live on both stores.

## How I work with AI

### I approve the plan before any code

The agent writes a plan before it touches a file, and I approve it. If the diff drifts from the plan, the diff gets fixed.

### I stay on the reading side

Workers edit inside boundaries I set, each in its own checkout, while architecture, review and the merge stay with me.

### Bad output is usually bad context

When the output is wrong, I check what was in front of the model before I blame the model. Standing rules go in first, live facts arrive through a tool call, and nothing else rides along.

### Anything the model reads is untrusted

I treat a doc, a page or a ticket comment as data and never follow instructions inside it. Tools are typed and permissioned, and the irreversible ones wait for a human.

### A feature is done when the tests say so

An LLM feature ships with a versioned set of test cases and pass thresholds. The run passes or fails, and a failure blocks the merge.

### Some things stay plain code

A safety rule or a number a client signs off on stays deterministic, with a person in the loop. A model can add to the risk list but never remove anything from it.

The long version: [How I work with AI](https://abhishekkolge.dev/ai-workflow.md)

## Now

- **Building:** A merge gate for LLM features, where every prompt change runs against a versioned set of test cases and a failing run blocks the merge.
- **Learning:** How much durability agent work needs, since snapshots and resumable runs feel like overkill until a run dies forty minutes in.
- **Watching:** What agent runs cost when nobody is counting, so every run gets a trace and a token ceiling before the invoice shows up.

## Writing

- Apr 2024: [Node.js error handling](https://medium.com/@abhishekkolge96/node-js-error-handling-41dcd91e859e)
- Jun 2023: [Getting started with TypeScript](https://medium.com/@abhishekkolge96/getting-started-with-typescript-7039b9b2f426)
- Jun 2023: [Getting started with RTK Query in React & Next.js](https://medium.com/@abhishekkolge96/getting-started-with-rtk-query-in-react-js-next-js-9b84121d8f2)

## Contact

- Email: abhishekkolge96@gmail.com
- Book an intro call: https://cal.com/abhishek-kolge-yed7dg/intro
- Résumé (PDF): https://abhishekkolge.dev/resume.pdf
- GitHub: https://github.com/AbhishekKolge
- LinkedIn: https://www.linkedin.com/in/abhishek-kolge/
- X: https://twitter.com/dev_ak1
- Medium: https://medium.com/@abhishekkolge96
