Skip to content
Will Kotheimer, smiling, in a grey bomber jacket

Will Kotheimer.

Software Developer · Nashville, TN

  • Azure
  • Foundry
  • Agentic Workflows
  • React

Nice to meet you. I make .NET and React apps on Azure, and I came up through Support and QA, so I care a lot about whether things actually work.

Below is a handful of things I've built and shipped, a few pieces of writing, and a bit about how I work. If any of it is useful, or you just want to talk shop about web dev or QA, my email is at the bottom.

~/selected-work

Built, and running in production

Every card: a live link, the GitHub repo, and a full case study.

Receipt Reader

C#.NET 10TypeScriptReactAzure Document IntelligenceBicepPlaywright

Receipt scanner · Azure Document Intelligence, nothing stored

LIVE

My first go at anything AI, and deliberately the smallest thing that could work: upload a receipt, get a table. The interesting part turned out to be what happens when the model cannot read it. Photographed sideways, the one creased receipt in the house scored 0.258 against a 0.50 threshold and was refused; rotated upright, same paper and same creases, it read PRIMARK, $10.00.

The Primark receipt lying on a dark surface, creased and photographed on its side so the printing runs vertically down the frame.
The photograph exactly as I took it. This is the orientation that scored 0.258 and was refused.

StockAggregator

C#.NETAzure App ServiceAzure SQLApplication InsightsPlaywright

Market analytics dashboard · solo build

LIVE

A .NET service that ingests daily market snapshots into Azure SQL and computes the analytics on top of them: a seasonality calendar, sector-rotation views, rebound and range statistics, and a correlation matrix. Pick any date span and every symbol gets a plain verdict on how it behaved across it.

HowToDoIt

TypeScriptReact.NETAzure App ServiceAzure Blob StorageSQL ServerBicep

Structured how-to app · an evolution of Playbook

LIVE

A checklist names the task and stops: it never says what "finished" is supposed to look like. An ordered set of captioned photos settles that: a compliance tool for a shop instead of a kitchen.

Sounds Like

JavaScriptCanvasLast.fm APISpotify EmbedNetlifyPlaywright

Artist similarity tree · Last.fm data drawn on canvas

LIVE

A simple idea kept simple: name a band, see the bands that sound like it, keep going. A force-directed graph is not a form I would normally reach for, it is usually decoration, but discovering music is the case where it earns its place, because wandering is the task rather than a detour on the way to an answer. The center node carries a Spotify player, so the tree is something you listen to.

Bidirectional 837

C#.NET 10TypeScriptReactEF CoreAzure App ServiceBicepVitest

ASC X12 837 translator · governed both ways

LIVE

An electronic medical claim translator that runs both directions: it generates synthetic bills and serialises them to ASC X12 837 Professional, and reads 837 files back into the same schema. The requirement joining the two halves is that a file read in and written back out is the file that went in, byte for byte. Built against a governance document written by a different model and treated as a binding contract, with every departure recorded and enforced by test.

~/about

A developer who thinks like a tester

I started in QA: nearly two years testing an enterprise fintech CRM across web, mobile, desktop and the stored procedures underneath, in Selenium and C#, before I moved to building the software rather than breaking it.

My testing influence shows up in my interest in prioritizing tests: we've moved on to Playwright now, but also I am interested in Vitest for frontend modules, CI/CD testing, Moq and xUnit for Service Tests, and Bruno for integration.

But this influence also carries over to how I think about AI governance. Good AC isn't just a checkbox, but a harness. This includes DTO and schemas, that provides knowledge of how the data will flow, before handing over the job to any AI, as well as what cannot change, what can change, and what should fail gracefully.

My day to day is Claude + Thinking, specifically .NET and React on Azure, App Services, Functions, Bicep, CI/CD, usually against systems and yes even manual testing. This is a muscle memory I try to infuse in everything I do.

Let's build something.

Have a project, a question, or just want to talk shop about web dev or QA? The fastest way to reach me is email.