anand-umashankar / portfolio

Anand Umashankar (Anand CU)

ML Lead | Applied AI & Agentic Systems
Bengaluru, India · open to remote roles worldwide and Bengaluru-based roles · available from December 2026

I build AI systems that people use in production: LLM and vision-model agents, the evaluation that tells you whether they work, and the platforms they run on. About ten years in AI (8+ in industry): deep learning and computer vision since 2016, LLM and agentic AI since 2025. I work as an AI-native builder: with coding agents I take ideas from concept to a shipped product myself, and spend my team's time on the hard ML problems.

statusavailable December 2026
locationBengaluru, India
open_toremote worldwide · Bengaluru
years_in_aiabout ten · 8+ industry
cv_since2016
agentic_ai_since2025
linkedinin/anandcu3

toolkit

llms_and_agentsAgent orchestration with tool-calling CV models, VLM fine-tuning (Qwen3-VL, LoRA, LLaMA-Factory), RAG (pgvector, hybrid text and page-image retrieval with ColQwen), Gemini, Claude and OpenAI APIs, LiteLLM, Langfuse, LLM evaluation against ground truth
computer_visionInstance segmentation and detection (MaskDINO, Mask2Former, Detectron2, mmdetection), high-resolution tiled inference, monocular depth (MoGe), multi-view geometry and 3D reconstruction, LiDAR point-cloud segmentation (MinkowskiEngine), multi-GPU training (PyTorch Lightning) and inference, model quantization for edge deployment
mlops_and_cloudMLflow, DVC, CVAT, FiftyOne/Voxel51, Prefect, Docker, GitHub Actions, GCP Cloud Run (GPU, scale-to-zero), AWS (EKS, Helm, S3), Terraform, Cloudflare (Workers, D1, R2, Pages)
languagesPython (PyTorch, PyTorch Lightning, FastAPI), SQL (PostgreSQL), Bash
product_and_deliveryProduct scoping, UX and system architecture, agentic software development with Claude Code, technical client advisory

work · 5 roles

roleML Lead (Senior Machine Learning Engineer II)ThreeV.ai
Lead the ML function at a US AI company for power-utility inspection: agentic inspection, evaluation, model serving and the CV models behind them.
Jan 2025 – presentremote from Bengaluru
key work
Agentic inspection pipeline
LLM/VLM agents call computer-vision models as tools to fill in structured inspection forms per structure from drone imagery of power lines. In production with US utility customers.
2025–2026

Every answer carries evidence: image, bounding box, confidence, rationale and run lineage; multi-select questions are answered per option with their own confidence and boxes.

For transmission inspections I redesigned what the agents look at: full-resolution inspection crops instead of downscaled frames, pole segments and brace-joint close-ups, with the form's inspection sections answered in parallel. A missing answer is scored as the negative the inspector would be left looking at, so silence never counts as a pass.

agentLangGraph-style orchestration built in-house · typed stage graph, JSON-schema structured outputs, fingerprint-based stage resume, typed retries
toolCV models called as tools through a model gateway · catalogue and maturity gating, primary/DR routing and frames passed by reference; per-provider and per-model concurrency limits; typed retries with escalating token caps
llmGemini via LiteLLM · versioned prompt templates
traceLangfuse plus a trace recorder I built · stores every LLM call exactly as sent, images included (prompts, token usage, latency, cost)
infraPrefect dispatch · one Kubernetes job per collection on AWS EKS
evalEvaluation waves · on held-out collections, and a ground-truth experiment with inspectors
docsREADME, input/output contracts, a question-contract-to-pipeline spec and an "adding a new project" guide · config composed per collection, so a new customer project is configuration, not new code
outputInspection form · with evidence per answer
Evaluation and review app
Inspectors and data scientists review AI answers against ground truth; it is how the team knows whether a change actually improved quality.
2026

Scoped, designed and shipped in under two months, largely myself with coding agents.

Product side: vibe-coded a static UI prototype for the inspection app that reshaped its review flow, and defined the contract between the inspection app and the AI with the engineering lead: immutable AI evidence stored separately from inspector corrections.

