I'd rather show working systems than list skills. Everything here runs and is inspectable — the eval scores below are re-measured and republished by CI on every push, not typed in by hand:
| Working system | What it demonstrates | Source |
|---|---|---|
| FrameSleuth agent | The open-source MCP server behind FrameSleuth — local video → structured Context Bundle, no frames leaving the machine. I wrote the initial commit and most of what followed. | repo · site |
| ask-santosh | Retrieval-augmented Q&A over my writing, gated in CI two ways: a key-free retrieval gate (recall@k · MRR over a labelled corpus) that runs on every push, and a DeepEval answer suite (faithfulness · answer-relevancy · contextual-relevancy) when a judge key is configured. | repo · gate |
| Multi-agent on Databricks | Production multi-agent orchestration, beyond Genie code | repo · write-up |
| This profile | The section below is regenerated weekly from my real GitHub activity by a scheduled workflow. Its footnote states how each run was produced, so the claim can't drift from what actually ran. | workflow · script |
- graph-over-gold-agent — Graph over Gold: governed multi-hop routes vs naive text-to-SQL, end to end (+3 more)
- kappa-iot-temperature — chore: add Apache-2.0 LICENSE
- delta-live-table-databricks-sample-use-case — chore: add Apache-2.0 LICENSE
- delta-lake-databricks-sample-use-case — chore: add Apache-2.0 LICENSE
- santoshshinde2012 — docs(readme): correct FrameSleuth credit, refresh stale content (+5 more)
Built from my last 21 days of public GitHub activity · workflow · updated Aug 24, 2026
FrameSleuth is a local-first AI system that converts screen recordings into structured, evidence-cited context bundles for coding agents. Record a bug or a feature demo — it reads every frame, transcribes the narration, and captures console and network activity, then hands your agent repro steps, error evidence, and code candidates it can act on.
I build and maintain framesleuth-agent — the open-source Python MCP server underneath it. Local video in, structured Context Bundle out, over MCP. It's public, so you can read the pipeline rather than take my word for it: keyframe extraction, transcript alignment, bundle contract, Docker image built from a pinned lockfile in CI.
- End-to-end systems — not the model in isolation, the full pipeline. Most of the value (and most of the bugs) live between the boxes on the architecture diagram.
- Tradeoffs that matter to the business — Lakebase vs Lakehouse, batch vs streaming, RAG vs fine-tuning. These show up in latency, cost, and risk — not just engineering preference.
- The unglamorous production work — eval harnesses, observability for non-deterministic systems, drift, and guardrails. The stuff that separates a demo from something you can trust on a Tuesday morning.
Shipping something is one thing. Keeping it working for five years, while people build on it, is a different discipline — and it's the half of "Lead" that a commit graph doesn't show.
- Five years of upkeep, not a weekend project.
node-boilerplatehas been maintained since March 2021 and is still on a current Node CI matrix, wired to SonarCloud, Snyk, CodeQL and njsscan. 82 forks depend on it staying correct. - Dependencies stay current. 274 merged upgrade and security PRs — almost all automated, which is the point: the pipeline does the work and I keep it unblocked.
- Breadth across a team, not one repo. Beyond my own projects I contribute
across
thestackhub1— the FrameSleuth agent, a voice agent, a logistics platform, and the web surfaces around them.
Being straight about the limits: this is sustained maintenance and dependency discipline, not a large contributor community. One external contributor, three issues ever. The reviewing half of leading happens in private repos at work, where a public graph can't see it.
A decade of building — from data pipelines and full-stack apps to production AI, with a habit of sharing what I learn along the way.
%%{init: {'theme':'base','themeVariables':{'fontFamily':'Fira Code, monospace','taskBkgColor':'#1F6FEB','taskBorderColor':'#2F81F7','activeTaskBkgColor':'#2F81F7','activeTaskBorderColor':'#58A6FF','doneTaskBkgColor':'#8B949E','doneTaskBorderColor':'#6E7681','critBkgColor':'#D97706','critBorderColor':'#B45309','critTextColor':'#ffffff','milestoneBkgColor':'#238636','milestoneBorderColor':'#2EA043','taskTextColor':'#ffffff','taskTextDarkColor':'#ffffff','taskTextLightColor':'#ffffff','taskTextOutsideColor':'#8B949E','gridColor':'#30363D','todayLineColor':'#F85149','titleColor':'#8B949E','sectionBkgColor':'#2F81F714','altSectionBkgColor':'#2F81F70A'}}}%%
gantt
title A decade of building — 2014 to today
dateFormat YYYY-MM-DD
axisFormat %Y
tickInterval 1year
section Craft
Data engineering (pipelines, Spark, Databricks) :active, de, 2014-01-01, 2026-08-24
Full-stack engineering (TypeScript, Node, React, AWS) :done, fs, 2014-01-01, 2021-06-01
Architecture and platform engineering :active, arch, 2018-01-01, 2026-08-24
section AI / ML
ML and data science :active, ml, 2021-06-01, 2026-08-24
LLM, RAG and agentic systems :active, llm, 2023-06-01, 2026-08-24
MLOps, evals and guardrails :active, ops, 2023-06-01, 2026-08-24
section Building in public
Answering on Stack Overflow :crit, so, 2015-01-01, 2026-08-24
Open source on GitHub :crit, gh, 2016-01-01, 2026-08-24
Writing on Medium :crit, med, 2019-01-01, 2026-08-24
section Milestones
AI Engineer Lead at Syngenta :active, syn, 2024-05-01, 2026-08-24
FrameSleuth launch :milestone, fsl, 2025-09-01, 0d
%%{init: {'theme':'base','themeVariables':{'pie1':'#2F81F7','pie2':'#238636','pie3':'#8B949E','pie4':'#D97706','pieOpacity':'1','pieStrokeColor':'#ffffff','pieStrokeWidth':'2px','pieOuterStrokeColor':'#8B949E','pieTitleTextSize':'18px','pieTitleTextColor':'#7A7A7A','pieSectionTextSize':'13px','pieSectionTextColor':'#1F2328','pieLegendTextColor':'#7A7A7A'}}}%%
pie showData
title Focus areas, right now
"AI agents, LLM and MCP systems" : 40
"Data and AI on Databricks" : 25
"Full-stack product engineering" : 20
"Technical writing" : 15
Not every problem lives in the same place. I map what I build to the Cynefin domains — because the right approach for a known CRUD API is the wrong approach for a non-deterministic agent.
AI, Agents & Products
| Project | What it is |
|---|---|
| framesleuth-agent | The open-source MCP server behind FrameSleuth — local video → structured Context Bundle. Python, Docker, pinned lockfile, CI. |
| ask-santosh | RAG over my own writing. Retrieval quality (recall@k · MRR) is gated on every push without an API key; DeepEval scores answers when a judge key is set. |
| multi-agent-sales-ops-tpch-databricks | Beyond Genie code — orchestrating production multi-agent systems on Databricks. Write-up → |
| ai-consumption-plane | A hands-on build of the AI Consumption Plane on Databricks. |
| churn-vs-risk-poc | Why a churn model is not a risk model — and what that costs you. Write-up → |
| crop-disease-prediction | End-to-end applied ML: 97.83% across 15 disease classes in a 9.3 MB model at ~9 ms, exported to TFLite and shipped four ways — Streamlit, a FastAPI service, a WhatsApp bot, and a React Native app doing offline on-device inference. With a model card that states where it stops working. |
Data Engineering & Platform
| Project | What it is |
|---|---|
| medallion-architecture-databrics | Medallion Architecture — principles and a practical Databricks exploration. Read → |
| dataset-atlas | A map-first way to discover and download datasets — Region → Domain → Get. Live demo → |
| node-boilerplate |
Production-ready Node.js + TypeScript skeleton for microservices — ESLint, Prettier, Husky, CI wired in. |
| genie-reality-check | Chart data and methodology behind my Databricks Genie evaluation series. |
| delta-live-table-databricks-sample-use-case | Declarative pipelines with Delta Live Tables — expectations, lineage and incremental loads. |
| delta-lake-databricks-sample-use-case | Delta Lake from first principles — ACID on object storage, time travel, schema evolution. |
| kappa-iot-temperature | Kappa architecture for real-time IoT temperature monitoring — one streaming path, no batch twin. |
| next-genie | A Next.js front end over Databricks Genie. |
- A Knowledge Graph Over Gold: What Multi‑Hop Questions Need, and How to Build It Inside Databricks
- Stack Convergence vs. Cloud Sprawl: The Cost of Unified AI/BI
- Why Your Churn Model Is Not a Risk Model (And Why It Matters)
- Databricks Genie: Agent Mode vs Chat Mode — Should You Switch Yet?
- Feature Store vs. Gold Data Products: Where Should Your ML Features Live?
- What Genie Ontology Actually Automates, and What It Leaves to You
- Data Governance on the Ground — and the Challenges AI Agents Bring
- Every Design Pattern Casts a Shadow in Machine Learning
I publish most of this through AI That Ships — my Medium publication on getting AI systems into production, also on Substack. More on Medium →
Most of my work is in private repositories — 1,893 of my last 2,027 contributions, about 93%. These are recounted by the weekly workflow, not typed in by hand.
What I'm up for.
Production LLM systems that have to survive contact with real users — retrieval that
holds up, evals that fail loudly, and the cost and failure-mode work underneath.
Happy to talk shop, review an eval harness, or compare notes on agent tooling.




