I build high-volume production systems in C#, React, and SQL Server. Lately, I've been wiring those same skills into LLMs, RAG pipelines, and multi-agent workflows, all running on local GPU hardware.
Side projects with open repos, live demos, and build logs. The three that shipped lead with their measured results.
Multi-agent code review for pull requests: an orchestrator fans a diff out to specialized quality, security, and docs agents, then synthesizes their findings into one ranked review. Agents reach real tools (Roslyn, Semgrep, the GitHub API) through MCP. The public, from-scratch version of PR automation I built at work.
Ask plain-English questions against your documents and get cited answers back. A C#/.NET RAG pipeline with swappable providers: the same code runs fully local (Ollama + ChromaDB) or on Azure (OpenAI + AI Search) by flipping one config value. The live demo answers questions about me.
Predictive maintenance as a complete MLOps loop: failure-prediction models trained on NASA turbofan sensor data, deployed to Azure through secretless CI/CD (OIDC, no stored keys), and watched for distribution shift with Evidently. The drift is real, not simulated: held-out operating regimes replay as production traffic, and when metrics cross threshold the pipeline retrains a challenger and a human approves the promotion. Six phases, built in public, with a live dashboard that reads the same log the monitor reads.
Benchmarks and fine-tuning studies on the NVIDIA DGX Spark. Not that Spark. The flagship experiment LoRA fine-tunes a 7–14B open model and asks whether it can replace the frontier model inside AgentReview's Quality Agent at matching precision and recall for near-zero cost per review, with everything but the model frozen at a tagged commit. Seven working weekends, one binary exit test per phase, every result traced to an MLflow run.
The way I work with AI coding agents, written down as a system: skills, agents, prompts, templates, and workflows so every ticket, review, and deploy gets the same care. All of it is plain markdown that works with Claude Code, Copilot, or Cursor, and it installs as a Claude Code plugin in two commands.
An end-to-end NLP pipeline that scores tweet sentiment and flags bot accounts with a 13-feature XGBoost classifier, serving live predictions through a Discord bot. Even back then, trained models were RSA-signed and verified at load time so the inference layer never runs a tampered pickle.
Authored XML API documentation adapting archived XNA reference material, adding platform-specific remarks for DirectX, DesktopGL, iOS, and Android runtime behavior.
Fixed the solar cell's implausible half-meter longest_side and added looks_like sprite fallbacks for the Xedra Evolved dream weapons, across two merged pull requests.
Standardized the Japan trivia answer format to support multiple accepted answers per question and added a 「〜ても」 grammar entry, across two merged pull requests.
Found a hardcoded Azure Cognitive Services endpoint and live API key exposed in a public course sample and submitted the security fix replacing the credentials with placeholders.
For the past 7+ years, I've been building the kind of software that can't go down: C# APIs, SQL Server architectures, React frontends, all running at scale for companies that process serious volume. One system I optimized validated over a trillion dollars in historical records. Another tool I shipped cut a team's monthly support tickets by 90%.
Everything on this page is proof you can check yourself: certifications with one-click credential links, projects with open repos and live demos, and benchmarks run on hardware I own. The full work history is available on request.
Now I'm taking all of that production discipline and applying it to AI. I'm building RAG apps, experimenting with multi-agent systems, fine-tuning open models on my own NVIDIA DGX Spark, and stacking certifications that reflect hands-on skill.
Production .NET and data engineering at the core, with an expanding AI and ML toolkit on top.
The foundation is a computer science degree. The proof is everything below it: verified certifications and projects you can actually open and run.
I pick certifications that prove I can build, not just define terms.
Cloud concepts, Azure services, security, privacy, compliance, and pricing
Building and deploying Azure Cognitive Services, AI solutions, and knowledge mining pipelines
Training, evaluating, and deploying ML and GenAI models with Azure Machine Learning and Microsoft Foundry
Git fundamentals, GitHub collaboration, repositories, workflows, and project management
AI-assisted development, prompt crafting, Copilot configuration, and responsible AI usage
Building MCP servers that give LLM-powered apps structured access to tools and data
Agentic coding workflows, terminal-based AI development, and real-world Claude Code usage
Designing and implementing reusable agent skill modules for AI-powered workflows
Orchestrating multi-agent systems with subagent delegation and task decomposition
Fine-tuning, benchmarking, and multi-agent experiments on the DGX Spark sitting on my desk.
Running models on my own hardware means I can experiment without watching API costs climb, keep data completely private, and iterate on model behavior without hitting rate limits or usage caps. When you own the compute, you move faster.
The DGX Spark's unified memory lets me load models that would normally require multiple consumer GPUs. That's what makes fine-tuning and full benchmark runs possible on a single box.
Notes, tutorials, and the occasional postmortem from the move into AI engineering.
Google's AI Agents Challenge surfaced something most people building multi-agent systems already suspect but rarely say out loud: the model isn't the bottleneck. The architecture is.
Six phases, 21 days, and every number measured. The wrap-up on DriftWatch: what it produced, what it cost, what broke, and what's still not done.
Google's AI Agents Challenge revealed something most tutorials skip: what set the winning multi-agent systems apart was software engineering, not model choice. Four patterns kept showing up in the report, and none of them is an AI problem.
Six phases, one thesis: the model is the small part. DriftWatch is done. This post has every number I measured, eight lessons each pinned to something that happened, and what the dashboard proved by being a page instead of a second app.
DriftWatch's drift phase is the one the whole project was built for. A real regime change dropped the champion model to ROC-AUC 0.50, the retrain loop brought a challenger back to 0.99, a screenshot exposed two bugs on the way, and a human still approves the promotion.
DriftWatch Phase 4 build log: how enterprise DevOps experience, not ML theory, solved secretless CI/CD, identity scoping, and a managed endpoint that had to prove it worked before it was allowed to disappear.
Open to full-time roles, contract work, and collaborations, especially anything that puts AI into production software.