Replacing Productboard with an agent

Aug 24, 2026 · 10 min read

I built my first AI agent because I was annoyed.

It was mid-2025 and I was designing at Ledgy. Every time I started on a feature I wanted to ask one question: what have customers actually said about this screen? We had almost two years of feedback sitting in Productboard. I could not get an answer out of it.

What we had instead was a Friday ritual. Open Productboard, read the week's submissions, pick a category for each one. Roughly five minutes per item, every item, forever. And feedback still slipped away. Someone would forward a long customer email, and buried in the middle sat one line about a small pane that didn't work well. High impact, easy to fix, easy to miss. Unless you dissected the whole email into separate pieces of feedback, you lost it. We lost a lot.

So I had a dream that felt slightly unreasonable at the time: while designing, ask an agent to read every piece of feedback relevant to the thing on my screen, and solve the real pains instead of my best memory of them. Further out, agents that triage feedback themselves, dig through the codebase, come back with proposals. We tried exporting CSVs from Productboard and uploading them into a dedicated Claude project. Stale within a week. Painful every time.

The black hole

Turns out my annoyance was the mild version.

Biljana, our PM, opened the discovery thread with "if you hate ProductBoard, this message is for you," and the FigJam board filled up fast. Sales, CS and Support described the same pain from different angles. Submitting one piece of feedback took two to ten minutes, most of it spent hunting for the right category. People skipped submitting because they forgot between back-to-back calls. Urgent things bypassed the system entirely and went to Slack. And once something was in, silence. One CSM wrote:

It feels like a black hole where nothing is actioned or prioritised.

The map we drew of the old system. Dashed lines are manual steps.

The old tool's ending was almost comedic. Productboard shipped an AI beta, so we asked it for UX feedback across the thousands of notes we had in there. It returned nothing. I joked that Ledgy must have the best UX in the industry. We cancelled the contract.

Meet people where they already are

The brief I gave myself had two halves. Keep the original source of truth for every item, so its whole life can be traced from the customer's mouth to shipped. And make reviewing feedback so light that product people actually do it.

The first half meant metadata. Every item Ripple captures keeps its source link, the customer, their MRR, verbatim quotes, timestamps into the Gong recording. The model summarizes, but a human can always click through and hear the customer say it. An accepted item becomes a Notion page carrying all of that, and when its status later changes, the update posts back into the original Slack thread. The loop closes where it started.

The second half meant zero new habits. Nobody logs into a feedback tool. There are four ways in, and all of them are things people already do: say "product feedback" out loud on a Gong call, forward an email, mention the bot in a Slack thread, press one button in Intercom.

IF
Trigger: New call
Transcript contains"product feedback""product board""input for product"
THEN
Action: Fire webhook → Ripple

Say the words on a call. That’s the whole submission.

Peter9:16 AM

Sharing this call with Acme Corp — they had good comments on the vesting flow.

Ion9:18 AM

@Ripple extract feedback

Mention the bot in any thread. It reads the whole thread, attachments included.

Fwd: Feature request for reporting exportsHi team, forwarding what Acme’s admin asked about…
#feedback channel address

Forward the email. Ripple pulls out each distinct request.

send to
Trigger Reusable Workflow → Send to product
sent to product

One command from the support inbox, mid-conversation.

The four ways in. Every name here is fictional.

The whole system. Feedback comes in on the left, a human accepts or declines, and accepted items land in Notion.

I still remember the first demo. I was on a call with Chris from CS, explaining the trigger words, and because we kept saying them, the system processed the call we were on. Mid-sentence: "Oh, okay. It worked. Oh my god. Wow." A feedback item about an email unsubscribe gap, extracted from the conversation we were having about extracting feedback.

The review surface is a Slack card, because Slack is where discussion already happens. Severity, sentiment, quotes, suggested reviewers, and two buttons. Accept writes to Notion, HubSpot, and back into the Intercom conversation it came from. Decline exists because Chris insisted on it during testing, and he was right: unclear feedback should bounce back to whoever sent it, with a reason. If a PM wants more context, they ask in the thread like they would with any colleague.

feedback
Ripple9:41 AM

Sandbox environment to test changes safely |Acme Corp|€2.9k MRR

The customer would like a test environment to experiment with workflow and HR-sync settings without touching production data, so changes like automated granting can be tried safely before going live.

Request

It's a shame there's no sandbox environment, this would be great for testing. 00:29:29

We'd want to try the HR sync mapping somewhere safe first. 00:31:04


Customer: Jordan Smith, Rewards Analyst  •  Sent by: @frances

Reviewers: @biljana  •  @ion

