How I work with engineers
The design isn't done until the thing on the user's screen matches the intent. Hand-off is where the collaboration starts, not where it ends.
Where the real collaboration happens
The interesting work happens after the spec is done. At Metaboly, we had a spike in sign-up drop-off that I couldn't reproduce in testing. I went across devices, browsers and OS settings: nothing. The issue turned out to be a third-party UI library rendering the sign-up form's input fields invisible for users on system dark mode. The inputs were there; they just couldn't be seen. We found it by going into Hotjar, identifying exactly where people were abandoning the flow, then watching session recordings until we saw someone hit the broken state on their device. The engineer patched it the same afternoon. Without the recordings we might have tested for weeks and never seen it.
At Stashrun, I prototyped the post-game stash reveal and the engineer wired up the data side, but the curves felt wrong on live values. We met in the middle: adjusted easing on my end, a cleaner data binding on his. That conversation only happened because QA surfaced the bug on real data, not a static prototype.
Tom is like a designer, PM and founder combined. He can anticipate technical blockers. His flows are clear and he always makes sure we fully understand what we're building and why before we start.
What that looks like in practice
- All states, upfront. Figma frames covering the happy path, edge cases, loading, and errors, so nothing needs guessing mid-build.
- Annotated specs. Behaviour, copy edge cases, transition timing, accessibility, API latency handling.
- Structured tickets. Title, description, acceptance criteria, attachments. Clear enough that context doesn't get lost in Slack.
- On-device QA. Real network, real data. Bugs go back into Linear with screen recordings, side-by-sides, and a clear blocker vs. polish call.
- Design adapts to constraints. If the framework pushes back, I find a path that works for both sides; no one wastes sprints on a fight that doesn't need to happen.
The QA system built from scratch at Stashrun
When I joined Stashrun there was no QA process. No spec for what "done" meant, no system for filing bugs, no way to track whether a fix actually shipped. I built one before the first release went out.
- ↗UI comparison across devices
- ↗Documented issues with screen recordings
- ↗Discussion threads per product feature
- Open QA doc & find the screen
- Compare design vs. build side-by-side
- Screen record the issue on device
- Log to Linear: title, severity, recording
- Mark status: Blocker / Polish / Done
- Re-test on device after fix ships
- Onboarding
- Game
- Post-game
- My Runs
- Starting a Run
- Supplementary pages
- Login / Signup