evalScoring · per-question and per-option; per-run accuracy with deltas; automatic re-scoring when a scorer changes; disagreement queues
lineageAnswer graph · tracing each answer to its stages, CV boxes and LLM calls
launchRuns pinned to a git commit and a versioned config bundle · live run monitor; resume runs
matcherLLM matcher · maps customer question sets onto the platform's model capabilities
infraFastAPI, PostgreSQL · AWS EKS (Helm), Terraform, Microsoft Entra sign-in
outputReview app · AI answers scored against ground truth
Model serving and MLOps platform
In-house and open-source models on scale-to-zero GPU endpoints on GCP Cloud Run: one inference API for the pipeline, labelling tools and demos, with no idle-GPU cost.
2025–2026
modelsDetectors, VLM fine-tunes, depth, page embeddings, image-chat models · in-house and open-source
infraGCP Cloud Run GPU · scale-to-zero endpoints, no idle-GPU cost
dataMLflow tracking and registry for mmdetection and Detectron2 training · DVC-versioned datasets linked to CVAT · Voxel51 for data curation
releaseModel cards · generated automatically and published from CI
toolsAttribute-model visualiser added to the serving platform's tools (overlay detail, ontology panel, real zoom) · fixed its depth-measurement tool
outputOne inference API · pipeline, labelling tools, demos
Computer-vision models and 3D counting
Led the instance-segmentation models, a Qwen3-VL LoRA defect classifier and MoGe metric depth; built the service-connection counter through three versions, plus wire triangulation in production.
2025–2026
modelInstance segmentation (MaskDINO, Mask2Former) · service connections, wires, insulators, structures and overhead equipment on high-resolution drone frames with overlapping-grid inference
modelQwen3-VL LoRA defect classifier · and MoGe metric depth
v1Service-connection counter · image-quality-weighted multi-view counting
v23D geometric consolidation · camera rays, monocular depth, clustering around the pole, bundle adjustment
v3Reconstruction-based approach · validated against ground truth
consolidationGeometric detection consolidation that replaced DBSCAN · physical rules and provenance on every consolidated asset
depthEvaluated Metric3D v2 against MoGe v2 · adopted MoGe
output3D multi-view asset counting and wire triangulation · in production

ThreeV.ai's platform turns drone and helicopter imagery of power lines into inspection findings for US utilities. I lead ML across modelling, MLOps, data operations and labelling, reporting to the CTO and working remotely from Bengaluru with a team across the US and Europe, and take on work beyond the ML remit: product scoping, UX, hiring and client advisory.

highlights
  • Architected the agentic inspection system now in production with US utility customers.
  • Scoped, designed and shipped the evaluation and review app largely myself with coding agents.
  • Set up the model-serving platform and the MLOps stack: MLflow tracking and registry, DVC-versioned datasets, CVAT and Voxel51, accuracy-gated releases, automated model cards.
  • Led the CV models behind the platform: MaskDINO and Mask2Former instance segmentation on high-resolution drone imagery, a Qwen3-VL LoRA defect classifier and monocular-depth measurement. Built the depth-based 3D multi-view asset counting and wire triangulation in production.
  • Designed the asset ontology and attribute labelling taxonomy end to end, from spec to trained model: component classes with material, configuration and position attributes mapped from utility inspection standards and job aids; an attribute-based classification framework that turns inspector requirements into attribute heads on the segmentation models; labelling guides, vendor labelling and QA; evaluation per attribute. A job-aid gap analysis found inspection questions the platform was missing and added them.
  • Built, solo, "Ask Utility Inspector", an internal RAG assistant used by the team over industry textbooks, maintenance manuals, job aids and labelling guides: heading-aware text chunks in pgvector plus ColQwen page-image embeddings (hybrid retrieval), answers from the Claude API.
  • Built the team's single ML knowledge base: inspection-question priorities, the use-case roadmap, labelling guides and model cards in one repo, synced daily by GitHub Actions; labelling guides and model cards are written as source and compiled and published from CI.
  • Supported client benchmark and fine-tuning contests (class-wise thresholds, NMS, metric mapping, SAHI tuning), utility pilots and demos, and a utility RFP narrative and orals. ML resource owner in the company's AWS and GCP cost-reduction review.
  • Owned an AI/ML advisory engagement for a large US utility end to end and delivered over half of it: AI/ML data roadmap, image-only (LiDAR-free) measurement feasibility study, ML solution blueprint, MLOps and IT readiness plan, a cross-utility model-sharing platform blueprint and a two-year labelling roadmap.
  • Security and engineering hygiene for SOC 2: Trivy and grype scanning in CI, with a scheduled job that uses the Claude API to draft remediation plans.
