Akshay BhardwajDirector of Data Science & AI · Gurugram, India
I build production AI, and the team that runs it.
Employee #2 and first data scientist at an industrial AI startup in 2019, leading its AI org since 2024. I still write production code, and most of the job is measuring things before I believe them. Petroleum engineer by training: AlphaGo's move 37 got me into AI, and I taught myself the rest. Business is the part I'm learning.
NowShipping an agent platform at work, and about to fine-tune a small open decision model on my laptop.
This page is also an MCP server and an llms.txt. Point your own AI at it.
What I'm good atThree things, each shown in more than one place.
Hands-on at every altitude.
Production code and the team that runs it, often in the same week.
WorkA platform where a plain-English job becomes a governed, scheduled, traced agent. A three-step agent takes about 24 seconds and five cents to generate. Agents are validated specs, not generated code, so a machine can check what they can do. Co-led across two squads, with the largest share of the commits.
TeamData science and AI team tripled from 8 to 24 in 2026, hired and measured against a level framework, KRAs and interview loops that I wrote from scratch.
Own timeOuroboros, a pipeline built for my own use. A set of skills I wrote turns an idea into a locked spec, QA writes the tests from the spec before any code exists, and an agent team builds in isolated containers, one owner per file, ending in a pull request. On a small CLI spec, one run passed 36 of 36 tests in 7m51s. The repo also logs the runs that failed.
Measure first, trust after.
A model, a vendor or my own code: the before and after come first.
WorkModel swaps get decided by measurement. Moving one agent from Gemini Flash to an open-weight Llama 70B, with the prompt tuned through cross-model review, cut its cost 13× and its run time 27%, and an automated check found every figure in its reports unchanged. That's safe because code computes the numbers and the model only narrates them. On a judgment task the same swap dropped a signal the physics needs, so it was rejected.
Own timeRed-teaming built into how my own code ships. Eight AI reviewers, each from a different angle, audited my hiring platform MeritWise and found cross-tenant data access bugs and missing row-level security. Every finding was fixed and re-audited. Later changes, like shared workspaces, went through three rounds of cross-model review, each catching real defects before any code shipped.
GovernanceNamed approver on the company's AI governance policy, which follows NIST AI RMF and ISO 27001, and interim owner of the governance function. Vendor AI decisions go through an adversarial audit that treats the vendor's claims as unproven.
Hard things, said plainly.
In writing, in a training room, or in the short version a busy reader needs.
TeachingAn hour-and-a-half AI training for about 50 people across the company, with every live demo working. One-on-one sessions with each team came first, so it was pitched at three levels of literacy instead of one.
Selected workMost of it from the day job, at an industrial AI startup where software watches turbines, compressors and pumps for large energy operators.
01 · Agent platform (TurboAgents) · 2026
A platform where a plain-English job becomes a governed, running agent
Most AI agents are one-off scripts with no limits and no record of what they did. On this platform, a recurring job described in plain English becomes a scheduled agent with spending limits, access control and a full run history from its first run. Any bounded job that can be described in a sentence can be run, watched and audited.
24 s · ~$0.05to generate a three-step agent from plain English
1.2 sfor a revoked agent key to stop working, in gateway testing
8 msmedian overhead the gateway adds to a model call, over 110 real calls
What runs on it
One platform runs many kinds of recurring work, across engineering, models and data.
Engineering and cloud
Pull-request review
Failing-test triage
Security-alert triage
Cloud spend tracking
Database health and sizing
Machine-learning models and diagnostics
Physics-rule check of a machine-learning model's inputs, before a customer sees its diagnosis
Machine-learning model creation and performance review
Machine-learning model monitoring
Diagnostic engine health review
Data and governance
Data-quality intake checks
AI-tool reviews
Other recurring workflows
Started from
Slack, inside the product, the fleet console, or a schedule.
Runs in
The client's own isolated network for sensitive data, or the central hub for internal-only work.
Govern centrally. Run where the data lives.
1GovernThe approved menu
The list of tools, skills and connectors the company has approved. Adding one takes a reviewed pull request.
Publish · a reviewed merge puts the tool on the hub ↓
2HubDefined once, centrally
Every agent is defined and tracked here. The hub keeps records, not raw client data.
Agent registryagents, versions, grants
One gatewaymodels and tools, with keys, limits and metering
Durable runsretry, resume, step history
Tracespersonal data removed
Run · the agent wakes inside the client's network and reports back ↓
3Client environmentWhere the data lives
Agents that touch sensitive data run inside each client's own isolated network. Raw data never leaves it.
Workerruns the agent
Client's tool serverread-only, row-scoped
Client's storageresults stay home
Raw client data stays in the client's network. The hub keeps pointers, counts and anonymized traces. Only the model call crosses, and it goes through the one gateway.
Safe by construction
An agent's key is its whole accessEach agent gets one key, scoped to the tools it was granted. It holds no URL and no credential, so there is nothing else for it to reach. In testing, a model allowlist held against four bypass routes.
Every run traced end to endInputs, tool calls and outputs are recorded for audit and for debugging, and every model call and tool call is tied to the agent that made it.
Traces without personal dataA PII reducer sits in front of tracing, so the central view shows every step and none of the personal data.
One door for models and toolsEvery model call goes through one self-hosted gateway for keys, rate limits and spend budgets. Every tool call goes through one governed MCP door. Swapping a provider is a config change.
How a sentence becomes a run
Plain EnglishSomeone describes the job.
SpecA flow of a few fixed step types. Data, not code, and no field for a URL or a credential.
Shape checkChecked without running anything: is it a valid flow, using only the allowed step types?
Access checkEvery tool and model it names is checked against what's allowed.
PublishSaved as a fixed version that can't be edited. Rolling back means pointing at an earlier version.
Durable runFailed steps retry and resume, and every step is recorded. Every model call goes through one gateway and every tool call through one door.
Because an agent is data, not code, it can be checked before it ever runs.
Design choices
An agent is a spec, not generated code.A machine can check an agent built from a fixed set of step types, and it can't check arbitrary code. The spec has no field for an address or a key, so an agent has no way to reach an endpoint it wasn't given.Instead ofletting a model write Python
Code computes, the model narrates.The model writes only about numbers that code already computed, so checking it is mechanical: pull every figure from two reports and compare. That is what makes a cheaper model safe to swap in.Instead ofletting the model do the math
Rules set the verdict, the model explains it.Where a decision has to be stable enough to act on, rules set it. Where a model's judgment helps, its opinion sits beside the computed verdict with a disagreement flag, never in place of it.Instead ofa model deciding severity
The advantage is the domain knowledge.A generic vendor can't quickly copy a growing library of physics-based rules for rotating equipment, extended with every case the platform handles.Instead ofbetting on orchestration
What's being built next
Review agents already read an agent's past runs and recommend what to improve, so agents get better with use. A knowledge base is being built beside them. It grows from what the platform solved and what it didn't, draws on many processes, and opens as a clickable graph that people can browse and correct by hand.
My part: co-led across two squads, with the largest share of the commits. Owned the vision and the security review.
02 · ML platform
A platform that trains, checks and watches its own models
Industrial ML fails quietly. A machine-learning model trained on a compressor's startup noise will pass its metrics and still be wrong about the machine. So we built the whole loop, from raw sensor data to retraining. Nothing ships until it clears the data checks and a vision model has read its plots.
25–50 h → 3–5 hto review a trained machine-learning model
~2 yrs → ~3 moof history needed before a machine-learning model can ship
13 plotsa vision model reads before anything deploys
04 · GuardData checks fail a run loudly before any compute is spent.
CleanStrip startup and shutdown transients, so machine-learning models only learn real operation.
SelectStatistics plus an LLM playing domain expert pick the sensors that matter.
TrainAutoML tunes several model families in parallel on a cluster.
GuardData checks fail a run loudly before any compute is spent.
ReviewA vision model reads the plots and says deploy, retrain or investigate.
ServeThe verdict lives on the model's own record, then it ships.
WatchAccuracy checks and four drift tests against the training baseline.
RouteRetrain, rerun AutoML, or flag a process problem. A human signs off.
What I'm building nextAn agent that works out why a retrained machine-learning model still isn't good enough, and tells a human what to try.
My part: the design of the whole loop, from the drift framework in 2021 to the review and routing stages, and a large share of the code. It runs on Ray clusters and is cheap to run by design: a small head node stays up, and workers start when a machine-learning model is requested and shut down when the job ends. Training data comes straight from the data lakehouse. The team I lead builds and runs it; one of its data scientists wrote the feature-selection pipeline.
03 · Alert triage agent · 2026
An agent that investigates an alert the same way every time, then judges
When a diagnostic rule fires on a machine, an engineer needs the same questions answered before deciding to act: what the rule checks, which sensors tripped, what they read, and what happened last time. A free-roaming agent skips steps and varies run to run. This one gathers the evidence in a fixed order that code derives, then makes a single model call to judge from that evidence alone.
9 stepsin an order derived from what each step needs, never chosen by a prompt
1 toolthe only thing the model can call, and it runs the whole chain once
4 outcomesraise a service request, monitor, discard, or undecided
What it does with one alert
Find the alertResolve which alert is meant.
Load its detailsThe machine, the rule and when it fired.
Explain the ruleWhat the diagnostic rule actually checks, in plain terms.
Pick the sensorsWhich sensors fired, and how the machine is set up to watch them.
Read the historyWhat happened the last time this rule fired, and what was done.
Assess the contextThe operating conditions around the alert.
Read each sensorWhat the flagged sensors actually measured.
Check related sensorsWhat moved alongside the ones that fired.
Build the timelineHow those sensors performed over the period.
Nine steps gather the evidence. One model call then judges from it, and does nothing else.
Design choices
Order comes from dependencies, not from a prompt.Each step declares what it needs and what it provides. A prompt never names a step, so a wording change can't reorder the chain, and a step with a missing input fails before any model call is paid for.
A number is converted once, and a test enforces it.The platform already converts units at its boundary. A second conversion gives a number that looks plausible and is wrong, so a scan of the code fails the build if any conversion or conversion constant appears.
One function can write the data-quality marker.Whether a report rests on live or partial data is computed from the run's own counts. Construction raises if a claimed marker disagrees with the counts, so a report can't call partial data complete.
The core knows nothing about the framework running it.An import check keeps web, model and agent libraries out of the triage logic. That let the execution engine be swapped under a test requiring identical steps, outputs and serialized results, instead of a rewrite.
My part: I directed most of the triage agent's design, and made architecture calls on the assistant around it over a few sprints. Product engineering built the assistant and runs it.
04 · Data lakehouse
Telemetry in open tables, so any model can be retrained on the data it first saw
Data scientists need one row per machine per timestamp, with thousands of sensor columns. The source stores one row per sensor reading, in the same database that serves live data, so analysis was slow and competed with the live system. The lakehouse copies changes into open Iceberg tables and serves the reshaped view on request.
5.4×faster yearly backfill
~2 minto read a year of 10,000-sensor data
~$0.30per run
How it works
CaptureChanges from the operational database are copied into Iceberg tables, with full history.
ServeEach timestamp's sensor values are stored compactly and expanded into named columns only when requested.
PublishA refresh is written to a branch and checked there, then published, so readers never see a half-written snapshot.
Readers only ever see a complete, checked snapshot.
Design choices
Reshape on request, not in storage.A pre-built wide table ran out of memory at 10,000 columns and slowed about 7× at 7,500. Storing each timestamp compactly and expanding it on request made a yearly backfill 5.4× faster.
A small API, not table sharing.Table sharing returned the full two-year history for a two-day query on an unpartitioned table. A call that takes equipment, a start and an end returns exactly that window.
Retrain on the exact snapshot.Every job logs a snapshot ID, and a training run can query the table as of that snapshot, even after later backfills or deletes change the source.
Open formats over a vendor warehouse.Iceberg was chosen over Hudi and Delta for wider engine support, transactions, schema changes and time travel.
My part: built the first Iceberg version, which reached production as the raw-data layer before a rewrite replaced it with change capture. For the serving layer I shaped the architecture, scoped it, worked out the usage patterns and held the latency and cost targets. A data engineer built it.
Built it myself, 2026
Anomaly detector test bench
Anomaly detectors are hard to compare when real data has no answer key. This bench generates realistic sensor data, injects faults at known times, and scores every detector at the same budget of one false alarm a day. It covers 11 fault types, 7 detectors and 6.3 million points. Every part is a swappable class in one file: the detectors, the fault generator and the scorer. A registry picks up any new detector, so adding a test needs no other change. The first version was built alone in under a week.
Set the approach and architecture
Curve digitizer
Equipment makers publish performance data only as graph images, so engineers click points along each curve by hand. A vision-language model reads the axes and units and checks them geometrically. A segmentation model finds each curve, including where curves cross, and a person can paint strokes to refine it. Ten stages of signal processing, ending in a spline fit, turn the pixels into numbers, scored by R² with 0.95 as the bar for a good fit. Used in production, internally.
Measured it
Cheap models, safe where code computes
Two production agents were instrumented to swap models and measure cost, latency and accuracy. A small model replaying and a larger one judging cut cost 2.6×. Cheap models are fine for narrating facts that code already computed. They aren't fine for judgment. One run cost $0.0165 and produced nothing; it stays in the record, and it's why every run now has a cost ceiling.
Built it myself, 2021
Serving at a twentieth of the cost
I replaced one-pod-per-model serving with many machine-learning and deep-learning models on shared machines. Hosting went from $4 to $0.20 per model per month, and 30 instances became 1.
LabWhat I build when nobody's asking. The public ones come first.
AI hiring: resume scoring with model fallback, interview questions and full tracing. An 8-agent security audit of my own code scored it 5.7 out of 10. Every finding got fixed.
Folklore goes in, a narrated video on YouTube comes out. Three quality gates that don't use an LLM reject bad output and force retries. The last two uploads ran end to end with nobody touching them.
608 tests · 3 public videos
Ouroboros
private · demo on request
One rule matters most: one file, one owner. In my own runs, builds succeed ~85–90% of the time with it and under 20% without. AI reviewers lock a spec from the idea, then a Docker-isolated agent team builds it into a merge-ready PR. One run against an outside repo timed out twice and lost work, because it only committed at the start and the end; that drove the fixes after.
36/36 tests on a full build in 7m 51s
Raphael OS
in progress · private
A personal agentic OS for my skills, notes and dev setup, split into identity, tracing, memory and event planes. One trace ID follows a run across every sink.
159/159 tests · phase 1 done
Also: three merged pull requests to Hugging Face's datasets library back in 2020, adding a Swahili language-modelling corpus, an OPUS translation set and the WinoBias benchmark. Plus a handful of automations that run my digests and syncs, and 61 Claude Code skills I use every day, from architecture review to the design rules this page follows.
WritingField notes, not tutorials. Start with these three.
How I leadWhere my time goes, how I hire, and what I own beyond my team.
Where my week goes · roughly
Building and researchPrototypes, hands-on code, and reading and testing new papers and models.
~35%
Technical direction and deliveryArchitecture calls, unblocking teams, and getting clients and teams to actually use the AI.
~30%
The teamHiring, levels, one-on-ones and feedback.
~20%
AI governance and the boardPolicy, vendor reviews, and the AI metrics the board tracks.
~15%
What I'm like to work for
I grew the AI team from 8 to 24 this year. Every role has a written level, and every interview round tests one signal. An empty seat beats a hire above what the scope justifies.
No "great job". Praise names the exact call you made, and criticism comes with the fix.
I've reshaped the org three times as the team tripled, each time with the reasoning and the risk written down.
Where I work now
Across the whole company, not only my team: data and platform engineering, security, DevOps, product, operations and revenue. I also own AI governance.
Still learning: the business side. Engineering and product are where I'm strong. Pricing, sales and go-to-market are the instincts I'm building now, in public with MeritWise.
TimelineSeven-plus years at one startup, four jobs inside it.
2024 – now
Director of Data Science & AI · Mechademy
AI strategy, org design, the ML platform, the agent platform and AI governance.
2022 – 2024
Principal Data Scientist · Mechademy
I set the team's review and evaluation standards, and put GenAI into production early.
What I built
A RAG copilot that matches new alerts against validated past events, so engineers stop re-analysing the same anomaly. It saves 200+ hours per client per month.
Natural language to SQL to a live chart, with every query scoped to the user's access.
Agents that read client spec sheets and write platform configs, cutting onboarding work.
Anomaly detection that can start from ~7 days of history, then adapts to daily noise and slow drift.
2021 – 2022
Senior Data Scientist · Mechademy
The infrastructure year. I rebuilt the bones the current platform stands on.
What I built
The original domain-specific AutoML framework. Machine-learning model creation went from ~2 months to ~2 days.
Multi-model serving on shared machines: ~95% cheaper, 30 instances down to 1.
Moved orchestration off Airflow: pipelines ~50% faster, infrastructure ~70% cheaper.
Designed the drift framework that still gates retraining, and moved the core store to a time-series database.
2019 – 2021
Data Scientist, employee #2 · Mechademy
No ML practice, no baselines, no ingestion. I built the first predictive-maintenance models for turbomachinery, the first cloud services and CI/CD, and hired our first ML engineer, who's still there as ML Lead. Co-authored an SPE paper in 2019 too.
2019 – 2024
Data Science Consultant · freelance, alongside
NLP for an edtech platform: topic modelling, sentiment, gibberish detection and keyword extraction.
2017 – 2018
Data analyst · steel, then oil & gas
Production analytics across steel mills, and before that, real-time drilling data for up to 22 rigs.
2012 – 2016
B.E. Petroleum Engineering · MIT-WPU, Pune
Top of the class. Then AlphaGo played move 37, and I spent the next five months teaching myself AI.
Certifications: CKAD (Kubernetes), NVIDIA DLI Applications of AI for Predictive Maintenance.
About
I DJ, mostly for myself, occasionally for people willing to tolerate my taste in techno. F1 gets the kind of attention I should probably save for more productive things. One Piece has been part of my life for fourteen years, which is why the blog is called Expedition Logs. Salsa started as deliberate embarrassment training, and I ended up enjoying it. I read poetry, and I'll defend a well-written self-help book if pushed.
Hardware came before software: I designed my first PC build in 7th standard, off the CDs that came with computer magazines. That wiring never left.
On the shelf
Designing Data-Intensive Applications· the map behind every data platform I've designed.
The NVIDIA Way· a company betting on accelerated computing a decade before it paid off.
Clean Code· write software for the next person who reads it.
Natural Language Processing with Transformers· the hands-on counterpart to building one from scratch.
The Intelligent Investor· temperament over IQ, for capital as much as code.
White Nights· the deepest systems are the human ones.
The Four Agreements· four simple rules I keep coming back to.
The God Delusion· I don't agree with every line; I respect reasoning from evidence up.
Music and travel
Music. Progressive rock while I learned to code (Porcupine Tree, Pink Floyd), then years of wandering through electronica. Now it's 140+ BPM techno for deep work, with a late return to Punjabi music. Charlotte de Witte and Diljit on the same playlist.
Travel. A 45-day workation across Himachal, working weekdays from hill-town cafés and hiking weekends. It's the best work rhythm I've found. Also the Ha Giang loop by motorbike, and a solo climb up a wet limestone face in Krabi that I'm still thinking about.
What I want nextThe role, the stakes, and what doesn't fit.
I want to own AI end to end, as Head of AI, CTO or technical co-founder, at a company where AI is the product and a wrong answer costs something real.
Best fitPast the demo, with real stakes: industrial, regulated or money-moving. Stage matters less than whether a wrong answer costs something.
WhereRemote, or I'll relocate for the right team.
AlsoAdvising a few teams taking agents into production.
What I'd like from youSomeone who's closed deals and set prices, so I stop guessing on MeritWise.
Not a fitPure research labs, or leadership roles with no hands-on work.
You don't have to read this page. Point your own assistant at it instead. It gets the same facts and nothing else.
# Claude Code
claude mcp add --transport http akshay https://portfolio.akshayworks.com/mcp
# Codex
codex mcp add akshay --url https://portfolio.akshayworks.com/mcp
# any other app: add a remote MCP server, no sign-in
https://portfolio.akshayworks.com/mcp
# or just read it
curl https://portfolio.akshayworks.com/llms.txt
# then ask it
"Would Akshay fit as CTO of a 15-person robotics startup?"