← All work

FiftyFlowers · Content from customer questions

Content Engine

What customers ask, turned into what the site is missing.

Six months of support conversations, product-page questions and reviews, grouped into topics and checked against what the website already answers, with a review queue of the answers and articles that are missing.

PROJECTContent Engine
MY ROLEAI Solutions Engineer · FiftyFlowers
STAGEIn the company AI workspace since June 2026 · nothing published through it yet
A grid of suggestion cards styled as storefront FAQ entries and pages

The review queue: each open suggestion drawn the way it would look where it lands. A local run of the dashboard’s own code with invented data for an invented shop.

The context

A problem worth solving.

Customers ask the same questions in support conversations, on product pages and in reviews, while many of the answers sit in the support team’s saved replies or nowhere at all. Nobody could see which questions the website already answered and which it did not.

My contribution

What I brought to the work.

Built the pipeline that gathers and classifies the questions, the matching that checks each topic against every place an answer can live, and a two-view dashboard: Explore for the evidence and Act for a review queue of suggestions with AI drafting on request. The queue was then rebuilt inside the company’s AI workspace. The work followed the AI discoverability research I delivered in March 2026.

The product

What it makes possible.

Three parts follow: the evidence, the review queue, and the pipeline behind them.

01

Gather and classify

Support conversations, product-page questions, reviews and every existing answer go into one analysis database. Rules sort each support message, so only real customer questions enter the pool.

02

Topics, not tickets

Similar questions are grouped into topics, and each topic is marked as FAQ material, a blog subject, or a problem that belongs to another team.

03

Coverage, surface by surface

Each topic is compared with the FAQ page, product FAQs, the help center, the blog and the support team’s saved replies, so a gap is a measured gap.

04

Seven kinds of suggestion

Each gap becomes a suggestion with its lineage: how many customers asked, how they worded it, the closest existing answer and the page it belongs on. Problems that content cannot fix are routed to the team that owns them.

05

A person approves

Reviewers approve or dismiss with their initials, and a digest hands the approved items to whoever places content in the store. Nothing is published automatically.

At a glance / simplified product view

  1. 01Customer questions
  2. 02Topics and coverage
  3. 03Suggestions for review

The original dashboard · Explore

From raw messages to measured gaps.

The original dashboard · June to September 2026

Explore is the whole pipeline on one page, top to bottom: where the data comes from, how raw messages become customer questions and topics, and which of the site’s answer surfaces already cover each topic. These pictures are the dashboard’s own code running on my machine with invented data for an invented shop, “SampleFlowers”. Every figure and every sentence of data is invented; the layout, the labels and the method text are the product’s. In the product a model names the topics; here the topic names are sample values.

A dashboard page titled Explore with cards for tickets, messages, product-page questions and reviews
Where the questions come fromOne card per source with its volume and the day it was last pulled: what customers ask, the support team’s own reference data, and the answers already live. Local run, invented data for an invented shop.
Bar charts of message labels, the question pool by source and the topics by kind
How messages become topicsEvery support message is sorted by rule, only real customer questions enter the pool, and the pool is grouped into topics, each with its kind and its ask count. Local run, invented data for an invented shop.
A table of customer-question topics with trend bars and coverage scores
Every recurring question, rankedOne row per topic: asks, a six-month trend, where the questions came from, the nearest standard question and how closely each of five answer surfaces covers it. Local run, invented data for an invented shop.
A topic row expanded to show a monthly chart, example questions and coverage links
One topic, openedAsks per month, example questions tagged by source, coverage surface by surface, and the review complaints that echo the topic. Local run, invented data for an invented shop.
Four columns of topics: FAQ page, product FAQs, help center and blog, and uncovered
Who answers whatThe topics sorted by which surface already answers them. The last column is the gaps, each linked to its suggestion in the queue. Local run, invented data for an invented shop.
A table of thresholds above a bar chart and a list of caveats
Thresholds and caveats, statedEach matching threshold is listed as an editorial choice, with why raw ticket counts overstate demand and what the method cannot tell. Local run, invented data for an invented shop.

