All work

collectionHQ User Cycle

I built the feedback system every department now uses, in six weeks

Four teams heard from customers every week, and all four lost it. There had to be a better way, so I built one.

Role
Senior UX Designer
Timeline
May 2026 to now
What I owned
Process design, Product design, Build, Rollout
Status
Shipped internally
User Cycle · shipped internally
The User Cycle home screen. A list of the signed-in user's tasks sits beside a panel counting what is waiting at each stage of the pipeline.1One box, and no form to learn2The weekly queue, cleared3Our own stages are the board
  1. 1One box, and no form to learn
  2. 2The weekly queue, cleared
  3. 3Our own stages are the board

The problem

Four parts of the business were talking to customers every week, and every one of them had its own way of losing what it heard. Nothing ever got back to the person who'd reported it.

My role
The old process wasn't mine, but I could see it wasn't working. I designed and built the replacement in my own time, got the directors' buy-in and rolled it out. I own the process now.
The team
The product owner and I go through the backlog together every week. The technical director moved it over to the company's accounts.

The result

86pieces of customer feedback captured
How this was measured

That's the count in the system itself since launch, and it covers the whole product range.

The system's own record

30 minto write a product spec, down from half a day
How this was measured

This is my own before and after, writing specs to our house structure.

I measured this one myself

26colleagues using it, in every department
How this was measured

That's every department at collectionHQ, not just the product team.

Accounts in the system

Context

Four ways to hear from a customer, four ways to lose it

Our product owner looks after the strategy, so what we're going to work on next and why. The process for handling customer feedback sat there too, and I helped run it. It wasn't my process, but I was the one doing most of the double handling, so I could see exactly where it was falling down. I kept thinking there has to be a better way to do this.

The reason it was broken is that four parts of the business were talking to customers every week, and each of them had come up with its own way of handling what it heard.

Where the feedback went

  • Sales would hear what was blocking a deal and write it in their own notepads. Sometimes it got to us on a group call, sometimes in an email, and sometimes it never got to us at all.
  • Support and implementation logged ideas in Salesforce, and those went into a spreadsheet that somebody had to pull by hand once a month. Because it was manual, it got skipped whenever we were busy putting out fires, and we usually were.
  • Customer success managers would hear things through the grapevine and pass them on, sometimes on Slack and sometimes by email. There was no real process for it across the portfolio.
  • My own team ran webinars, research calls, testing and focus groups, and wrote it all up in the research repository. We acted on some of it, but as often as not it just stayed there.

Decision 01 of 04

The fix that became the problem

The bind

Going into the cHQselect beta, we were about to rely on customer feedback more heavily than ever. The product owner came up with a process for it, and I helped run it as it grew. It started as a Slack channel for anyone who was hearing from beta customers. That got messy pretty quickly, so a submission form got attached to the channel, and it fed a spreadsheet that the two of us reviewed.

What I chose

It worked for a while, and then it didn't. We were getting duplicates from different teams and there was nothing to link them up. The form also wrote one row per submission, so anyone who'd had a good customer call, the kind that gives you five separate pieces of feedback, had to file them one at a time. Predictably, they filed the first one. Then the spreadsheet fed a set of pipelines in Miro. I'd move each feature in by hand, prioritise it there, and then create it all over again as a ticket in Jira.

What it cost

It was a complete mess. The same information was going in three times, mostly by me, and we were double, sometimes triple working. It wasn't my process, but most of the work in it was landing on me, and it had turned into a second job.

One place

One place, and a loop that closes

User Cycle brings all of that into one space, where everyone can see the work and track it.

Whenever someone submits feedback, it lands in review, and the product owner and I go through that backlog together every week. We merge anything that's a duplicate, and then we decide what happens to each request. It can go into the backlog, get dealt with straight away, go on hold, get rejected, or get blocked because something's missing. From there it moves through the six stages we actually use, which are research, ideation, validation, the product spec, design and build.

Crucially, whoever submitted the feedback can log in and see exactly where their request has got to. The spreadsheet could never do that, and it's a fair part of why people had stopped bothering to report anything.

User Cycle · shipped internally
The In review queue. Each row of feedback carries its type, its status, the product and area it belongs to, how many times it has been requested, and a one-line summary.
This is the queue the product owner and I clear every week. The number next to a row is how many times that same thing has been asked for.

It's amazing, and for CSMs in particular, it's really helping us support our customers and make them feel heard, especially when closing the loop on their ideas we've released.

Meryl Emslie, Vice President of Customer Experience, collectionHQ

What the AI does

What the AI actually does

It does five jobs, and they're all boring

  • It reads feedback however it turns up, whether that's typed in, a screenshot of an email or a photograph.
  • It asks a follow-up question if you've missed something the design process needs, so we don't take in a request nobody can act on.
  • It splits one customer call into separate requests, so you write it up once and get five clean items out of it instead of one.
  • It checks new feedback against everything that's already in the system, and shows the submitter anything that looks like a duplicate.
  • It drafts the product spec from the context it's already got and our house structure. Writing one by hand used to take half a day, and with a draft to work from it takes thirty minutes.