leadership and ways of working
  • Hiring, onboarding with reading lists and 90-day plans, role definitions, performance reviews, one-to-ones.
  • Co-wrote the ML operating model: the inspection question as the unit of work, the agentic path first with narrow models only when evaluation justifies them, ground truth before any model, evaluation as the promotion gate.
  • Started and ran the team's cadence: daily ML stand-up with bi-weekly sprint consolidation, a weekly prioritisation review, a monthly model review for leadership, sprint review and planning across the ML, MLOps and labelling lines, and use-case-driven quarterly planning. Automated the monthly review and sprint decks with Claude and packaged them as reusable agent skills. Design documents and design reviews.
  • Ran a recorded knowledge-transfer programme when a senior ML engineer left, so wire, insulator-defect and labelling context stayed with the team.
  • I delegate the core ML work by line (depth experiments and evaluation to data science, labelling specs and ground-truth review to data operations, deployment to MLOps) and use coding agents for the glue: internal apps, tools and prototypes that would otherwise never get headcount.
  • AI-native development: Claude Code with parallel agents in git worktrees, plus an "architect" agent that writes daily briefs and weekly updates.
stack
PythonPyTorchLiteLLMGeminiClaude APILangfusePrefectFastAPIPostgreSQL/pgvectorAWS EKS (Helm)TerraformGCP Cloud Run GPUMLflowDVCCVATVoxel51
roleSenior Machine Learning Engineer → Machine Learning Tech LeadSharper Shape
Took AI from no production use to part of every delivery, then led the ML behind LiDAR Insights.
Sep 2021 – Dec 2024Espoo, Finland

Senior Machine Learning Engineer, Sep 2021 – Nov 2023 → Machine Learning Tech Lead, Dec 2023 – Dec 2024

key work
LiDAR Insights
Graph neural network → sparse 3D CNN → every LiDAR file processed → 29 utility classes at 95–98% accuracy, F1 up to 0.98; delivery from months to days or a few weeks.
2021–2024
modelSparse 3D CNN (MinkowskiEngine) · replacing a graph neural network, backed by new training data from the annotation team
infraEvery LiDAR file processed · processing tooling connected to call the model
output29 utility classes at 95–98% accuracy, F1 up to 0.98 · delivery from months to days or a few weeks
ECLAIR dataset
Conceived and drove ECLAIR, the company's open aerial LiDAR semantic-segmentation dataset, published at CVPR 2024 Workshops; second author of the paper.
2024
datasetECLAIR · ~600M points, 10 km², 11 classes, open
baselineVoxel-based MinkowskiEngine segmentation model · the same sparse 3D CNN family I took to production
outputCVPR 2024 Workshops · paper (second author) and dataset repo

Sharper Shape does AI analytics for aerial LiDAR and imagery of power lines. As Tech Lead: led 10 across ML and annotation (6 direct reports); model results delivered to major California utilities.

