Brand Voice Engine
A portfolio that doubles as a working brand-voice product, built so anyone on a team can write in-brand without me in the room.
- Role
- Solo · design, system, and build
- Year
- 2026
- Stack
- Cursor · Claude · Vercel · Next.js
THE STORY
I made my portfolio the product.
Instead of a static case-study site, I built this as a working brand-voice engine. The same tokens, voice rules, and components that render these pages also power an audit tool that scores copy against a brand. The portfolio isn't describing the work. It is the work, running live.
THE MOTIVATION
Brand voice dies in the handoff.
Voice guidelines live in PDFs nobody opens. The moment a new writer joins or a deadline hits, the brand drifts. I wanted to know whether an agentic system could hold a voice the way a design system holds spacing: portable, enforceable, and usable by someone who has never met the brand's author.
THE LEARNINGS
Voice is a constraint file.
- Designing in code closed the loop. Owning tokens, type, and motion in one Next.js codebase meant the old 'spec vs. build' argument simply disappeared.
- Agentic tools are fast, but taste is the bottleneck. Cursor and Claude generate options in seconds. The value I add is knowing which option is right, and why.
- A voice is mostly constraints. The engine only got good once I wrote down what the brand never says, and what it does.
WHAT I'D DO DIFFERENTLY
Next time, smaller and meaner.
- Ship the scoring engine before the showcase. I polished the portfolio shell first, but the audit tool is the genuinely novel part and deserved to lead.
- Write the evals first. I tuned voice by feel for too long before building a test set of good and bad copy to measure against.
- Treat 'coming soon' as a promise with a date. Open loops only build trust if they actually close.