UX CASE STUDY · DESIGN TOOLS · v1.0 shipped 2026, laptop pass Sept 2026
From a folder of 800 references to a shipped palette in under three minutes without sending a single pixel to the cloud.
Point Nitpic at a folder of references and a one-sentence brief. Get back a curated palette, a WCAG audit, and an exportable design system, in one window, in under three minutes. Everything runs locally.
Solo project, so I owned every layer: research, persona, IA, the visual system, the build, and the September pass that fixed the skin tone filter and made the shell work on a laptop. The audience I designed for is the audience I am: working designers and the creative directors who manage them.
The Problem vs. The Solution
Every color tool I owned wanted three jobs done on three surfaces: pick favourites in a viewer, build a palette in a swatch app, check contrast somewhere else. The work fell apart in the gaps between them.
Three tools, three tabs, nothing talks
One window, folder to palette
The Journey
Folder in, design system out. Two ways through the middle: by eye with the filters, or by brief with the AI. Nothing calls a cloud model unless the designer opts in.
The Impact
Nitpic is a personal product, so these come from benchmarking v1.0 against my own workflow.
Brief curation token payload
Key Design Decisions
Four calls that defined what Nitpic is, and what it deliberately is not. The full log of eight lives in the repo.
v0 was a single 680px column; on a 27-inch monitor half the screen was wallpaper. A Lightroom-style grid beat a Figma-style canvas.
Picking colors needs the reference grid, the image and the palette visible at once. The moment one overlaps another you are working blind underneath.
The app sends a one-letter-keyed JSON catalog per image: hex, tone bucket, lightness, hue, three tags. The model reasons about color in HSL space.
Vision calls cost tokens by the thousand and most local models cannot see. The catalog fits 150 images in 7,500 tokens.
Industrial camera: signal-red accents, amber lens motifs, Barlow Condensed display, Share Tech Mono data labels, void-black surfaces.
A color tool has to show a point of view or the pitch collapses. Designers trust tools that look made by someone who uses them.
Seven Monk-aligned buckets shown as 2×2 swatch grids, and a classifier that reads real cheek pixels. The September rework moved it onto the dermatology standard, the Individual Typology Angle, and measured it before it shipped.
A filter that works worse for some faces than others is not a neutral bug. If I cannot show the numbers, I have not fixed it.
Inner Workings
Three views of the same machine: what is on screen, how a dropped folder becomes catalog rows, and how a one-line brief becomes a curated set without a vision model.
Try the Tokens engine
The palette-to-design-system stage as a single page: pick a palette, watch the role heuristic map it onto tokens with a WCAG AA guard, flip light and dark, export CSS or JSON. The same engine that runs inside the app.
Inside the App
Live screens. Every image opens full size.
The September pass
Two things v1 got wrong and I only found by using it on a laptop. The skin tone filter put light-to-medium faces one bucket too light and missed small faces altogether. The shell was built for a 27-inch monitor and fell apart at 1280.
The classifier now reads cheek and forehead pixels from face keypoints, searches the image at three tile scales so small faces register, and buckets on the Individual Typology Angle, which uses yellow chroma alongside lightness so a brightly lit deep-brown face no longer reads as fair. Two test sets: twelve studio portraits generated locally and bucketed by eye first, and 84 faces from the CC BY FairFace set, each also pasted small onto a moodboard-sized canvas.
Design Process
Double Diamond, run end to end by one person. Owning every layer makes it tempting to skip the parts you find boring, so the artifacts kept me honest.
Discover and defineAudit · teardown · persona · six-stage journey
Design and deliverC-FRG system · Electron shell · v1.0 · September pass
Define: creative director persona, six stages from Discover to Output.
Design: three dark-mode wireframes, then C-FRG.
Deliver: Electron over Vite and FastAPI, one-command launcher. Four working features cut before v1.
Revisit: the September pass, measured before merged.
The hardest part of senior design is shipping less
Four features got cut from v1 after they were built and working: a region highlighter, a dedup button, a pop-out preview, a floating tone strip. The rule I landed on: if I could not state the cut reason in a sentence, the feature stayed. The September pass taught the other half of the lesson. A feature that ships without a measurement is a feature you do not know is working.
Let's build something impactful.
I'm currently open to new opportunities in UX/UI Design, Product Design, and GovTech transformation roles.