Track user pains, feedback, and feature requests. Count how many users hit each one, then prioritize by count.
A dead-simple, dependency-free system: one CSV as the source of truth, one HTML file to view it.
| File | Purpose |
|---|---|
pains.csv |
The data. Columns: pain,n_requests. Source of truth. |
index.html |
The viewer. Reads pains.csv, sorts descending by n_requests. |
CLAUDE.md |
Instructions for Claude Code to handle incoming feedback. |
.claude/commands/pain.md |
A /pain slash command for logging feedback via Claude Code. |
- Clone the repo.
- Open
index.htmlin a browser to view current pains. - Add feedback (see below).
Open index.html directly. If the browser blocks loading the CSV (the file://
protocol blocks fetch), serve the folder over HTTP:
python3 -m http.serverThen visit http://localhost:8000.
pains.csv is just a CSV — edit it by hand or let a tool do it.
- Summarize the feedback into one short, canonical pain statement (a generic
problem, not a verbatim quote). E.g. "App crashes when uploading large file"
→
Crashes on large file upload. - Look for an existing row covering the same pain (match by meaning, not exact text).
- If it exists, increment that row's
n_requestsby 1. - If it's new, append a row with
n_requests = 1.
This repo ships a /pain command. Run it with raw feedback and Claude handles
the summarize → dedupe → increment/append flow for you:
/pain users keep complaining the balance doesn't refresh after deleting a transaction
See CLAUDE.md for the full flow.
- Keep the header row:
pain,n_requests. - If a pain text contains a comma, wrap it in double quotes:
"Slow, laggy search",3. - One pain per row. Keep statements short and de-duplicated.
MIT