Workflows
ProductSense bulk cleanup
Run ProductSense's per-check suggestions over a page: streaming suggestions, accept inline, no stored reports.
ProductSense is ProductOS's data-quality analyst. Instead of opening dozens of rows to fix typos and dangling links, you trigger ProductSense on a page, pick which checks to run, and review streaming JSON suggestions one at a time.
There are no stored reports: ProductSense streams suggestions to the panel in real time, you accept or dismiss each, and the action is written immediately. Closing the panel discards anything you didn't act on.
The check registry
ProductSense ships with 9 checks. One registry drives both the dropdown menu and the model's prompt, so the menu label and the check's behaviour can't drift apart.
| Check | Menu label | What it surfaces |
|---|---|---|
urgency | Triage urgency | Feedback rows whose urgency is missing or miscalibrated against ARR, segment and pain signals |
links | Suggest missing links | Entities that should link to existing themes / features / initiatives / releases but don't |
status | Align statuses | Statuses that contradict each other across linked entities (e.g. a release marked shipped whose initiatives are still planned) |
breadth | Flag broad themes | Themes / initiatives that are too broad or catch-all and should be split |
descriptions | Polish descriptions | Empty, too-short or stale descriptions, plus near-duplicate rows |
orphans | Find orphans | Abandoned drafts: default titles with no description, links or assignees |
tags | Suggest tags | Feedback with no tags, or tags that just repeat the product / module name |
team | Suggest team owners | Features and initiatives with no team member assigned |
vision | Polish vision & mission | The vision / mission page when the copy is empty, vague or drifting |
Each check declares which entity types it applies to: Polish descriptions runs on the most (down to accounts, personas, products, competitors, trends and objectives); Triage urgency and Suggest tags only on feedback; Flag broad themes and Suggest team owners on themes / initiatives and features / initiatives respectively; Polish vision & mission only on the Vision page. The dropdown shows only the checks that apply to the page you're on.
Running it on a page
- Open an entity surface (e.g. Feedback, Features, Initiatives).
- Find the ProductSense split button in the toolbar. On any list page,
pclicks it for you. - The main button runs every check that applies; the menu runs a single check (each has a number shortcut,
1–9, inside the menu) or Run all relevant checks. - The panel streams suggestions as Claude returns them. Each suggestion has:
- A severity (
error | warning | info) - A short title and description
- One concrete
action:link_existing,create_new,set_field, orunlink - For multi-option suggestions: alternative targets you can pick between
- A severity (
Navigate with j / k (or arrow keys). a or ↵ applies the focused suggestion; x or ⌫ dismisses; e edits the suggested value before applying; 1/2/3 picks a variant; ⌘↵ applies all visible suggestions in one shot.
Running it on a single entity
Single-entity mode has no button in the app: call POST /api/ai/productsense with mode: 'entity' from an in-app session. The in-app button always runs over the visible page. With mode: 'entity' the model loads the entity's full context (linked feedback, themes, features) and applies all checks that fit that entity type.
Cost + cancellation
- ProductSense uses your Anthropic key (the BYO key under Settings → AI) and needs the
memberrole or higher. A page-wide run is typically$0.10–$1.00depending on entity count. - The model's output is capped at the top 20 most important fixes per run, prioritized errors > warnings > info, so a single run won't fan out forever. Runs are limited to 10 per user per minute.
- Closing the panel discards the suggestions you didn't act on, but it doesn't abort a request already in flight, so you're billed for the run either way.
Programmatic access
- REST:
POST /api/ai/productsense(not under/api/v1/*; takes the in-app session, not API tokens). Body:{ mode: 'entity' | 'page', entityType, entityId?, entities?, checks? }. Streamstext/plainJSON suggestions; theX-ProductSense-Checksresponse header lists the checks that actually ran. - MCP: there is no dedicated ProductSense MCP tool. Claude Code sessions use the entity-specific MCP tools instead (
get_feature,update_feature_status, etc.).
Recommended runs
- Onboarding cleanup: after importing historical feedback, run
tags+urgencyto normalize. - Quarterly hygiene: first Monday of each quarter, run
descriptions+orphansover feedback and features. - Before a stakeholder review: run
descriptions+linksonstatus = planned, in-progressfeatures so the planning surface isn't full of half-spec'd rows. - Theme-merge prep: after a linking pass, run
breadth+descriptionson themes to surface catch-alls and near-duplicates.
Guardrails
- ProductSense never hard-deletes. The strongest actions are
unlinkandset_field; the orphans check may offer an Or delete variant, which moves the row to the Trash (restorable). Every applied suggestion goes through the same validated, audited action path as the Copilot and returns an inverse, so the panel's Undo reverses it. - Every applied suggestion writes an activity-log entry through that AI apply path; it's tagged as an AI apply rather than a separate ProductSense actor.
- Re-running the same check on the same scope returns few new suggestions, because the model sees the cleaned state.
Next
- Feedback triage: the daily-loop counterpart to ProductSense's batch-loop.
- Keyboard shortcuts: full ProductSense panel shortcut list.