Personal Product 2025 — Ongoing · Case Study 02

A clipboard that finally remembers.

Stash is a desktop clipboard manager I designed and built end-to-end. It keeps everything you copy and lets you drag any past clip straight back into the app you're working in — Notion, VS Code, Figma, or the AI tool you keep feeding reference images to.

Role
Product, Design, Build
Stack
Electron · Claude Code
Platforms
macOS · Windows · Linux
Footprint
Menu bar · 100-item memory
Stash lives in the tray. One copy, kept. Drag it back out into anything.
01 The Users
Who this is for

Two people, stuck in the same loop.

Stash isn't for everyone who copies and pastes. It's for two kinds of people who do it relentlessly, in bursts, with images — and pay for it every time.

I kept seeing the same behaviour in designers deep in an exploration phase, and in the new wave of builders working alongside AI. Different tools, identical friction: collect a pile of references, then feed them somewhere, one painful round-trip at a time.

The explorer
Designers · inspiration phase
Hunting references across Pinterest, mobile, Dribbble, a dozen tabs. For a single board they'll pull tens of images — and want them all in one spot, not scattered behind back-and-forth copying.
The AI builder
Working with AI · vision-led
Showing an AI their direction with reference images, prompts and snippets — on every iteration. They need to reuse the same set fast, without leaving the context or re-uploading files each time.
02 The Friction
The problem

You copy all day. Your computer remembers one thing.

The system clipboard is a single slot. Copy a second thing and the first is gone — no warning, no recall. For the way these two users work, that one slot is the bottleneck.

For the explorer, every new reference erases the last. So gathering ten images becomes ten interruptions — copy, switch, paste, switch back, find your place again. The flow of looking dies the moment you try to keep anything.

For the AI builder it's worse, because images and prompts get reused. Re-upload the same reference. Re-type the prompt you liked. Dig through Downloads for the file you saved three messages ago. The cost isn't one paste — it's the same paste, over and over, pulling you out of the very context where the thinking happens.

A clipboard isn't a slot. It should be a place you can pull from.
Before Stash — collecting inspiration meant a constant copy → switch → paste loop, one reference at a time.
03 Validation
Proving it was real

I didn't trust my own itch.

A personal annoyance isn't a problem worth building for. Before writing a line of code, I validated it on both sides — a survey for breadth, one-on-one interviews for depth.

66%
Said copied items get buried under newer copies during work
Survey · SurveyMonkey
70%+
Found quick drag-out and a recorded clip history relatable and much-needed
Feature validation
8
Designers and builders in scripted one-on-one interviews
Qualitative depth

Quantitative. I ran a survey to pressure-test the pain points and use cases. Around 66% said copied items routinely get buried the moment they copy something newer, and the recurring theme was context switching — losing the thread of what they'd copied as they moved between tools. When I tested the proposed solutions, more than 70% said quick drag-and-drop of clips into their core apps, plus a recorded history of what they'd copied, were features they related to and badly wanted. Designers and builders alike were losing real time to this switching, and were open to trying something that fixed it.

Qualitative. I then interviewed 8 users — a mix of designers and builders — one on one, working from a planned script to understand how a solution would actually slot into their day. That's where the most important constraint surfaced: this couldn't be another app. A new place to manage would just add the context switching they were trying to escape. It had to disappear into the workflow they already had.

The users didn't want a new app. They wanted the switching to stop.
04 The Insight
Reframe

Three findings, three design principles.

The research didn't just confirm a problem — it pointed at exactly what the product had to be. Each finding mapped cleanly onto a principle I refused to compromise.

What we heard
66%

Clips get buried under newer copies — the pain is finding and re-using, not storing.

So the principle is

Build for retrieval, not memory. One drag out — no re-copy, switch, paste.

What we heard
70%+

Want to drag clips — text and reference images — straight into their core tools.

So the principle is

The clip lands where the cursor already is — Figma, an AI prompt, a canvas.

What we heard
8/8

Interviewees pushed back on "another app" — a new place to manage means more switching.

So the principle is

Live inside the workflow. Stay in the tray, invisible until summoned.

If you have to copy it again to use it, the history never saved you anything.
05 The Solution
What I built

A place your clips live, and a way to drag them out.

Stash keeps everything you copy — text, code, URLs, and crucially images — and gives you two ways back in, split by intent.

The Drawer is for when you're looking: full height, searchable, filterable, the place to gather a session's worth of references and pin the keepers. The Dock is for when you already know: a tiny popover at your cursor with the last five clips, gone the moment you've grabbed one. From either, you drag straight into the app you're working in.

Drawer
⌘⇧V · full panel
Slides in from the right. Search, filter by type, pin, delete. Where the explorer assembles a whole board of references.
Dock
⌘⇧Space · popover
Pops at your cursor with the last five clips. For the AI builder re-feeding the same references mid-flow, then it disappears.
01

Native OS drag-out, images included

The hard path technically, but the only one that felt invisible. Electron's webContents.startDrag hands the OS a real file drop — so a reference image lands in Figma or an AI tool as an actual image, not a workaround. This is the feature the whole product is built to deliver.

02

Memory-only by default

A clipboard sees passwords, tokens, private messages. So nothing unpinned ever touches disk — quit the app and your history is genuinely gone. Only items you explicitly pin (★) persist. Privacy isn't a setting here; it's the architecture.

03

Silently skip secrets

Stash detects and drops API keys, JWTs, AWS keys, OTP codes, and Luhn-validated card numbers before they enter history — tuned hard against false positives, so a normal URL or snippet is never blocked. The safest clip is the one that was never stored.

06 Impact
What changed

The round-trip disappeared.

Task: Collect 4 reference images for a design session
Without Stash With Stash
0s
Open site, find & copy image 1 13s
Switch to Figma / AI, paste 5s
↩ Switch back, re-orient to site 9s
Find & copy image 2, switch, paste 12s
↩ Switch back, re-orient to site 9s
Find & copy image 3, switch, paste 12s
↩ Switch back, re-orient to site 9s
Find & copy image 4, switch, paste 12s
~81s for 4 images
vs
0s
Open site, copy image 1 13s
Scroll, copy image 2 — still on site 6s
Scroll, copy image 3 5s
Scroll, copy image 4 5s
Switch to Figma / AI — once 3s
⌘⇧V → drag all 4 clips in 9s
~41s for 4 images
2× faster · no context lost

* Step durations measured from screen-recorded workflows (n=8 sessions). Re-orientation cost after app switch (~9s) aligns with Microsoft WorkLab's 2022 finding that workers take 9–15s to resume visual context after switching apps. Copy + switch cycle (~5s) based on OS app-switch latency of ~2.5s (Windows/macOS benchmarks) plus paste action. "Find image" times (~12–13s) are conservative medians from recordings — participants who lost scroll position averaged 14.3s.

For the explorer, gathering a board of references stopped breaking their flow — clips collect in one place and drag out when they're ready. For the AI builder, the same set of references and prompts is one drag away on every iteration, no file picker, no leaving the conversation.

Stash is live, open source, and the second product I've shipped that runs on someone else's machine. It started as a clearly-stated problem for two real users — and ended as the everyday tool I built to solve it, owned end to end from the insight to the installer.

A designer can own the whole thing — the research, the call, and the build.
See all work → Back to portfolio