The original dashboard · Act

Every suggestion says why it exists and where it would go.

Act is the queue. Each suggestion comes from exactly one of seven rules and carries its receipts, so a reviewer can trace it back to the questions behind it. Reviewers approve or dismiss with their initials, and a digest hands the approved items on. The same queue was rebuilt inside the company’s AI workspace, where staff use it today. No AI draft appears in these pictures: none was requested in this run.

A grid of suggestion cards styled as storefront FAQ entries and pages
The open suggestionsEach suggestion is drawn the way it would look where it lands: a storefront FAQ entry, a hidden page, a blog card. Local run, invented data for an invented shop.
The Act page with counts and seven cards explaining each kind of suggestion
Seven kinds, each with its destinationThe top of the queue: what is open, what can be drafted, and what each kind of suggestion is with a small picture of where it lands. The thumbnails are drawn stand-ins. Local run, invented data for an invented shop.
A suggestion window with lineage, reasons, customer wordings and a Generate draft button
Why a suggestion existsA New FAQ suggestion: its lineage, why it should exist, where it would go, how customers worded it and the closest existing answers. No draft was requested in this run. Local run, invented data for an invented shop.
A suggestion window previewing a product page’s frequently asked questions
Answers already writtenAnswers the support team has written for one product and not yet placed, shown as that product page’s FAQ list. One approval covers the product. Local run, invented data for an invented shop.
A suggestion window marked Signal with a routing slip to operations
Not everything is contentA Signal is a routing slip: a recurring problem passed to the team that owns it, with the customer wordings behind it. Local run, invented data for an invented shop.
An Approved section holding three suggestion cards each marked approved with initials
Approved, with initialsApproving stamps a suggestion with the reviewer’s initials and moves it to the Approved section. Local run, invented data for an invented shop.
A decisions log table with five rows of approvals and dismissals
Who decided what, and whenThe decisions log lists every approval and dismissal with its kind, the reviewer and the time. Local run, invented data for an invented shop.
A text digest of approved items with questions and answers
The digest for whoever places the contentWhat the digest button copies: each approved item with who approved it, where it goes and the questions and answers themselves. Produced here by a local stand-in that follows the product’s digest line by line. Local run, invented data for an invented shop.

Behind the dashboard

A pipeline that can be run again and checked.

The dashboard reads a snapshot written by a pipeline of plain commands over one analysis database. These pictures are the pipeline’s own commands and report code run on my machine against an invented database sized to match the sample dashboard.

Terminal output listing database tables with row counts, then a passing test run
Status and tests in a terminalThe pipeline’s status command lists each table of the analysis database with its row count and when it was last filled; its 28 contract tests pass. Run against an invented database. Local run, invented data for an invented shop.
A report page with a verdict summary table and a list of counts
A report that checks the team’s own sheetThe verified publishing backlog: what the team’s sheet says is published against what is live on product pages. Local run, invented data for an invented shop.

Engineering choices

The decisions behind the interface.

01

Route what content cannot fix.

A recurring shipping or website problem becomes a signal for the team that owns it, not a blog post.

02

State the thresholds.

Every matching threshold is listed on the page as an editorial choice, beside the caveats, so a reviewer can judge a suggestion instead of trusting it.

A model names each topic and writes a draft only when asked. Sorting the messages is rule-based, and matching uses text similarity with stated thresholds.

Where it stands

A queue in staff hands, with publishing still to come.

The review queue has been in the company’s AI workspace since June 2026, showing the June 2026 analysis. The original dashboard, which saved decisions for the whole team and drafted on request, was retired in September 2026. Bringing shared decisions and drafting into the workspace, refreshing the data and getting the first approved answers onto the site are the next steps; no content has been published through the queue yet.

Same company

More from FiftyFlowers.

FiftyFlowers overview
Keep exploringAI Media Manager