About
I build AI agents that large enterprises actually run in production — inside regulated workflows, under audit, in domains like pharma, healthcare, aviation, and lending. Most of the engineering in that work lives in the gap between a system that demos well and one that holds up against real users, adversarial inputs, and a compliance review. That gap is easy to underestimate until you’ve shipped a few things across it, and closing it is most of what I do.
I work forward-deployed, which in practice means one person holding roles that are usually split across three: the engineer writing the code, the architect deciding what to build, and the delivery lead accountable to the client’s executives. I think those roles are worth more held together than apart — the architecture decisions that matter are the ones made by someone who then has to implement and defend them — but that’s where I’ve ended up, not where I started.
How I got here
My first real systems work was in banking: computation engines in C#/.NET grinding through large financial files, star-schema warehouses feeding reporting across dozens of branches, a nightly batch I profiled and rewrote from six hours to forty minutes. None of it was glamorous, but banking software is unforgiving in a particular way — a reconciliation that silently drops a row is worse than one that crashes, because the crash is the one you notice. That’s where I started paying attention to the failure modes that don’t announce themselves, and to whether a system could be run by someone who wasn’t me.
Then a few years in games, which is where I learned distributed systems under real latency pressure. I built matchmaking and telemetry for a title with over a million daily players — lock-free concurrency, Redis-backed state, tail-latency budgets tight enough that a garbage-collection pause registered as a user-visible defect. The anti-cheat was more interesting than it sounds: isolation forests over sliding-window behavioral features fused with a rules engine, tuned deliberately toward false negatives, because the asymmetry mattered — wrongly banning a paying player did more damage than letting the occasional cheat through. Calibrating that threshold, rather than chasing raw accuracy, was the actual job. On another title I owned the ML end to end: lifetime-value forecasting with a zero-inflated loss, churn, the experimentation loop.
Around then I co-founded three companies as the technical half. The one I learned the most from was a writing tool where we fine-tuned GPT-2 on each customer’s brand voice. It beat GPT-3 few-shot on the metric that mattered — voice fidelity — at roughly one-eighteenth of the inference cost. That result has stuck with me, because it cuts against the reflex to reach for the biggest model available: a small model that has actually seen your distribution will routinely beat a much larger one prompted cold, and the cost difference isn’t close. This was early 2021, before that trade-off was a fashionable thing to say. I also did the unglamorous founder half — customer interviews, fundraising, pricing — and trained on preemptible GPUs that got reclaimed mid-run often enough that checkpointing stopped being optional. Two of the three companies didn’t survive.
After that came a few years of ML research at a medical-device company, under FDA regulation, where every model shipped with a physician’s sign-off and a traceable paper trail. I trained a computer-vision model on ten million 3D scans to catch manufacturing defects — a multi-view architecture, sharded training in mixed precision to make it fit, the long fight with a heavy tail of rare defect classes. I also built an air-gapped assistant so researchers could query internal knowledge without a byte leaving the building: QLoRA on a 7B model, hybrid dense-sparse retrieval, reranking, and grounded citations — because in that setting an ungrounded answer isn’t a UX rough edge, it’s a regulatory problem. Working where “wrong” has consequences past a bad review is what taught me to distrust a good benchmark number on its own. A benchmark is a hypothesis about production, and the two disagree more often than anyone likes.
What I do now
I lead agentic AI delivery for Fortune 500 companies. Client names stay off this site, so in general terms, the shape of the work:
- A multi-agent research system (how the platforms disagree) where seven specialized agents work over genomics and enterprise data tools and cross-check each other through a maker-checker pattern, with log-probability confidence gates that fall back to deterministic code when the model isn’t sure. It took a pharma R&D team from weeks to about ninety seconds to get from a question to a grounded, cited answer — but the part that made it shippable was the identity propagation and audit logging at every federation hop, not the agents themselves.
- A fleet of agents running HR operations (what their permission models can’t express) over an enterprise’s HCM APIs for 65,000 employees, with a human in the loop for anything that touches someone’s benefits and least-privilege scoping so an agent can never do more than the task in front of it.
- A customer-facing booking agent for a national carrier (why containment is the wrong metric): multi-turn planning and rebooking over reservation systems, guardrails on every tool call, a human approving the actual purchase.
- Underwriting automation at a large mortgage lender (a confidence score is not a reason) — document extraction and cross-document consistency checks with a reviewer on the exceptions, turning nine-day loan files into same-day ones, on an immutable audit trail because the regulator will eventually ask.
- Admission triage across a few hundred behavioral-health facilities (the guarantee is marginal, the audit is not): a calibrated, bias-audited ranking that fuses tabular, imaging, and text signals, with conformal prediction so the model can abstain instead of guessing — which matters here, because a wrong ranking costs something you can’t denominate in dollars.
- A retrieval system (retrieval on a versioned corpus) over 12 TB of engineering drawings and documents, where vision-language agents check drawings against building code before a bid goes out.
- An 8B assistant (the three ceilings it hits) compressed 27× to run fully offline on a mid-tier Android phone, for field technicians with no connectivity — quantization and distillation down to something a GPU-less device runs in real time, which is a different discipline from cloud serving entirely. It was demoed at Google I/O 2024.
- And the layer underneath most of this: a division-wide program for evaluation and observability that brought release regressions down about 80%, and an inference stack I tuned for three-to-four times the throughput per dollar.
How I actually work
The thread through all of it is evaluation-driven development, and I mean something specific by it. Before an agent goes near a user I want a golden dataset that encodes what “correct” means for the task, an offline harness that runs against it on every change, an LLM-as-judge gate wired into CI, and tracing on every tool call so a production failure is a span I can open instead of a mystery.
The part most teams underestimate is that the judge is itself a model, with its own failure modes, so you have to evaluate the evaluator — spot-check it against human labels, watch for the biases it inherits (length, position, sycophancy), and never let an unvalidated judge block a merge. You also have to be honest about the axes you’re measuring on: task success and groundedness are not the same dimension as latency and cost, and a system optimized on one while blind to the others will sail through review and fall over in production. None of this is exotic. It’s the ordinary discipline of finding out where a system breaks before a user does — most teams skip it because it’s slower up front, and it’s usually the difference I get hired to supply.
I also build for the handoff. A forward-deployed engagement that leaves behind a system only I can operate has failed on a dimension that never shows up in a demo, so a large share of my effort goes into the parts that let someone else’s team run it: the CI, the per-agent scorecards, the promotion gates, the runbooks. That work is far less visible than the agents, and it’s usually the reason the system is still running a year after I’ve left.
The foundation
Before any of the above there was a computer science degree at BSU, and then a master’s in applied mathematics at the same place, in the big-data processing department. The master’s is where I first had to make things run at a size that punished naivety: a tiled 2D algorithm parallelised across GPUs with MPI, a distributed URL shortener behind Nginx on Cassandra, a hierarchical search engine built up from PageRank and BM25 to BERT. None of it was production, all of it was the first time the constant factors mattered more than the asymptotics.
Alongside the degrees I spent two years at the Yandex School of Data Analysis, which is the part of my education I’d keep if I could only keep one. It is unusually theoretical for an industry-facing program, and the work was derivations rather than notebooks: proving results in statistics, optimization and decision theory before touching an implementation. I built a Bayesian hyperparameter-tuning framework there, spent a term on where VAEs beat GANs and where they do not, and worked NLP forward from TF-IDF to transformers by reimplementing each step rather than importing it. Being made to derive the thing before using it is why I am suspicious of a benchmark number now, and why the statistics in what I write tend to hold up.
The undergraduate degree gave me two habits that outlasted the syllabus. One is competitive programming, which sounds like a party trick and is really a decomposition reflex: you learn to find the shape of a problem before you write anything, because there is no time to write the wrong thing twice. The other is a thesis on encoder-decoder segmentation of 3D MRI volumes, which was my first encounter with a model whose errors mattered to a person, and with the gap between a validation score and a clinician’s confidence in it. I have been circling that gap professionally ever since.
Underneath all of that is nine years of watching systems fail in production and working out exactly why.
The stack, if you’re looking for it
- Languages & core — Python, TypeScript, SQL, Rust, C++, C#/.NET, Go, Scala, R; PyTorch, JAX, scikit-learn, XGBoost, CatBoost, LightGBM; pandas, NumPy, SciPy, statsmodels; computer vision, information retrieval, numerical optimization.
- Statistics & decision science — conformal prediction, probability calibration (Platt, isotonic, Mondrian), acceptance sampling and OC curves, inter-rater agreement (kappa, AC1, Krippendorff), prediction-powered inference, causal inference, uplift modeling, survival analysis, probabilistic programming, Monte Carlo, experiment design, fairness testing with fairlearn.
- LLMs & agents — LangGraph, LangChain, Google ADK, AWS Strands, Bedrock AgentCore, DSPy, CrewAI, AutoGen, Semantic Kernel, OpenAI Agents SDK, PydanticAI, Claude Agent SDK, Copilot Studio, Azure AI Foundry; LiteLLM gateways, structured outputs and function calling, agent memory, ReAct and plan-and-execute, computer-use and browser agents (Playwright), gVisor sandboxing; NeMo Guardrails, LlamaGuard, Guardrails AI; Claude, Gemini, GPT, and open-weight models (Llama, Qwen, DeepSeek, Gemma, Mistral, Phi).
- Protocols & interop — MCP and A2A, OAuth 2.0 token exchange (RFC 8693) and on-behalf-of flows, OIDC/SAML, SCIM, JWT profiles, W3C Trace Context; SOAP and REST integration against systems that predate all of it.
- Orchestration & workflow — Temporal, Durable Functions, Orkes/Conductor, Airflow, Dagster, Prefect, Argo Workflows, n8n, Workato.
- RAG & retrieval — hybrid dense-sparse search, reranking, late-interaction retrieval (ColBERT, SPLADE), reciprocal-rank fusion, chunking strategy, bitemporal corpora and as-of retrieval; pgvector, Pinecone, Qdrant, Weaviate, Milvus, Chroma, FAISS, OpenSearch, Vertex AI Search, Azure AI Search; GraphRAG and knowledge graphs (Neo4j, Neptune), ontologies and semantic layers, entity resolution, Textract and document AI.
- Fine-tuning & training — LoRA/QLoRA, PEFT, SFT, RLHF/RLAIF/DPO, distillation; distributed training with FSDP, DeepSpeed, Megatron-LM, NeMo, ZeRO and NCCL; H100/H200/GB200 over InfiniBand, TPUs, Trainium/Inferentia, Run:ai, Anyscale; Weights & Biases, MLflow, Hydra, Label Studio, Snorkel weak supervision, active-learning loops.
- Serving & inference — vLLM, SGLang, TensorRT-LLM, Triton, TGI, Ray Serve; continuous batching, chunked prefill, prefix caching, KV-cache sizing, speculative decoding, FlashAttention, quantization (GPTQ, AWQ, bitsandbytes, FP8), model routing, Nsight profiling and kernel-level tuning.
- On-device & edge — llama.cpp and GGUF, LiteRT/TFLite, ONNX Runtime Mobile, NNAPI, XNNPACK, KleidiAI, Vulkan and OpenCL delegates; quantization and distillation to sub-gigabyte models, thermal and DVFS behaviour, Android memory management.
- Voice & contact centre — Whisper, OpenAI Realtime, Deepgram, ElevenLabs, LiveKit, Pipecat, Twilio Voice, Amazon Connect and Lex, Nova Sonic; turn-taking and VAD, barge-in, telephony and IVR, narrowband codecs.
- Evals & observability — golden datasets, LLM-as-judge, RAGAS, DeepEval, Promptfoo, Braintrust, Arize Phoenix, LangSmith, Langfuse, AgentOps, TruLens, Giskard, Vertex AI Evaluation, Mosaic AI Agent Evaluation, watsonx.governance; OpenTelemetry with tail sampling, Prometheus, Grafana; red-teaming for prompt injection, jailbreaks, data poisoning and model inversion.
- Policy, security & governance — OPA and Rego policy-as-code, VPC Service Controls, Model Armor, Sensitive Data Protection, Secure Web Proxy, Unity Catalog, Snowflake RBAC with row access and masking policies, Purview, Collibra, PII redaction, sovereign and on-prem deployment, multi-tenancy and tenant isolation.
- MLOps & cloud — GCP and Vertex AI, AWS with SageMaker and Bedrock, Azure with ML and AI Foundry; Kubernetes, Docker, Helm, Terraform, OpenTofu, Pulumi, Crossplane, Argo CD, Karpenter, KEDA, Backstage, GitOps; model registries, blue-green, shadow and champion-challenger deploys, SLOs and error budgets.
- Data — Snowflake and Snowpark, Databricks, BigQuery, Spark/PySpark, Kafka, Flink, dbt, SQLMesh, Delta Lake, Iceberg, Hudi, DuckDB, Clickhouse, Trino/Presto, Debezium CDC, Fivetran, Airbyte, Great Expectations, Looker, Superset, Hex; medallion architecture, data mesh, lineage and governance.
- Enterprise & regulated — Workday (RaaS, web services, Studio, agent system users), Salesforce Agentforce and Data Cloud, ServiceNow Now Assist, SAP Joule, Palantir Foundry and AIP, MuleSoft, Epic and FHIR, HealthLake, Veeva, IQVIA, Sabre; HIPAA, GxP and Part 11, EU Annex 11, SOC 2, EU AI Act, ISO 42001 and 27001, NIST AI RMF, GDPR, ECOA and Regulation B, HMDA, fair-lending and disparate-impact analysis.
- Product & web — Next.js, Astro, FastAPI, Node and Express, GraphQL, tRPC, Cloudflare Workers, Supabase, Stripe, PostHog, Mixpanel, Streamlit and Gradio; the founder half too, which is customer interviews, pricing and fundraising.
- Systems, from before all this — gRPC, WebSockets, Redis, PostgreSQL, MS SQL Server, Oracle, lock-free concurrency and tail-latency work, SSIS and SSAS, dimensional modeling, and enough legacy integration to know that the hard part is rarely the model.
The part of a project I still like most is the first week after launch, when real usage starts contradicting assumptions you didn’t know you were making. I write code every day, and I read other people’s postmortems the way some people read the news.
If any of this is close to what you’re building, email me: mikitadaroshkin@gmail.com.