Working together

Independent work runs through Coffee & Charisma, my product and design consultancy: one point of contact whether the job is a roadmap or a website.

I am most useful on the seam between two companies’ software

Integrations, partner ecosystems, and the product strategy around them, plus the AI tooling that makes a small team move like a larger one. Thirteen years of it: half as the engineer who built the thing, half as the product manager who decided what it was.

  • Good fit: A team with an integration or partnership problem and nobody senior who owns it.
  • Good fit: A founder who needs the roadmap and the build from one person.
  • Good fit: A product org that wants evals on its AI tooling, not a demo.
  • Not a fit: Staff augmentation, or a spec someone else has already frozen.

What I take on

Most engagements are one of these. Some are two, one after the other.

Product strategy

Roadmaps and requirements

Discovery, technical requirements, and go-to-market for teams building something new.

typically 4–8 weeks
Integrations

Partner and API strategy

Connectivity strategy, partner tiering, and an integration plan written before anyone builds.

typically 4–6 weeks
Fractional

Embedded product leadership

A senior PM for a team between hires, in the room and on the tools.

ongoing, a day or two a week
Build

Software and brand

Full-stack builds, internal tools, integrations, and the identity work around them.

scoped per project

The evidence

Work you can look at.

Software & AI · Independent

Corp-OS

A portable personal work OS, shipped as a Claude plugin. 23 skills that operate on a folder of markdown files.

ShippedClaude pluginMarkdownPythonEval harness
Software & AI · Independent

Bet Advisor

A sports forecasting and betting research tool across six leagues that says, on its front page, the closing line beats every model in it.

RunningPythonFastAPIReactTypeScript
Software & AI · Independent

Neutral Field

Public college football power rankings where every team's rating breaks into parts that add up to the published number.

RunningPythonReactTypeScriptVite