highlights
  • Drove the move of the LiDAR segmentation model from a graph neural network to a sparse 3D CNN (MinkowskiEngine), backed by new training data from the annotation team, making inference cheap enough to run on every LiDAR file the company processed.
  • Went beyond the ML remit: worked with the delivery team to find where the model failed (errors they were cleaning by hand before delivery) and connected the processing tooling to call the model.
  • Led the ML behind LiDAR Insights, the company's AI point-cloud classification product and highest-demand ML line: 29 utility classes (8 wire classes) at 95–98% accuracy and F1 up to 0.98, cutting delivery from months to days or a few weeks.
  • Scaled the production CV and LiDAR pipelines behind the company's 6.4 PB of aerial data and 42,000 miles (67,000 km) of power lines flown, with 8x faster processing.
  • Ran ML from business requirements through research and proofs of concept to production, and helped plan the ML team's OKRs.
  • Built multi-GPU training workflows with PyTorch Lightning.
stack
PyTorchPyTorch LightningMinkowskiEnginemulti-GPU trainingpoint-cloud segmentation
roleResearch Assistant (MSc thesis)Aalto University
AI research: deep-learning speech recognition.
Jan 2020 – Sep 2021Espoo, Finland
highlights
  • Achieved state-of-the-art speech recognition with an end-to-end attention-based encoder-decoder.
  • Built distributed training with WebDataset over 26,000 hours of audio, among the largest ASR training sets at the time.
  • Built the data pipeline for a new ~26,000-hour corpus of business conference calls: forced-aligned it into ~9M utterances from 52,484 speakers, then repacked ~5 TB of small files into 3,000 WebDataset shards (2.1 TB), making data loading 7–8x faster.
  • Word error rate 10.87%, against 19.7% (Azure) and 21.9% (Google) cloud speech-to-text on samples of the same data.
  • Showed that more data trains faster, not slower: the 20,000-hour model reached the benchmark error in 48 hours vs 76 hours for 8,000 hours. Synchronous 4-GPU data-parallel training (V100s) halved training time and improved accuracy; asynchronous Hogwild did not.
  • Thesis: "Large Scale Speech Recognition with Deep Learning" (Aalto University and TU Berlin, Sep 2021; supervisors Prof. Mikko Kurimo and Prof. Sebastian Möller). PyTorch, SpeechBrain.
  • Project during the MSc: federated learning for remote-sensing data (TU Berlin, 2020).
roleSenior Engineer, Deep Learning and Computer VisionKaaenaat
AI vision systems for road safety and traffic: deep learning on edge hardware.
Jul 2016 – Jul 2019Bengaluru
highlights
  • Built a real-time motorcycle driver-assistance system for India: multi-camera CNN detection, object tracking and trajectory estimation.
  • Shipped a traffic-management vision system deployed in Argentina on sub-$100 edge hardware, with model quantization to run on it.
roleSide projectsIndependent
Two products I build and run myself with coding agents: a live news site and a private personal operating system.
projectGood Herald
India's daily good-news digest, live at goodherald.in.
livepublished daily

Every morning a GitHub Actions pipeline pulls 54 curated RSS feeds from about 30 news sources covering India (national and regional dailies, PIB, ISRO, Down To Earth; no scraping). An LLM (Gemini 2.5 Flash, falling back to Claude Haiku) picks 10–12 positive stories plus 3–5 "need to know" stories (hidden by default, shown with one tap), writes each summary in its own words and scores the day with the Good Herald Score (0–100, from "Stormy" to "Perfect") on a rubric that uses the full range, so hard news days score honestly. Every story is tied back to the source entries it came from, so the "Also read" links are real, never generated. Stories already covered in the past four days are filtered out, including follow-ups and reactions. Signed-in readers can add their own RSS feeds and get a daily AI digest for each one. The output is static JSON, a public RSS feed and a sitemap; a SvelteKit site on Cloudflare Pages rebuilds and deploys on every commit. Started from a fork of Kagi's open-source News (Kite) UI.

cronGitHub Actions · daily, early morning IST
fetch54 RSS feeds fetched in parallel · interleaved round-robin across sources
llmGemini 2.5 Flash with Claude Haiku fallback · select, summarise, score
groundingEach story cites its input entries · dedup against the last 4 days
siteSvelteKit on Cloudflare Pages · Supabase sign-in for "My Feeds"
costFree tiers apart from LLM calls · one optimisation pass cut estimated LLM cost per run by about 80%
outputStatic JSON + public RSS + sitemap · daily archive in git
projectAIPA
A private AI personal operating system: zero-touch, on infrastructure I own.
private

