Projects
Deep dives with architecture and measured results, including two IBM z/OS engagements, plus smaller work worth a mention.
Case studies
RAG Chatbot with MCP External Data Sources for a Global Automotive Client
A production-grade retrieval-augmented generation backend answering vehicle owner-manual questions: hybrid retrieval, four-layer caching, releases gated on measured quality SLOs, and an MCP connection to external data sources, built so web text can never pass as the approved manual.
Procedure answers: 2× faster (8.5 s → 3.9 s)
- Python
- FastAPI
- Qdrant
- MCP
- PostgreSQL
Event-Driven Content Platform for a Global Automotive Client
The platform behind the chatbot: a .NET 9 modular monolith of 11 services with transactional-outbox messaging into Kafka, an admin panel, and a mobile BFF, delivered under my team leadership.
Bounded services: 11
- .NET 9
- PostgreSQL 17
- Kafka
- MassTransit
- Keycloak
Driver App and Mobile BFF for a Global Automotive Client
The surface drivers actually hold: a Flutter companion app and its .NET mobile backend-for-frontend. It covers consent and GDPR erasure, moving every driver's data from devices to accounts, weather-based AI driving tips that never show an error, and a support handoff that carries the chat context.
BFF automated tests: 1,500+
- Flutter
- Dart
- .NET
- PostgreSQL
- Redis
Family Nearby: an Android Family-Location App on a Go Backend, Built Solo
My own product. A family location-sharing app shaped by 12,180 competitor reviews, with a Kotlin/Compose Android app, a single Go server with a live WebSocket map, and tag-to-production CI/CD with automatic rollback. Built with Claude Code and now in Google Play review.
Automated tests: 4,300+ (1,204 Go · 3,134 Kotlin)
- Go
- Kotlin
- Jetpack Compose
- PostgreSQL + TimescaleDB
- WebSocket
Airflow 3 + BigQuery Data Layer for a Property-Tech AI Tool
The data foundation for an AI tool that finds energy waste in buildings: self-hosted Airflow 3, a 65-way mapped backfill into BigQuery, idempotent MERGE loads, partition-pruned cost, and a CI gate so no DAG ever reaches the scheduler by hand.
Rows backfilled: 45,113 in 5 min
- Apache Airflow 3.3
- BigQuery
- Python 3.12
- Docker Compose
- GitHub Actions
Multi-Tenant Compliance SaaS at 400-Endpoint Scale
A vendor-risk and compliance platform: tenant isolation with EF Core global query filters, CQRS across 54 feature modules, multi-IdP SSO, and Stripe subscription billing.
REST endpoints: 413
- .NET 8
- Next.js 15
- React 19
- PostgreSQL
- EF Core
4.5 Years Evolving a Freight-Forwarding ERP
From feature developer to top individual contributor on a 12-project .NET solution: 25+ logistics and accounting integrations, the full rate-to-shipment lifecycle, and a live migration to .NET 10.
Commits over 4.5 years: 3,600+
- .NET 10
- Angular 13 → 20
- SQL Server
- Redis
- SignalR
A Desktop Product with Fail-Closed Licensing
BizXtract: a sole-authored cross-platform desktop app and its licensing platform: Ed25519-signed device-bound entitlements, offline grace, idempotent billing webhooks, and crash-safe local storage.
Entitlement TTL: 12-hour signed packages
- .NET 10
- Avalonia
- Node.js
- MongoDB
- Stripe
One CRM, Five Surfaces: a Political Campaign Platform
A Canadian political-campaign CRM (canvassing, predictive dialing, donations, surveys, and analytics) delivered across web, mobile, a Chrome extension, a Gmail add-on, and a member portal.
Commits on the main client: 821
- Angular
- Node.js
- AWS Cognito
- Stripe
- Leaflet
Porting a COBOL/CICS/DB2 Airline System to IBM Cloud Wazi
An open-source COBOL airline management system taken from a Git clone to a fully working online + batch application on a fresh IBM z/OS 3.1 instance on IBM Cloud Wazi: 30+ deployment errors diagnosed across 11 phases, from VPN networking to CICS pseudo-conversational bugs. Demonstrated at a conference in Japan.
Errors diagnosed: 30+ across 11 phases
- IBM z/OS 3.1
- IBM Cloud Wazi
- CICS TS 6.2
- DB2 v13
- Enterprise COBOL 6.5
Root-Causing a Silent z/OS-to-Cloud SFTP Failure
Consulting for a US mainframe software vendor whose JCL job reported success while its BPXBATCH SFTP upload silently died. Decoded the masked exit codes, found four defects in a single JCL review, and delivered production JCL, a REXX command generator, and runbooks for two SFTP stacks.
Defects found: 4 from one JCL review
- IBM z/OS
- JCL
- BPXBATCH
- REXX
- SFTP
More work
AI-powered Google Ads platform
Campaign management with ChatGPT-assisted suggestions, Angular Material UI, i18n, white-label.
Yodlee financial-data integration
Clean Architecture/CQRS .NET service integrating Yodlee aggregation APIs with token-based auth and normalized PostgreSQL persistence.
Full-stack realtime chat platform
Self-authored end to end: Angular + Material front end, Node/Express + MySQL API, Pusher realtime: DMs, groups, threads, reactions, file uploads.
AI voice calling for a real-estate CRM
Angular embed for Follow Up Boss placing outbound Retell AI voice-agent calls with dynamic LLM variables, writing outcomes back to the CRM.
LLM-powered website extraction API
.NET 9 Web API pairing AngleSharp parsing with the OpenAI API to return structured business data from any URL.
Workplace-safety signage SaaS
Maintained and extended an ISO 7010 safety-poster platform: Angular Universal SSR, NgRx, drag-and-drop poster editor, Stripe subscriptions.
Esports wagering platform
Full-stack development on a 1v1/5v5 matchmaking product: Node/Express + MongoDB, Socket.IO realtime, token economy, twin Angular player/admin apps.
Member portal & campaign websites
Angular self-service portal (memberships, renewals, recurring donations, event tickets) plus bilingual campaign sites for Canadian politicians.
Appointment scheduler
Angular + Material calendar booking app with lazy-loaded feature modules and reactive forms, deployed on Firebase Hosting.
Review-request micro-SaaS
ASP.NET Core MVC tool giving businesses branded landing pages that funnel customers to Google and Facebook reviews.
FarmNet (internship)
Agro-fintech platform connecting farmers, consumers, and investors, built with ASP.NET Core MVC.