# ProductSense bulk cleanup

> Run ProductSense's per-check suggestions over a page: streaming suggestions, accept inline, no stored reports.

Source: https://productos.ca/documentation/guides/workflows/productsense-cleanup (last reviewed 2026-09-22)

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

1. Open an entity surface (e.g. **Feedback**, **Features**, **Initiatives**).
2. Find the **ProductSense** split button in the toolbar. On any list page, `p` clicks it for you.
3. 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**.
4. 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`, or `unlink`
   - For multi-option suggestions: alternative targets you can pick between

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 `member` role or higher. A page-wide run is typically `$0.10–$1.00` depending 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? }`. Streams `text/plain` JSON suggestions; the `X-ProductSense-Checks` response 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` + `urgency` to normalize.
- **Quarterly hygiene**: first Monday of each quarter, run `descriptions` + `orphans` over feedback and features.
- **Before a stakeholder review**: run `descriptions` + `links` on `status = planned, in-progress` features so the planning surface isn't full of half-spec'd rows.
- **Theme-merge prep**: after a linking pass, run `breadth` + `descriptions` on themes to surface catch-alls and near-duplicates.

## Guardrails

- ProductSense never hard-deletes. The strongest actions are `unlink` and `set_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](https://productos.ca/documentation/guides/workflows/feedback-triage): the daily-loop counterpart to ProductSense's batch-loop.
- [Keyboard shortcuts](https://productos.ca/documentation/pages/settings/keyboard): full ProductSense panel shortcut list.
