Portfolio

A featured deep-dive into the project that proves the thesis.

Featured Project

Grade My Investments (GMI)

AI-Powered Stock Analysis & Rating Platform — designed, built, and deployed solo in six months using AI-first development. 270,000+ lines of code, 695 unit and integration tests, 11 background services, one architect.

What GMI Is

Grade My Investments is a full-stack SaaS analytics platform for retail investors. Users select a stock symbol — drawn from a catalog of 8,000+ US equities, 2,500+ ETFs, and 15,000+ mutual funds — and GMI generates a comprehensive analytical report graded on a familiar A+ to F scale, backed by 50+ financial metrics, ML.NET projections (revenue, debt, cash flow, sentiment), and conversational Claude-powered analysis on top.

The platform spans four client applications: a Blazor public web app, a .NET MAUI cross-platform mobile app (iOS / Android / Windows), a Blazor admin console, and a separate Blazor technology / documentation site. They all sit on a shared .NET 10 backend with Azure Functions APIs, MySQL persistence, and 11 specialized background services running on Azure App Service. Stripe handles pay-as-you-go billing with token-aware cost estimation; Google OAuth handles sign-in; Twilio handles SMS notifications.

Why I Built It as a Portfolio Piece

GMI is the project I built to prove out — to myself, and to clients — my own AI-first development thesis: a single senior architect using modern AI tools can now ship a production SaaS platform that would have required a 5–10 person team and two years of effort five years ago.

The numbers back the claim: 270,000+ lines of code, 695 unit and integration tests, 45+ design patterns, 4 client applications, 11 background services, and 50+ Azure resources — all delivered in six months by one person with Claude as a development partner. That's a 4× acceleration over what I'd have done with Stack Overflow and Visual Studio alone.

Everything an enterprise client asks me to evaluate is in this codebase: multi-surface frontend (web + mobile + admin), real authentication with PKCE, real money handling with idempotent webhooks, cloud-native infrastructure managed as code with Pulumi, AI integration with structured tool use and prompt caching, and machine learning that produces deterministic outputs from probabilistic inputs. Instead of pitching a slide deck about how I'd architect a system, I can point at GMI and say: this is what that decision looks like in production.

GMI is also a personal stress-test. AI-first development isn't "let Claude write the code" — it's knowing where AI accelerates you, where it slows you down, and where the architect has to step in. GMI is the receipt.

From PyEasy to Cloud SaaS — The Origin Story

  • 2020 — PyEasy. Started as a personal Python desktop tool that pulled financial data from IEX Cloud and printed analytical reports I'd hand-tune over several years.
  • 2023 — Forced migration. IEX Cloud shut down. The same year, Anthropic released Claude. Two events that would eventually converge.
  • 2024 — Re-platform. Migrated PyEasy to Financial Modeling Prep (FMP) as the data provider and committed to rewriting the whole thing as a web platform.
  • 2025 Q1 — Solo + Claude. Began GMI development in earnest, pairing with Claude through Claude Code, Visual Studio, Rider, and VS Code. AI-first workflow accelerated delivery roughly 4×.
  • 2025 Q3 — First cloud release. GMI dev environment shipped to Azure with full DevOps pipeline.
  • 2025 Q4 — Mobile. .NET MAUI cross-platform mobile app released — iOS, Android, Windows from one codebase.

Architecture & Engineering Highlights

  • AI orchestration across three Claude models. Routes between Claude Haiku (fast classification), Sonnet (report interpretation, conversational), and Opus (deep longitudinal comparison) per task — balancing cost, latency, and reasoning depth on every request.
  • ML.NET-powered projections. AI-powered financial forecasting producing revenue, debt, cash flow, and sentiment predictions with confidence intervals — alongside the deterministic Buy / Sell / Hold ratings that anchor every report.
  • Wave 3: Claude file analysis pipeline. Users right-click any file (PDF, DOCX, XLSX, PNG, JSON, etc.), see a real-time cost estimate, approve the spend, and the Gmi.ClaudeAnalysis.Console background service processes the job — batched 5 at a time, 3 concurrent API calls, 3 retries, with results saved as DOCX and HTML alongside the original file.
  • Wave 4: Report Comparison. Users select two ML report runs from the same symbol group; Gmi.ReportComparison.Console produces a structured 11-section narrative DOCX explaining what changed and why.
  • Token-aware billing. Every Claude call is metered server-side with cost estimation shown to the user before they commit. Stripe webhooks reconcile payment state with the usage ledger; idempotency keys prevent double-charging on retries.
  • Infrastructure as Code with Pulumi. Two complete environments (Gmi.Pulumi.Infrastructure.Dev and .Prod) defined in C#, deploying 50+ Azure resources reproducibly.
  • Multi-threaded report engine. Concurrent report generation with backpressure, request staggering, and aggressive caching to absorb upstream FMP rate limits without dropping user requests.
  • Scale-tested 200–500 virtual users. Custom Gmi.ScaleTest.Console + Gmi.ScaleTestRunner.Console load harness shaped to match expected end-of-quarter spikes; bottlenecks resolved before any customer could touch them.
  • 695 unit and integration tests. Dedicated test projects for the report engine and data access layer, with comprehensive coverage of the financial math and integration boundaries.

By the Numbers

1
Architect, End to End
6
Months of Development
695
Unit & Integration Tests
11
Background Services
4
Client Applications
50+
Azure Resources
45+
Design Patterns
1
Solutions Architect

Tech Stack

Frontend

Blazor Server Blazor WebAssembly .NET MAUI Bootstrap

Backend

.NET 10 / C# Azure Functions Entity Framework Core ML.NET

