Skip to content

Currently building CRM Forge

I build platforms on .NET and Azure, and I make them last.

I'm a software engineer who likes the parts most people skip: clean data, code that reads well, and systems that still make sense a year on. Right now that means CRM Forge, an AI-first CRM for small sales teams. Before that I built and ran AlgoForgeX, an AI financial research platform. I've also started doing some game development.

Flagship project

CRM Forge

An AI-first CRM for small sales teams. The assistant finds prospects and shows you the page each one came from, fills in a company record from the firm's own website, finds the people who work there, and drafts the email, and nothing reaches your workspace or your prospect until you press the button.

.NET 10Blazor ServerMudBlazorEF CoreAzure SQLAzure Key VaultStripeClaudeMicrosoft GraphGmail APIApache EChartsMapLibre

AlgoForgeX

A financial intelligence platform for retail and prosumer investors, built around AI: portfolio and risk analytics, backtesting, on-chain crypto research, decision support, and a multi-tenant advisor and client portal. Built solo with heavy AI assistance, around 420,000 lines of .NET 9 Blazor running live on Azure. Informational and educational, not a brokerage.

.NET 9Blazor ServerMudBlazorEF CoreAzure SQLAzure FunctionsStripeApache EChartsClaudeOpenAI

The Football Draft

The platform that runs the weekly re-draft college fantasy league I have played in with friends for over a decade. Every week is a brand new snake draft from the entire NCAA pool, and real game stats score it automatically once Saturday is over. No mainstream provider supports the format, so I built the thing that runs our game: player research, matchup tags, an AI league assistant, and a records book going back years.

.NET 9Blazor WebAssemblyMudBlazorEF CoreAzure SQLSignalRAzure Communication ServicesStripeApache EChartsClaudeCollegeFootballData API

Loopwright

A theme-park builder for the browser. Lay paths, place rides, stalls and scenery, design a roller coaster piece by piece, and keep a crowd of guests happy and paying before the scenario's deadline. A deterministic integer simulation runs the park, so every game replays exactly, and player bots prove every goal can be reached. Plays with a mouse or by touch, installs as an app and works offline. Optional online play adds cloud saves, verified results and leaderboards.

TypeScriptPhaser 4WebGLWeb AudioPWAVitestPlaywrightAzure Static Web AppsAzure FunctionsAzure Table Storage

WallFall

A phone-first brick-breaker in your browser. A paddle, a ball, a wall of bricks, power-ups to catch and boards that get harder. Two hand-made sets, endless play from a generated pool, a daily with a result to share, and eight challenges, each mode in its own look. Installs as an app and plays offline.

TypeScriptPhaser 4PWAAzure Static Web Apps

Shoot The Apple

A phone-first physics puzzler. Aim the cannon, bounce off walls, ice, bouncers and teleporters, and hit the apple in as few shots as you can. Hand-made worlds, a level editor, generated daily and random levels, and online leaderboards with server-verified replays.

TypeScriptPhaser 4Rapier 2DPWAAzure Static Web AppsAzure FunctionsAzure Table Storage

What I work with

.NET 10C#BlazorEF CoreSQL ServerAzureGitHub ActionsAnthropic & OpenAI APIsMicrosoft Graph & Gmail APIsStripe

Latest writing

All posts →

·6 min read

The deadlock that lived in a constructor

Part 4 of the Solo-Build series: a .NET deep dive into how one blocking call in a singleton constructor deadlocked a whole Blazor Server app, why it happens, and the fix.

·8 min read

An AI wrote most of it. Here is what kept it honest.

Part 2 of the Solo-Build series: the concrete system that lets one developer run a large codebase with an AI. The conventions, the persistent memory, the custom skills, the audits, and the human review gate.

Have a project or role in mind?

I'm always happy to talk shop about .NET, data, or shipping software.

Get in touch