Software Engineer working across data and AI — designing the architecture first, shipping it to production, and staying calm when it breaks at 2am.
I work across three disciplines that reinforce each other: software engineering as the foundation, then data engineering and AI engineering built on top of it. That means I design typed, tested, well-bounded systems — and then apply them to pipelines and models that have to hold up in production, not just in a notebook.
I care about the parts most demos skip — idempotent pipelines, tested transformations, typed tools behind real boundaries, measured accuracy, and human-in-the-loop control before anything touches production data.
- Software Engineering: Python and TypeScript across the stack, typed contracts and clean module boundaries, FastAPI and REST API design, React front ends, pytest suites with enforced coverage, CI/CD quality gates, Docker packaging, and refactoring that treats readability as a feature.
- Data Engineering: Medallion lakehouse design (S3 → Snowflake → dbt → Airflow), dimensional and SCD2 modelling, incremental/MERGE fact loading, keyless cloud storage integrations, and read/write boundary separation by role.
- AI Engineering: LangGraph state machines, bounded tool-calling agents, hybrid RAG (pgvector + knowledge graph), QLoRA fine-tuning with execution-based eval harnesses, and LLM enrichment turned into queryable warehouse columns.
- Production Reliability & Incident Response: MLflow experiment tracking, drift and data-quality monitoring, structured tracing, human-in-the-loop approval gates on anything that mutates production data, and root-cause analysis that reports
UNRESOLVEDrather than guessing.
|
10M-Order Batch Lakehouse + LLM Analytics Layer End-to-end batch platform: raw CSVs → Amazon S3 → Snowflake (medallion) → dbt → Airflow, over 10M orders and ~23M order items. An LLM lane enriches 300K free-text reviews into tested sentiment/topic columns, powering RAG chat, text-to-SQL and a Streamlit mart dashboard — every read-only consumer bound to a read-only role. |
Full-Stack Agentic RAG Platform with Citations & Evals A complete application: FastAPI backend with a React 19 + TypeScript front end, built as a typed monorepo with Docker packaging and CI. Users upload course material, state a goal, and get answers grounded in those documents — with citations, a prerequisite-aware roadmap, quizzes and progress-adaptive planning. Hybrid retrieval over PostgreSQL + pgvector, a knowledge graph, a bounded LangGraph, and a measured evaluation pipeline, held up by 1,643 tests at 83% coverage under strict |
|
Agentic Root-Cause Analysis for Failed Data Pipelines Given a 2am alert that |
Production-Ready 43-Class Computer Vision System Traffic sign classification taken from notebook to deployed service, with reproducible splits, calibrated confidence and structured error analysis. Checkpoint selection keys on macro F1 rather than accuracy — because accuracy hid a class sitting at 54.2% recall. 98.90% accuracy, 0.9837 macro F1 on the official 12,630-image test split, with MLflow tracking and a containerised FastAPI inference service. |
| Domain | Core Technologies & Tooling |
|---|---|
| Software Engineering | |
| Data Engineering & Warehousing | |
| AI Engineering | |
| MLOps, Cloud & Reliability |
Deep-Dive: Comprehensive Technical Stack & Tooling
- Languages: Python (3.12+), TypeScript, JavaScript, SQL (advanced — window functions, MERGE, recursive CTEs), Bash, Java (basics).
- Software Engineering: Typed interfaces and clean module boundaries, FastAPI and REST API design, JWT auth, SQLAlchemy, React 19 / Vite / Tailwind front ends, pytest suites with enforced coverage, strict typing (mypy) and linting (ruff), code review and refactoring, Docker packaging, semantic versioning and Makefile-driven developer workflows.
- Data Engineering: Medallion (Bronze/Silver/Gold) lakehouse design, star schemas, SCD Type 2 history, incremental fact loading, partitioning and clustering strategy, data contracts, idempotent DAG design, keyless S3↔Snowflake storage integrations, least-privilege role separation.
- Transformation & Orchestration: dbt (models, tests, macros, incremental strategies, exposures), Apache Airflow (DAGs, sensors, retries, backfills), Apache Spark / PySpark, Databricks notebooks and workflows, Delta Lake.
- AI Engineering: RAG (hybrid dense + lexical retrieval, knowledge graphs), LangGraph state machines, typed tool-calling agents, QLoRA / LoRA fine-tuning, vLLM serving, prompt and eval harnesses, execution-accuracy benchmarking, LLM enrichment into warehouse columns, text-to-SQL, guardrails and human-in-the-loop gates.
- MLOps & Observability: MLflow tracking and registry, CI/CD quality gates on model accuracy, containerized serving, drift and data-quality monitoring, structured tracing (LangSmith).
- Cloud & Infrastructure: AWS (S3, IAM, Lambda, EC2), Snowflake, Vercel, PostgreSQL + pgvector, SQLite, GitHub Actions, Linux.
Certifications & continuous learning: Databricks Fundamentals, Claude AI Fluency.
"A pipeline you can't re-run isn't a pipeline. An agent you can't measure isn't a system. Good engineering is what makes both of them maintainable."
- Software Craft First: Clear interfaces, low coupling and high cohesion, typed contracts end to end. The same discipline that makes an API maintainable is what makes a pipeline re-runnable and a model reproducible.
- Measure, Don't Assert: Every AI claim belongs behind an automatic evaluation harness. If accuracy can't be reproduced on a held-out set, it isn't a result.
- Idempotent & Observable by Default: Re-runnable pipelines, tested transformations, structured traces and honest failure modes — including saying "unresolved" rather than guessing.
- Built for Failure, Not Just Success: Incident response, human-in-the-loop approval gates and graceful degradation are designed up front, not bolted on after the first outage.