User Cycle · shipped internally
The submission screen. A single open text box invites the user to paste an email, type what they heard, drop in a screenshot or dictate it.
There's one box, and no form to learn first. You put the feedback in however you've already got it.
User Cycle · shipped internally
A confirmation screen headed "Here's what I pulled together", with the summary, library, contact, product and the customer's own words filled in and still editable.
What comes back is a draft for the submitter to check over. Nothing gets filed until they're happy it's right.
User Cycle · shipped internally
A dialogue headed "Draft this PRD with AI". It shows the context it already holds about the request, then asks which kind of user the work is for.
It starts with what it already knows and only asks for what it can't work out itself. So half a day of writing turns into half an hour of editing.

Decision 02 of 04

The AI doesn't make any of the decisions

The bind

The system has enough context to triage and prioritise on its own. If I'd let it, we'd have saved real time every week.

What I chose

I gave it the boring half and kept the judgement for us. When it flags a duplicate, it's only making an offer. The submitter sees the match and can merge it or leave it, and if they're not sure, they just leave it alone. Merging still gets us something, though. Duplicates end up as a single request, so the system counts how many times people have asked for the same thing. That lets us see what's hot amongst our users, and not just what came in most recently.

What it cost

Triage is still a conversation between two people once a week, and I still fine-tune every spec it drafts. I'd rather be slower and able to answer for every decision than faster and automatic.

User Cycle · shipped internally
A dialogue headed "Merge this request into an existing feature", listing two possible matches to choose between, above a cancel button and a merge button.
The system finds the possible matches and stops there. Whether to merge is up to the submitter, and it's fine for them to leave it alone.

Decision 03 of 04

I let the stages write their own tickets

The bind

The thing I'd missed for years was sitting in plain sight, which is that our process doesn't change. Research is the same set of tasks every time, and so is validation, and so is writing a spec, and so is design. And every single time, I'd been typing out that same set of tickets again by hand.

What I chose

Now the stages create their own. The minute you move a feature into research, its tasks show up on the product team's board, ready to assign. Each feature also carries everything behind it, so that's links to the Slack threads where we argued it out, the Figma files, the spec, and the customer feedback that started it. When a developer picks up a build, they can see who asked for it, what we agreed, where the designs are, and what we settled in a thread they never saw.

What it cost

Our process now lives inside a product, so if we want to change how we work, we've got to change the software and not just a habit.

User Cycle · shipped internally
A board with a column for each stage of the process: research, ideation, validation, the product spec and UI design. Every card shows how many of its tickets are done.
These are the stages we already worked in, and now they're the board itself.
User Cycle · shipped internally
A feature record. Cards along the top link its spec, its Figma files and the Slack threads about it, above the customer's own words and the tickets raised so far.
It's all on the record itself, like a single source of truth, so a developer doesn't have to go hunting for information.

Decision 04 of 04

I built the fix first, and then I got the buy-in

The bind

The process wasn't mine to change, and it kept getting worse. I could've written up a proposal, but it's a lot easier to say yes to something you can click through. There wasn any room on the roadmap for internal tooling, so waiting for some wasn't a plan.

What I chose

So I took the bull by the horns and built the first version in my own time, so I could put it in front of people and say, this is how we should do this. I used Figma and Claude Code to design and build it, it runs on React, Supabase and Vercel, and login is gated to our Microsoft single sign-on. I got the product owner on board, and then I put a presentation together for the managing director and the portfolio manager. My proposal was that I'd like to use it internally, and that there might be scope for it more widely across the group. The answer on using it internally was yes, and the process has been mine ever since. It took six weeks from idea to release.

What it cost

It ran on my personal accounts until the technical director moved it onto the company's. Nobody's made a decision about the wider group.

It solves a real problem in the customer voice of the pipeline, which will have a big impact on our process.

Steve Legowski, Managing Director, collectionHQ

What it changed

What it didn't fix, and what it changed

It didn't replace everything, and I'm not going to pretend it did. We still use Smartsheet and Miro, just not for anything to do with feedback. What it has done is let us move away from Jira, and it covers the whole product portfolio, not just cHQselect.

The bit I didn't expect was that it would change how I think about designing. I've always designed in Figma and then handed over to the developers, and for plenty of work that's still the right way to do it. But after building something that looks and behaves the way this does, I'm not precious any more about where the design happens.

Validation is the clearest example. If I can get a clickable prototype that people can really use in hours rather than a week, there's not much reason to test an idea any other way. That changes what's worth prototyping, and it means I'm happy to be wrong in front of a customer a lot earlier.

Where AI sat

What I used it for, and what I didn’t trust it with

I designed it in Figma and built it with Claude Code, on React, Supabase and Vercel. But I didn't hand over the judgement. Triage is still a weekly conversation between two people, and I fine-tune every spec the model drafts before it gets to an engineer.