LLM systems
LLM-powered internal tooling using Claude API and LangGraph — RAG over clinical documentation, multi-step agent workflows for automated reasoning by clinical and engineering teams.
Production systems end-to-end
AI fundamentals from first principles
Product, infra, and model pipelines
Software engineer with 8 years shipping production systems across healthcare AI, biotech, and enterprise. My work spans backend APIs, React frontends, LLM-integrated pipelines, and the cloud infrastructure underneath — taking complex systems end-to-end.
Most recently at PictorLabs.ai — a UCLA spinoff in digital pathology — fine-tuning Google's PathFoundation vision model for automated stain-type detection, building LLM tooling with Claude API and LangGraph, and leading delivery of ClearStain, an AI virtual H&E staining pipeline for whole slide images.
I'm at my best where AI engineering meets real production engineering — training pipelines, retrieval systems, API design, and the infrastructure that holds it all up. Engineering fundamentals first, frameworks second.
MS Software Engineering
Rochester Institute of TechnologyNew York, USAB.Tech Mechanical Engineering
ITM UniversityGurgaon, IndiaPictorLabs.ai — AI Digital Pathology (UCLA Spinoff)
LLM-powered internal tooling using Claude API and LangGraph — RAG over clinical documentation, multi-step agent workflows for automated reasoning by clinical and engineering teams.
Led delivery of ClearStain — AI virtual staining pipeline for whole slide images, a major new undertaking integrated end-to-end into the existing VSH (Virtual Slide Hub) system. Owned Django API routing (organ / species / diagnosis-based predictor selection) and integrated ClearStain jobs with the platform's Kafka event flow and TorchServe model serving.
Within ClearStain, fine-tuned Google's PathFoundation vision model in PyTorch for automated stain-type detection (input validation before staining) — built full training pipeline including OpenSlide WSI patch extraction, tissue masking, and Macenko stain normalization.
Built adaptive chunked multipart upload (React Web Workers + S3) with concurrent worker pool, per-chunk exponential backoff, and recovery from the last completed chunk after a network drop, for multi-GB slides on a multi-tenant SaaS.
Medhaz Corp — Workforce Platform
Built candidate data management portal using Python/Django REST Framework and React.js, processing structured workforce data across organizations.
Led React 15→18 migration, optimizing performance via Concurrent Rendering and React Suspense.
Asurion — Insurance Tech
Lead dev of the Entitlement Engine — insurance claim eligibility API serving 40,000+ users weekly at 99% uptime via optimized Node.js architecture.
Monolith→micro-frontend migration enabling independently deployable release cycles and faster iteration across teams.
Designed and maintained serverless event-driven Python data pipelines on AWS Lambda + API Gateway + S3 + SQS + CloudWatch — automated downstream workflows at scale.
HYR Global Source — Client: The Kroger Co.
Built cross-functional frontend architecture and reusable React components deployed across multiple Kroger entities in an enterprise agile environment.
Built test suites with Jest and React Testing Library, increasing coverage by 50%.
GTR Event Technology
Built event registration and CEU platforms with automated CI/CD pipelines using React, Node.js, Express, MongoDB, and RESTful APIs.
Built a computer-vision system in Python + OpenCV for booth-layout detection from event floor plans — eliminated 50+ hours of manual work per event.
AI virtual staining pipeline for whole slide images at PictorLabs.ai (UCLA spinoff, venture-backed).
Every stage is an event on Kafka, with prism-api as the hub. influx detects stain type; prism-api derives the image type, applies blur QC and routing rules, and schedules inference only for unstained brightfield. H&E goes to ReStain, non-RGB to DeepStain, and other stains are rejected. nexus skips blank crops, runs tissue patches through TorchServe, and writes the virtual H&E for the viewer.
Led ClearStain's integration into the existing Virtual Slide Hub and merged the epic across the backend and the frontend.
Fine-tuned a classifier on Google's PathFoundation: a frozen encoder with a trained head, fed by OpenSlide patch extraction, tissue masking, and Macenko stain normalization.
Colour thresholds had labelled other stains as unstained with full confidence, the one error that silently corrupts a result. I narrowed the detector to the two classes that gate staining, unstained and H&E, and validated it on a labelled slide set.
The detected stain type gates all auto-staining. Image type is derived from channels and stain type on every read, never stored, so it cannot drift.
Owned the Django routing: AutoStainerRules choose a predictor by organ, species, and diagnosis from a master data model, so science changes need no deploy.
Wired ClearStain jobs into the platform's event flow, where each stage passes presigned URLs instead of image data.
Integrated TorchServe serving for the new predictor. The inference engine skips blank crops before they reach the GPU.
Built chunked multipart upload to S3 with React Web Workers, a concurrent pool, and exponential backoff on failed parts.
influx validates the file and detects its stain type: unstained, H&E, or another stain. That result, sent to prism-api as a Kafka event, gates all auto-staining.
Codebase reasoning engine that turns any GitHub repository into an interactive, navigable knowledge surface — natural-language Q&A with source citations, on-demand Mermaid diagrams (architecture / class hierarchy / call graph), and three-phase agent-generated concept tours.
Indexing stores the repository before queries arrive. At query time, retrieve from the saved index, rerank candidates, then compose an answer. Agent mode may retrieve again while reasoning, before its final answer.
Every retrieval layer is implemented directly, with no LangChain or LlamaIndex.
tree-sitter splits code by structure, and each chunk gets an LLM-written description before embedding.
Voyage code embeddings and BM25 in Qdrant, fused by RRF. HyDE or query expansion broadens recall.
A Cohere cross-encoder with a local fallback reorders candidates; parent-class expansion restores surrounding code.
A ReAct loop over 12 MCP tools, including caller tracing and a notes memory. Tool calls run in parallel, and every step streams to the user live.
Mermaid architecture, class hierarchy, and call-graph diagrams generated from the indexed code.
A multi-phase agent reads the README, maps the architecture, investigates in parallel, then writes a guided tour.
Technical answers are graded against their cited sources, and generation falls back across several LLM providers.
At ingestion, AST chunks and optional contextual descriptions are embedded into Qdrant. Queries reuse this index.
A self-hosted autonomous agent, built from scratch — no agent framework, wired to the model over raw HTTP.
Chat channels and the heartbeat start turns on one agent. Each tool call passes a permission policy that allows, refuses, or repairs it; tools run in a separate process. The reply is checked against the tool results, and a fabricated link is blocked so the agent retries. The run is recorded, and skill edits proposed from it apply only after approval, feeding back into the agent.
Raw HTTP to DeepSeek V4 Flash via OpenRouter, behind a provider fallback chain, with a per-tick iteration budget and a daily cost ceiling.
The same agent and history across the web console, Telegram, and Discord; a heartbeat runs each due task in its own isolated run.
Every tool call is allowed, refused with a reason the model reads, or run on repaired arguments. Identity arguments are pinned on unattended runs.
Replies and deliveries are checked against what the tools returned: work with no evidence behind it, or a link no tool produced, is refused.
Tools run in a separate process over MCP, namespaced in every trace. Untrusted web content is wrapped before it reaches the model.
Reflection proposes skill edits from execution traces; none applies until approved on the web, Telegram, or Discord. Skills are versioned with rollback.
Each approved edit is compared with the version before it on contract compliance, guard fires, and cost. The verdict is computed, never model-graded.
Every tool call, cost, and guard decision is logged; outages are kept out of reflection, secrets are redacted, and a prompt-leak canary guards the loop.
Chat on the web console, Telegram, or Discord and the heartbeat's due tasks all start turns on one agent: one conversation across channels, and each scheduled task in its own isolated run.
Turn a PDF into a guided lesson: a learning plan you approve, source-grounded questions, and a tutor alongside each exercise.
Extract the PDF, draft a plan and wait for learner approval, then run the quiz loop. Each question passes structural and faithfulness checks before use. Incorrect answers receive hints and retry the same question; correct answers advance to the next objective. Results appear only after the last objective.
The PDF becomes per-page text, low-text pages are flagged, and chunks keep their page numbers.
A LangGraph interrupt pauses after drafting objectives until the learner approves or edits them.
Each question passes structural validation, then an LLM faithfulness judge. Failures are regenerated, never served.
Every question cites the page and chunk it was written from.
A state machine owns grading, hints, retries, and advancing. Answer keys stay on the server; lessons persist in PostgreSQL, with an in-memory fallback locally.
An in-lesson tutor gives hints and rejects any that contain the answer text. It is a literal check, not a guarantee against paraphrased leaks.
First-try accuracy and topics to revisit, based on attempts and hints per objective.
A dashboard counts every rejected question and keeps each catch for inspection.
A PDF becomes page-linked text. Its contents ground the learning objectives and generated questions.
A topic-to-memo research pipeline for seed-stage AI infrastructure and developer tooling. Discovers candidates, gathers bounded evidence, and produces ranked company memos. Model-generated assessments pass citation-ID checks; code computes weighted scores and confidence-aware recommendations. Stages are cached for replay, with input-based invalidation and recovery from incomplete runs. Citation checks verify source references, not whether every claim is true.
Full encoder-decoder transformer implemented in PyTorch — multi-head attention, positional encoding, layer norm, greedy decoding, label smoothing, LR warmup. Trained EN→ES on the Opus Books dataset, end-to-end from "Attention Is All You Need".
Q-learning, DQN (Breakout), and PPO (LunarLander) trained on Gymnasium with Stable Baselines 3 — plus a custom multi-agent dual-taxi environment built from scratch (observation space, reward shaping, training loop). Domain breadth: not just LLMs.