About

One engineer. No account manager in between.

Wildflower Software is a solo consultancy. That's a deliberate constraint, not a stage on the way to an agency — it's what lets me take fewer clients and go deeper on each one.

What I actually do all day

I write Python. Mostly Django: models that survive contact with real data, query plans that don't fall over at 10× traffic, background jobs that fail loudly instead of silently. Increasingly that work has an AI-shaped piece attached — a retrieval pipeline, an agent loop, a classification step — and the hard part is almost never the model call. It's the evaluation, the cost ceiling, the retry semantics, and the part where a product manager asks why the answer changed.

The other half is deployment. Containers, migrations that run in the right order, secrets that aren't in the repo, rollbacks that work at 2am. Plenty of teams have a great app and a deploy process nobody trusts. That's fixable in weeks, not quarters.

How I work

Fixed scope where scope can be fixed, and honest hourly where it can't. I'd rather tell you a project is three weeks and be right than tell you it's one week and be wrong. Everything happens in your repo and your issue tracker, so you can see the work as it lands.

I default to boring technology and I document what I build. If I've done my job, the last deliverable is a walkthrough where your team asks fewer questions than you expected.

Open source

Django is community-maintained software, and I try to pay rent on the parts I use. That means upstream patches, conference talks, and a standing discount for nonprofits and OSS maintainers who need a hand.

Have something gnarly?

Slow queries, a Django upgrade you keep postponing, an AI feature that needs to survive production. Tell me about it.