The problem: A PM's day is buried in fetching. Files, playbooks, drafts, context.
What I did: Built a surface that fetches, so the human decides.
How: React, TypeScript, a 15-table Postgres schema, CI/CD. Hands on with Claude Code.
What changed: Six weeks from never having committed code to a live app on continuous deployment. Once the container was ready, the first commit came within days.
The itch
At OnPay Solutions I had a payments platform to run and a dozen tabs to run it with. Backlog here, playbook there, and a file I'd spend four minutes hunting for.
None of it was hard, but it was all friction. I wanted one surface with everything in reach.
That stayed a fantasy for years, because building it cost more time and money than I had. Then the cost of building dropped enough that I could participate, so I did.
I asked before I built
Mixed-methods research with two dozen colleagues: 11 interviews, 19 surveys. I wanted to know whether the friction I felt was mine alone.
It wasn't.
Not enough product tools store what I decide and the reasoning.
Ensemble treats context as the product: the mission, the problems, the people you serve, and the plays your team runs. Change one thing and everything upstream and downstream knows.
A chain was underneath it. Problems connect to hypotheses, hypotheses to experiments, experiments to stories, stories to shipped code. If the chain holds, you can trace any line of code back to the human reason it exists. If it breaks, you're submitting work items.
Ensemble offers you paths, not task lists.
Say you're closing out discovery. Stakeholders need to know what you decided. Ensemble already knows the play, so it gathers the data and drafts the artifacts and the notes. You review. You decide. It fetches.
Deciding was never the hard part. Everything before it was.
How I chose what to build
Function before polish. Persistent storage beat visual consistency, because I needed real data under real conditions before I made anything pretty.
Ensemble ran my options through the frameworks I had encoded and showed me where they disagreed. It never decided. It got me to the decision faster. I always made the call.
What it taught me
Frame the outcome, establish the context, and what comes back is usable. Super weird and rewarding. I didn't believe it until I had done it a dozen times.
What I wasn't ready for was the interrupt cadence. Agents finish on their own schedule, and every finish is a decision, arriving in bursts. This is context switching in an alert state, and the fix is learning when to check instead of doom watching. That's a working habit problem a tool amplifies. Ouch.
Why "Ensemble"
I started by calling it PM OS, which is what you name a thing when you're describing its function.
Then I named it for what it is. Ten fingers, two feet, one sound. Nothing succeeds alone.
The full write-up, with the partnership and the vision behind it, is in the PDF.