No third-party dashboards, every ledger in my own database. A daily GitHub Actions pipeline ingests bank and trade email alerts, finance and portfolio data, health data and watch history, writes everything through a validated, audited operations layer into Cloudflare D1 (with R2 for media), and exports a nightly human-readable backup to an Obsidian vault. I moved it from a git-markdown store to D1 in two days (design, an agent code review, migration, then byte-for-byte parity checks on every domain); the nightly export now refuses any write that would drop a row. Claude produces daily insights, a cross-domain morning brief, weekly analyses and a monthly per-holding portfolio review, all on Claude Haiku after a cost review. A private dashboard (Today, Money, Portfolio, Health, Travel, Entertainment, News) runs on Cloudflare Pages behind Cloudflare Access, and an MCP server lets Claude read and update it from my phone. Designed to run near the free tiers.

engineering choices
  • One writer, no delete: pipelines, the dashboard and the MCP server write only through a validated operations layer that adds an audit row to every write. No SQL passthrough, no delete operation, and pipeline writes can never overwrite a manual correction.
  • No browser or CI job holds a database API token or a write-capable key.
  • Find the bugs before migrating them: before the D1 move, four reviewer agents audited the codebase, one per domain; data-loss bugs were fixed first, because porting them into the database would have made them permanent.
  • OAuth refresh tokens are encrypted at rest and updated with compare-and-set, so a token that rotates on every use can't be lost to a race.
  • Unattended by design: dependencies pinned exactly, tests also run in UTC, every source retried without data loss; failed email parses go to a dead-letter queue and stay unread so the next run retries them, and a failed API day is skipped, never written as empty.
ingestEmail, finance, health, watch history · daily GitHub Actions
storeCloudflare D1 + R2 via Workers · every row keyed by source, nothing hard-deleted
exportNightly guarded export · to an Obsidian vault
llmClaude Haiku · parsing, insights, briefs and reviews
opsTests in CI · dead-letter queue for failed parses
accessPrivate dashboard behind Cloudflare Access · MCP server (OAuth 2.1, Cloudflare Access sign-in, owner-only) with read/write tools and no delete

education

MSc Machine Learning (minor: Entrepreneurship)

EIT Digital double degree, Aalto University and TU Berlin · graduated with honours, GPA 4.25/5; EIT Digital Excellence and Merit Scholarships for the full degree; Aalto Dean's Scholarship 2020

relevant courses

Deep Learning, Computer Vision, Machine Learning: Basic Principles, Speech Recognition, Statistical Natural Language Processing, Artificial Intelligence, Big Data Platforms, Principles of Algorithmic Techniques, Special Course in ML and Data Science (Universal Artificial Intelligence). Minor: Startup Experience, Digital Business Management, Global Business in the Digital Age, EIT Digital Summer School (circular city data, Rennes).

2019–2021
BE Computer Science and Engineering

Sri Jayachamarajendra College of Engineering (SJCE), Mysuru · CGPA 8.27/10

relevant courses

Pattern Recognition, Big Data Analytics, Probability, Statistics and Queuing, Design and Analysis of Algorithms, Data Structures, Database Management Systems, Advanced DBMS; final-year main project (top grade). Two published papers from BE work (see Publications).

2012–2016

publications · Google Scholar: 26 citations, h-index 2

ECLAIR: A High-Fidelity Aerial LiDAR Dataset for Semantic Segmentation

CVPR 2024 Workshops (second author) · cited 21 times · arXiv 2404.10699

2024
Large Scale Speech Recognition with Deep Learning

MSc thesis, Aalto University and TU Berlin · thesis.pdf

2021
Effective Approaches for Classification and Rating of Users' Reviews

Proceedings of the International Conference on Cognition and Recognition (ICCR) · co-author, BE work

2017
Machine Learning Approach to Predict Real Estate Prices

Discovery Journal 44 (205) · co-author, BE work

2015