3 repliesLast reply yesterday

The review card in Slack, with fictional data. Try Accept or Decline.

Where the intelligence actually goes

This is the part I keep coming back to, because I think it generalizes.

If you describe this problem to a model and ask how to solve it, it will mostly hand you deterministic plumbing. Parsers, regexes, category rules. The weights are conservative: they were trained on patterns from a year earlier, when "let the model read it" wasn't yet a normal answer, and they worry about hallucination, so they steer you toward things they can verify. You have to notice on your own what the model won't suggest, which is that some problems don't need a provably correct output. They need the signal caught and the source traceable. If Ripple labels a severity slightly wrong, nothing bad happens. A human reads the card, clicks the source, decides. Being roughly right costs almost nothing here. The old system's cost was missing the signal entirely.

So the split became: intelligence wherever reading and judgment compress hours into seconds. Reading a 40-minute transcript. Splitting one email into ten separate items. Judging severity from the customer's own words, whether they're neutral or genuinely upset. Deterministic code everywhere else. n8n let me build it half and half: the model sits inside a pipeline of fixed schemas, stable IDs, retries and fallbacks, with code on both sides of every model call checking the shape of what comes out. Even the small stuff is deterministic, like answering Slack's webhook within three seconds and doing the slow thinking afterwards.

One judgment stayed fully human: whether the feedback matters. A startup changes direction monthly, and no model sits in the strategy conversations that decide what's relevant this quarter. That's why Accept and Decline are buttons, not a prompt. When someone later proposed automating triage away, the PMs pushed back: reading feedback by hand is itself how you build product intuition. I'm with them.

The agent is a user too

The thing that surprised me most: half of the design work was designing for the agent.

Who should review a given piece of feedback changes constantly as teams shift, so ownership lives in a Notion table the agent reads at processing time. It tags the right reviewers even when the right reviewers changed last week. Its tools have call limits so a bad run can't spiral. And every instruction in the system prompt had to be checked against reality, because it's surprisingly easy to ask an agent for something that isn't possible with the tools you gave it, and then blame the model.

It fails, of course. Around 2 to 3 percent of items, across thousands. So I built a second agent that reads the error when a run dies, works out why, and posts the explanation with a proposed fix into a Slack channel where a human can act on it. Colleagues started building on top: an end-of-week agent now checks what wasn't processed and nudges the reviewers. Somewhere along the way it stopped being an automation and became a small product, with users on both sides of the model.

What happened

Before Ripple, feedback trickled in at a steady pace. After launch, the same company logged about three and a half times as much, every month. January 2026 alone brought in more than the entire second half of 2024.

Feedback per month, against the old paceJan 2024 – Aug 2026 · 1× = the pre-Ripple average

Peak month: January 2026, at more than five times the old pace.

Feedback per month, as a multiple of the old pace. The jump is the launch.

I don't think the volume is even the point. The point is that a CSM can say "I'll add that to our product feedback" on a customer call and it's true before the call ends. That anyone can answer "what happened to my request" without chasing. And that when I design now, I ask an agent what customers have said about the screen in front of me, and get an answer with quotes and links to the calls. The 2025 dream, quietly normal in 2026. By spring, the data-protection audit listed Ripple as critical infrastructure, which is a strange badge of honor for something that started as a designer's side project.

These are the real surfaces in production, names blurred:

Ripple installed as a Slack app, with its own DM channel and app profile in the Ledgy workspace.
Ripple installed as a Slack app
The Gong automation rule: if a call transcript contains the trigger phrases said by Ledgy, fire a webhook to the agent.
The Gong rule listening for the trigger words
A Slack thread where @Ripple is being mentioned under a colleague's message to extract the feedback in it.
Mention the bot under any thread
An Intercom conversation with the Send to product workflow being triggered from the command palette.
One command from inside Intercom
Drag or use the arrow keys to move through the deck. Press Enter to view the centred photograph full size.

It has now been running for ten months, mostly unchanged. With today's models I could rebuild it in a weekend, and honestly, the models would write most of it themselves. The part they still can't do is the part that made it work: noticing which problems in your company actually want intelligence, and which just want the signal to stop getting lost.


Special thanks to Biljana Pecelj, who ran the discovery and pushed the rollout through, and Chris Girdwood, whose "pinged back" rule became the Decline button. Sandro sorted the tooling.

This article was written by me, with the help of... you guessed it. Fable 5 and Kimi K3 turned my speech-to-text ramblings into drafts, and an adapted humanizer skill kept them sounding like me.

Mentioned: Productboard · Gong · Intercom · n8n · Notion