A token layer, a component library your team actually reaches for, and the docs that keep it honest. Built in code, not slides, so design and engineering finally read from one source.
Interfaces that behave.
I design and build the front of the product: a real design system, states that never surprise anyone, and pages that load before the coffee does.
Booking one project for Q3. Two slots left.- state
- default
- note
- Every control ships all six. This one is real, drive it.
Shipped with teams at
Three ways I earn my keep.
Most of my work is one of these, or a stitch of two. No decks of buzzwords, just the interface layer done properly.
Your Lighthouse is red and your bounce rate agrees. I trace the waterfall, kill the layout shift, defer the noise, and hand back a page that passes on a mid-tier Android over 4G, not just on your laptop.
Before you commit a sprint, I build the risky screen for real, clickable, with the states and the motion, so the team argues with a working thing instead of a static mock.
Selected work, with the numbers that mattered.
Case filesA short, unmysterious engagement.
Discovery call
Thirty minutes. You describe the mess, I tell you honestly whether I am the right fix.
Audit & plan
A written diagnosis: what is slow or broken, what I would do, and what it costs.
Build in the open
Weekly, working commits. You see it move, not a status doc. No surprises at the end.
Handover
Documented, tested, yours. Your team can extend it without calling me, though they usually do.
Ways to work together.
EngagementThe Audit
A week-long diagnosis of one product surface, with a prioritized fix list you own.
- Performance & a11y report
- Annotated interface teardown
- Costed roadmap
Project
The usual: a system, a rescue, or a prototype delivered end to end, built in the open.
- Design system or full rebuild
- Weekly working commits
- Documented handover
Retainer
A standing design-engineering seat for teams shipping fast and refusing to let quality slip.
- Reserved weekly capacity
- System stewardship
- Cancel with 30 days
The honest answers.
Both, on purpose. I design the interface and I ship the production code for it. The seam between the two is where most product quality leaks, so I close it.
Almost always. I plug into your repo, your design tools, and your standups, leave the team stronger than I found it, and document everything so nothing depends on me staying.
TypeScript and React by default, with framework-agnostic tokens underneath so the system outlives any one library. If you are on Vue or Svelte, the design layer still ports cleanly.
I take one project at a time. Right now the next opening is early Q3. An audit can usually slot in sooner, and it is the best way to hold a project slot.
Let's fix the interface layer.
Tell me the surface that keeps you up at night. I reply to every real message within two working days, from a human, not a funnel.
“Kep left our codebase calmer than he found it. The team still cites his docs a year later.” — Dana Osei, VP Engineering, Northwind
Something on my end hiccuped. Give it another go, or email hi@kepvance.dev directly.
Message received.
Thanks, friend. I've got it, and you'll hear back from me within two working days. Nothing else to do.