← All work
● DeployedMulti-agent pipeline

Amazon Discovery Intelligence

Reads a week of customer complaints and says what to work on Monday. It names the first move, who owns it, and what it will cost. It reads reviews people posted publicly about an app I do not work on.

ProblemA PM cannot read every review, so they skim. Skimming feels fine, because you never find out what you missed.
DecisionA ranked list hands the queue back to the PM. So the score is small print, and each problem leads with a finding, a first move and a price.
Evidence299 complaints in the latest week, sorted into 33 problems across 7 parts of the app. Every claim links to the review behind it.
OutcomeOne problem out of 33 had enough behind it to act on, and the page says so plainly instead of ranking all 33.
The week at a glance: 500 complaints read, 33 problems found across 7 parts of the app, 32 of them not yet safe to act on, and 23 that cost people money. A coloured bar shows which part of the app each complaint came from. Below it, the one problem with enough behind it to act on.
A week in one screen, and the one problem worth opening first.
The chat view, scoped to all groups for week 34 on live data. It offers three questions to start with — the top complaints this week, which themes are worsening, and how ready this group is to act on — and states that answers cite specific signals by ID.
Ask the week a question. It answers only from the signals in scope, and cites them.

From a Visual Workflow to Hosted Code

The first buildAn n8n workflow. Twenty-nine nodes on a visual canvas, doing the right thing. Take reviews, clean them, find themes, score them, email a digest.
What brokePutting it behind a website means it has to be running somewhere. Either I leave my machine on, or I pay for hosting. I did not want either for a portfolio project.
The moveEvery node became a TypeScript module. The canvas became an orchestrator.
Who did the portI used Claude for it. Twenty-nine nodes of settled logic, translated rather than reinvented.
The pipeline’s chat view before a question is asked. The header names the group, the week and whether the data is live or a sample. The empty state says answers cite specific signals, and shows the citation format.
The chat opens scoped to one week of live data, and says up front that every answer cites the signals it used.