work
LOOP Discover / Agentic marketplace
Case StudyDesigning an agentic marketplace without turning it into a chatbot. Voice, text, filters and direct manipulation all edit one mutable intent; the marketplace stays the interface and the agent operates it.
- Rejected chat as the front door: browse and ask are equal, and every request resolves into marketplace objects, in place
- The query is mutable intent, not a message: edit it, refine it, ignore a constraint, branch to Kilimani, undo, all on one state
- Requirements filter, preferences rank, scope never changes silently, and consequential actions are re-validated before confirmation
- Working prototype with the full interaction model, orb choreography and edge-case coverage, embedded in the case study
Play / Acquired by Apple
Case StudyAn iOS-native prototyping tool that let designers build and test real native interactions without code. Six people, four months, ten thousand designers, an Apple Design Award, one acquisition.
- Part of the design team on a six-person crew that built the whole thing in four months
- Designed for the hardest possible audience: professional designers who clock every unconsidered detail
- Native-first: real gestures, real physics, real platform behavior, not a simulation layered over static screens
- Grew to 10,000+ users through word of mouth; won Apple Design Award 2025; acquired by Apple June 2026
Yellowcard / Nudge
Case StudyTwo million customers had accounts and weren't using them. The Nudge Project was my answer: a system of contextual, in-app education designed to move people from passive signups to active traders.
- Research showed 85% of customers hadn't completed KYC. Most hadn't made a single trade
- Effort/value mapping exercise to cut a long list of ideas down to what would actually ship
- Tier 0 onboarding flow redesigned from scratch for first-time crypto users
- 44% deposit conversion, 82% buy conversion, 30% KYC completion after launch
Yellowcard / Alia
Case StudyMost support tickets were the same four questions. Alia is the in-app assistant I designed to answer them, built around the moments a language model does not understand, so its confidence never stands in for the company’s.
- The four suggested questions are the top four ticket types; free input still allowed, capped at 160 characters
- Not understood, slow and offline are designed states: the words come back in quotes, never a guess
- A thumbs-down is a request, not a rating: the next message is an offer to hand over to a human
- Alia is live inside the case study, every state included; escalation settled around 9%
Yellowcard / Onboarding
Case StudyOne sign-up for more than twenty African markets. I moved the phone number first so the dialling code carries the country, cut the flow from four steps to three, and let the market show itself on exactly one screen: the welcome.
- Phone first: the country stopped being a question and became something the system reads
- Only what makes a safe, valid account blocks Next; nickname, referral and opt-in say so
- Password rules that resolve as you type, help that keeps your place, white instead of yellow
- Both flows on the page, the shipped one live; 23% faster, +4.4% conversion
Lomanized
Case StudyI’ve designed Lomanized’s portfolio twice. Once in 2023 as one of my first independent projects, and again in 2025 with two more years of instinct behind me.
- v1 (2023): bold, graphic, type-heavy, an ambitious first attempt at a photography portfolio
- v2 (2025): composed and minimal, design steps back so the photography leads
- Full front-end build on v2: fast, responsive, smooth transitions
- Getting to redesign the same thing shows you exactly what actually mattered
Bathmate / Brand
Case StudyA sensitive category, a brand that needed to feel less aggressive and more human. I led the full visual identity and tone evolution for a leading men's health product.
- User research to understand hesitation patterns and trust signals in a stigma-heavy category
- Visual identity refresh: cleaner typography, modernized photography, composed not loud
- Brand voice rewrite from scratch: informative, direct, human
- Full rollout across web, packaging, email, and marketing
Clipr
macOS appThe native clipboard holds one thing. Everything else vanishes. I wanted a visual, local-first clipboard history that actually shows you what you copied, so I built one.
- Visual grid of every clip: screenshots, colors, code, URLs
- Click to paste, Cmd+click to paste multiple at once
- On-device OCR, instant search, sensitive data filtering
Chat Transfer
Web toolI use Claude and ChatGPT and some days prefer one over the other. Both will export every chat you have. Neither will import them. This is the missing step in between, and it reads Gemini too.
- Reads ChatGPT, Claude and Gemini exports, including Claude Projects and memory
- Four ways to move: one at a time, a bundle split to fit, a Project file, or a folder of files
- Runs entirely in the browser. Nothing is uploaded
Dial
macOS screensaverA Bauhaus-inspired analog clock screensaver for macOS, built natively with Core Graphics. Comes with a companion settings app so the dial you configure is exactly the one that shows up when the screen locks.
- 16 dial palettes, 3 movement types (Quartz, Mechanical, Digital), 9 night-mode lume colors
- Live settings sync between the companion app and the installed screensaver
- No third-party dependencies, ships as a native .saver bundle
Claude Beacon
macOS menu barI kept tabbing away during Claude Code sessions with no idea what was happening. Still working? Finished? Waiting on me? I built a tiny menu bar indicator so I don't have to go check.
- Animated spark + elapsed timer while Claude is thinking
- Tool label while running commands, yellow dot for permission prompts
- Signed, notarized, ships as a DMG
Focus Mode
Chrome extensionI'd read an article, close the tab, and genuinely not know how much of it actually landed. Built Focus Mode to strip the clutter and track what I actually read vs. skimmed. Turns out I skim a lot more than I thought.
- Clean reading view with paragraph-level scroll tracking and per-session history
- Reading stats in the popup: total reads, avg % read, minutes this week
- Save for Later with a full dashboard: search, sort, filter by read/saved/all
- Everything stored locally, no accounts, no network requests
Scalpel
Motion pluginBuilt as a motion plugin first: twenty-five presets that write straight into Figma's own animation system. It grew into six more tools along the way — tap targets, redline specs, consistency checks, flow diagrams, skeleton states, cleanup.
- Twenty-five motion presets that write straight into Figma's own animation styles and prototype reactions
- Flags touch targets below 44×44px so accessibility issues don't make it to the developer
- Generates annotated redline overlays and catches near-miss inconsistencies in color, type, and radius
- Maps every prototype connection on a page into a flow diagram in one click
LOOP Grotesque
Type designA rounded-terminal grotesque built from my own typeface project, Guks, and verified pass by pass: geometry-aware corner rounding, kerning measured against SF Pro Rounded, and an alternate master explored along the way.
- Geometry-driven terminal rounding, convex vs. concave corner classification
- Kerning re-measured against SF Pro Rounded's own per-weight values
- CFF→TrueType conversion, an alternate master, and a live comparison specimen