I build systems that have to be right, not just impressive — evaluation harnesses, retrieval pipelines, graph models, and the guardrails around them. Every number below is reproducible from a clean clone, and where one can't be, the repo says so instead of quoting it.
Three projects, each with a measured result rather than a claimed one.
![]() |
Self-hosted LangSmith alternative: trace every LLM call, version prompts and datasets, run RAG and LLM-judge evals against any provider, block regressions in CI. One The hard part — org → project → RBAC with per-project quotas designed in from the first migration. Multi-tenancy retrofits are where authorization bugs live. |
![]() |
Nine-agent LangGraph pipeline: plan sub-questions, search in parallel, cross-check every claim against ≥2 sources, return a cited report with per-claim confidence. Runs end to end on Ollama for $0. The hard part — its own README flags the Docker-socket-mounted sandbox as a real container-escape vector and explains why it isn't fixed yet, rather than hiding it. |
![]() |
An open benchmark for Indian regulatory document understanding, built on SEBI enforcement orders: five tasks, a pip-installable harness, a HuggingFace dataset. Everything else here is a system I built; this is an instrument others measure their systems with. The hard part — designing tasks a regex can't win. SEBI orders quote the noticee's own settlement pleas in phrasing identical to the ruling, so the first currency amount in a document is the wrong answer 46.7% of the time. |
Maintainer-reviewed work outside my own account. DenseGATv2Conv lands directly on the graph work above.
| PR | Project | |
|---|---|---|
| Merged | #1386 — surface the wrapped exception class name in blank PdfminerException messages |
pdfplumber |
| Open | #10755 — add DenseGATv2Conv |
PyTorch Geometric |
| Open | #10759 — fix KeyError in separate() for attribute-less heterogeneous node stores |
PyTorch Geometric |
| Open | #10757 — clarify radius/radius_graph CPU vs. GPU behaviour in docs |
PyTorch Geometric |
| Open | #10761 — add Shapes docstrings to TransformerConv/SplineConv |
PyTorch Geometric |
- elliptic-gatv2-aml — a published negative result: Random Forest (0.8085 illicit-F1) beats my GATv2 (0.4266). The finding is that the fancy model lost.
- query-injection-bench — found and fixed a critical read-only bypass in my own Cypher guard, then measured it.
- recruit-voice-agent — the results doc separates fill rate from accuracy, names the latency target it missed, and labels every unrun measurement as unrun.
10 more projects — eval harnesses, RAG, graph sims, causal inference, MCP, data-quality monitoring (click to expand)
| Project | What it does | Demo |
|---|---|---|
| llm-regressor | The library + CI gate. Model-agnostic regression testing for prompt and model changes; a reusable GitHub Action gates a PR in five lines. 100% statement and branch coverage, ~2s with no API key | — |
| querypilot-v2 | English → SQL with schema-aware RAG (retrieves the 3 relevant table chunks, not a full schema dump). Write-safety is a SQLite PRAGMA query_only + authorizer at the DB layer, so a prompt injection that beats every earlier check still can't write |
— |
| autonomous-data-scientist | Give it a CSV and "predict churn" — an 11-agent pipeline cleans, explores, engineers features, tunes, evaluates, ships a report. Generated pandas runs through an AST whitelist into a locked-down subprocess (import guard, path guard, rlimits, wall-clock kill). 80 tests | — |
| Sebi-Explorer | Analytics over real public SEBI enforcement orders: violation classification, penalties, entity network, timeline — the corpus problem that motivated indic-reg-bench |
▶ |
| rail-graph | Graph analysis of a synthetic 600-station Indian rail network — PageRank, betweenness, k-shortest paths, resilience simulation. The sim re-runs betweenness per removed node, so the naive version never finishes | ▶ |
| nse-daily-monitor | Scheduled data-quality monitoring of the NSE bhavcopy — coverage, OHLC bounds, null rates and breadth against a trailing 60-day baseline, opening a GitHub issue when a check fails. Publishes derived metrics only, never a reconstructable quote | ▶ runs |
| causal-lens | Four independently usable methods for "did this intervention actually cause this outcome" — A/B testing (frequentist + Bayesian + CUPED), difference-in-differences, synthetic control, uplift modelling | — |
| indian-markets-mcp | MCP server exposing Indian market and regulatory data from official sources only. latest_day() resolves against IST, not the host clock, so a UTC-hosted server doesn't report yesterday's close as today's every evening |
— |
About the demos: they run on Streamlit's free tier, so an idle app first shows a "Zzzz — wake it up?" button; one click and roughly 40 seconds brings it back. Every one also runs locally from its repo's Quickstart with no API key.
▶ demos are on free tiers and sleep when idle — the first click wakes them, which takes about a minute.
Python · PyTorch · PyTorch Geometric · LangGraph · scikit-learn · XGBoost · FastAPI · Neo4j · PostgreSQL · Redis · Kafka · ChromaDB · Docker · GitHub Actions
Open to AI/ML roles — Mumbai or remote.
siddharthgaur200304@gmail.com ·
LinkedIn ·
Portfolio