AI

Claude Haiku Claude Sonnet Claude Opus Anthropic API

Cloud & Ops

Azure App Service Azure Storage Application Insights Pulumi (IaC) Azure DevOps

Data

MySQL Financial Modeling Prep

Auth & Payments

Google OAuth PKCE Stripe Twilio (SMS)

AI Dev Tooling

Claude Code GitHub Copilot Visual Studio JetBrains Rider

See it live

The full platform is running on Azure. Click through, run a few symbols, and ask Claude about a balance sheet.

Client Engagement — AI in Production

A current, hands-on engagement showing AI applied to real enterprise work.

Healthcare · AI-Driven Cloud Migration

AI Agents Migrating a Healthcare Platform from AWS to GCP

Co-built an AI migration agent — Claude Code on AWS Bedrock plus custom MCP servers — that analyzes and ports large FHIR/HL7 R4 TypeScript codebases from AWS to Google Cloud, with the eventing, identity, and infrastructure-as-code to receive them.

  • AI agent (TypeScript) running a standardized, repeatable analysis across 350+ code bases — deterministic conversion output, architect-reviewed every pass
  • GCP eventing on Pub/Sub + EventArc and a fully unit-tested Pub/Sub abstraction layer (Python + TypeScript) preserving Kafka optionality
  • HealthLake → Google Healthcare API, DynamoDB → Firestore, Lambda → Cloud Run; OAuth2 and multi-tenant topology for a HIPAA workload
  • Test apps provisioned with Terragrunt and OpenTofu
Claude / Bedrock MCP FHIR / HL7 R4 Google Cloud Healthcare API Pub/Sub EventArc TypeScript Python Terragrunt OpenTofu

Enterprise Delivery Stories

Three more engagements from the work logs — banking, insurance, and healthcare at enterprise scale.

Banking · Cloud Modernization

Fiserv — Always-On Digital Banking for 2,000+ Banks

I served as top technologist on a 60+ person onshore/offshore program building Fiserv's cloud "stand-in" digital banking system on Azure — keeping online banking available for 10 million banking customers when a core banking platform goes offline.

  • Authored the system specification and led the Cosmos DB multi-tenant data architecture designed to scale to 2,000 future bank tenants
  • Wrote the Kubernetes/KEDA vs. serverless comparison that drove the compute decision, and validated the autoscaling pattern hands-on
  • Designed the PII security approach — format-preserving encryption, secured file transfer, OAuth 2 — and passed Fiserv's formal security review
  • Demoed the importer live to the Fiserv CIO; kept 60+ engineers aligned through written architecture and weekly code reviews
Azure Cosmos DB Kubernetes KEDA C# / .NET Kafka OAuth 2
Insurance · Solutions Architecture

FM Global — Property Risk Analytics Re-Architecture

A year as Solutions Architect at one of the world's largest commercial property insurers, reverse-engineering a legacy geospatial analytics platform and designing its cloud-native successor across a ~50-person, multi-vendor program.

  • Built the C4/PlantUML architecture-as-code practice and drove the 2.x/3.x target architecture through enterprise design reviews
  • Proved decisions with working code: a KEDA + Kafka autoscaling PoC demoed four times, and a hands-on ADF vs. Databricks vs. Synapse evaluation the team adopted
  • Designed the geospatial data architecture — five geocoders evaluated, Parquet/GeoJSON schemas, Esri ArcGIS integration
  • Owned application security: ran the Veracode SAST program and produced the platform's Esri authorization matrix
Azure Data Factory AKS KEDA / Kafka Esri ArcGIS Python / FastAPI PostgreSQL Veracode C4 / PlantUML
Healthcare · Platform Modernization

Centene — .NET Modernization & DevSecOps at Enterprise Scale

Nine months modernizing the utilization-management platform at a Fortune-25 managed-care enterprise — I wrote the .NET 8 upgrade playbook other teams followed and was named lead for the platform's AWS migration.

  • Authored the org-wide .NET Core 3.1 → .NET 8 upgrade playbook; ported the shared libraries every team depended on, then 15+ services personally
  • Extended GitLab CI/CD to three new environments with SonarQube and Prisma container scanning built into the templates
  • Designed CyberArk/Conjur secrets management for pipelines and ran the container vulnerability remediation program, presenting it to senior leadership
  • Asked to return as lead SRE — the client also raised converting me to permanent
.NET 8 GitLab CI/CD Kubernetes AWS SonarQube CyberArk / Conjur OpenTelemetry MongoDB

Built It, Hosted It, Ran It for Eight Years

The long-haul one — a B2B integration I owned end to end, from design through decommissioning.

Building Products · B2B EDI Integration

B2B Price Catalog Distribution on Google Cloud

A stone and tile supplier needed its price lists to land automatically inside its dealers' purchasing software. I designed the system, wrote it, hosted it on Google Cloud, and operated it as a managed service for eight years — then shut it down cleanly in 2026 when the client changed direction.

  • Generated conforming EDI X12 4010 832 Product/Price Catalog documents and delivered them to per-dealer FTP endpoints polled by dealer systems every two hours
  • Rebuilt a WPF desktop app into a containerized ASP.NET Core Web API and Angular SPA when the client centralized on NetSuite ERP
  • Cron-driven workers: customer/item/price-list sync from NetSuite twice daily, plus an FTP transmission queue drained every minute
  • Removed price editing entirely so the ERP became the only writer of pricing truth — the deletion that killed the catalog-drift bug class
EDI X12 832 NetSuite / SuiteTalk Google Cloud ASP.NET Core Angular MariaDB Docker nginx

Read the full write-up