We're rewriting our email client in the open
I run a managed IT company. I am not a programmer. And I use a custom-built terminal email client every day that an AI wrote for me.
It’s called lookout. It syncs my Outlook mail, triages it into tiers, and learns from me: when I mark something junk, it remembers, and the filter gets smarter. No machine learning yet. Just a log of my corrections that the classifier reads on every run. It works better than any junk filter I’ve paid for.
Here’s the interesting part. lookout is about 9,400 lines of Go and 2,000 lines of Python. The Go part is fast and solid. And we’ve decided to rewrite all of it in Python anyway.
That sounds backwards. Let me explain, because the reasoning is the whole point of this series.
Who can change what
The old question when picking a programming language was “which is faster” or “which is safer.” Those still matter. But when an AI agent is the co-maintainer of your software, a new question moves to the front: can the AI reshape every layer of the system, live, for an owner who doesn’t code?
lookout’s user interface is Python. When I want a change, I ask Claude for it, Claude edits the file, and the running app morphs in front of me. No rebuild. No release. It’s the closest thing to software as clay I’ve ever used.
The engine underneath is Go. It’s compiled, which means it’s sealed. If I ask for a feature that lives in the engine, the answer becomes “first install a developer toolchain.” For me, that’s fine, I have help. For the people we want to give lookout to, that’s a wall.
And that’s the goal: we’re open-sourcing lookout so anyone can import it into Claude Code, customize it, and train it until it’s theirs. A product whose whole promise is “make it your own” can’t have a sealed core.
The hot take
Compiled cores are fine for appliances. They’re wrong for clay. If your software’s value is that users can reshape it through an AI agent, every layer needs to be touchable, and that pushes you toward interpreted languages even when the compiled version is objectively faster.
I’ll hedge honestly: there’s a respectable counter-argument. A boring, reliable, precompiled engine under a moldable surface is a clean design, and nobody actually needs to customize “fetch mail from Microsoft.” If the Python rewrite can’t match the reliability I get today, that’s our fallback. I’ll report back either way.
What happens next
We’re not doing a big-bang rewrite. The Python UI currently calls the Go engine one command at a time, and that seam is the migration path: replace one command with Python, keep using the app daily, repeat. The day the last Go call disappears is v1.0, and that’s the version that goes public.
Every step of this gets written up here. The end goal isn’t actually the email client. It’s a free AI course that uses lookout as its case study, because it turns out one small email client touches a surprising number of ideas worth teaching: learning loops without ML, incremental rewrites, OAuth onboarding, packaging software for AI agents, and software that reshapes itself while it runs.
Nobody should need a training course to use an email client. That’s the point. The client is the take-home project. The concepts are the course.
More soon.