Work
With a case study
Data Engineering · Quant
Acumen
A backtester and live screener that replayed one trader's intraday NSE F&O strategy over ten years of minute data and proved, with a full audit trail, that it loses money. The whole repo exists to make an unwanted answer hard to disbelieve.
188,345 trades · 2,621 tests, 0 failures · 28 adversarial reviews
- Python
- pandas
- Parquet
- pytest
Agentic AI · Live
Samadhan
An AI civic agent that takes a complaint from a single photo to verified resolution — it files in the citizen's own language, tracks the statutory SLA, and autonomously drafts the escalation ladder up to an RTI when the deadline lapses.
Live on Cloud Run · 36 tests, green CI · Open311 export
- Next.js
- Genkit
- Gemini 2.5 Flash
- Firebase
Agentic AI · Production
Nistula Assistance
A WhatsApp AI host for a Goa villa company — live-priced quotes, staff job dispatch with SLAs, and an automated guest lifecycle. The model writes; seven deterministic checks decide whether what it wrote may leave the building.
1,813 tests · 7 code-enforced guardrails · 0 model-invented prices
- TypeScript
- Fastify
- Postgres
- Claude Sonnet 4.5
Infrastructure · Observability
LLM on Kubernetes
An open-source LLM on a single-node cluster where the interesting problem isn't getting it to run — it's knowing continuously whether it's still producing tokens fast enough. Ollama exposes no metrics, so I built the exporter.
8 metric families · 11 Grafana panels · alerts that fired on real degradation
- Kubernetes
- Prometheus
- Grafana
- Ollama
LLM Orchestration · Live
Smart Returns Resolver
Bilingual EN/AR support triage where an LLM reads the complaint and a hand-written 36-cell policy table decides the entitlement. The classifier returns its own escalation verdict — and the engine deliberately ignores it.
88.5% on a 78-dimension eval rubric · 0 pipeline failures
- Next.js
- TypeScript
- Zod
- gpt-4o-mini
Backend · API
Identity Reconciliation Engine
One HTTP endpoint that collapses a customer's scattered emails and phone numbers into a single identity. Instead of walking a graph, it holds the link depth at exactly one and makes merges pay for it — union-find with eager path compression.
2 SELECTs per lookup, no matter how many merges
- TypeScript
- Express 5
- Prisma
- PostgreSQL
Also built
Nistula Website
A direct-booking villa site wired live to the eZee PMS behind one swappable adapter, with Razorpay payment and server-side re-quoting on every write.
- Next.js 15
- Drizzle
- Razorpay
Thine Qualifier
A seven-question funnel that scores every signup and ranks the operator's outreach list. Two questions score backwards on purpose — it measures unmet pain, not seniority.
- React
- Vite
- Airtable
GEO Tracker
Asks Gemini the questions a real buyer would type, then scores whether a brand survives into the answers — a surface conventional SEO tooling cannot see.
- Python
- Streamlit
- Gemini
Cone Trading
A crypto trading backend: users sign up, fund a wallet through Razorpay or Stripe, buy and sell at live CoinGecko prices, track a portfolio and withdraw to a bank. 37 endpoints across 14 entities, with JWT auth and email two-factor.
- Java 17
- Spring Boot
- MySQL
Newsletter Brief Generator
Three article URLs in, one email-client-safe HTML brief out. Two of its four scrapers hang off generated CSS hashes rather than stable hooks, and the README says which ones will break first.
- Python
- BeautifulSoup
- Jinja2

