This is the third model I’ve pulled out of a spreadsheet and rebuilt as a web app, after the staff scheduler and the vehicle router. Going in, I assumed the optimization would be the hard part. It wasn’t. The solver finished in under a second every single time. The hard part was trusting what it told me — and the lessons that came out of that are the ones I keep coming back to.
Here’s what building a Roth conversion optimizer actually taught me. Not about Roth conversions — that’s a separate post — but about the craft of turning a twenty-year-old model into something other people can trust.


