01 / SUPPLIED INPUT
Start with a documented case
feedback_id,text,channel
FB-011,"The invoice was wrong.",email
FB-011,"The invoice was clear.",emailExcerpt from the supplied 15-record fictional feedback CSV. The same ID has conflicting text.
RUNNABLE TOOLKIT · VERSION 1.0.0
Turn a feedback CSV into a traceable theme report, an evidence ledger and a review queue.
For CX and product analysts.
USD · one-time purchase · Customer intelligence category: $6.99. This category includes its guided skills and this separate toolkit ZIP. Any applicable tax is shown at checkout.
Python 3.10+ · Standard library only · Runs locally · No API key

INSPECT BEFORE YOU BUY
All examples below use the shipped synthetic fixtures. They demonstrate operation and limitations, not customer outcomes.
01 / SUPPLIED INPUT
feedback_id,text,channel
FB-011,"The invoice was wrong.",email
FB-011,"The invoice was clear.",emailExcerpt from the supplied 15-record fictional feedback CSV. The same ID has conflicting text.
02 / RUN LOCALLY
python scripts/run.py --input examples/feedback.csv --rules examples/rules.json --output demo-resultsExtract the toolkit ZIP and run from its folder. Use a new output directory. On Windows, py -3 can replace python; on macOS/Linux, use your Python 3 command.
03 / READ THE REPORT
Accepted feedback: 11
Accepted feedback needing review: 5
Conflicting records excluded: 2
Output: evidence.csv, summary.json, report.mdReadable feedback report · text preview ↗04 / FOLLOW AN EXCEPTION
Both FB-011 rows are excluded as an ID conflict. The tool does not silently choose one version. Resolve the conflict with the source owner, then review mixed, unscored and untagged records.
# Feedback intelligence review Rule-based triage, ready for analyst review. These counts describe this CSV, not unique customers or population sentiment. Source: feedback.csv Source SHA-256: `6912e6e591fbf31b65bb3b20c68abc0df86e4c943c18afca93f32b61ff53d6e9` Rules: Synthetic subscription feedback - starter rules Rules SHA-256: `bf1c8f72d160d0a040fc5da111e5f1312addd60d9f373288178fd30134b5043f` ## Inclusion and data quality - Accepted feedback: 11 - Blank records ignored: 1 - Exact duplicate records removed: 1 - Conflicting IDs: 1 (2 records excluded) - Accepted feedback with review flags: 5 Repeated IDs with different normalized fields are excluded entirely until the source owner resolves them. Exact duplicates are counted once. Physical source row references include the header and quoted multiline text; see evidence.csv. ## Theme coverage Each theme coverage percentage uses accepted_feedback. A feedback can match multiple themes; percentages can total more than 100. Sentiment totals count accepted feedback once. | Theme | Feedback | Coverage | Positive | Negative | Mixed | Unscored | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | Onboarding | 3 | 27.27% | 2 | 0 | 1 | 0 | | Reporting and export | 4 | 36.36% | 2 | 1 | 1 | 0 | | Billing | 3 | 27.27% | 0 | 0 | 2 | 1 | | Support | 4 | 36.36% | 1 | 1 | 2 | 0 | Sentiment belongs to the whole feedback record. It is not evidence of the sentiment toward each individual theme. ## Source evidence examples Up to three accepted examples per theme, in input order. They illustrate the rules and are not a representative sample or ranked priorities. ### Onboarding - FB-001, source row 2 (positive): Setup was easy, and the onboarding checklist was clear. - FB-005, source row 6 (mixed): Getting started was confusing. A support agent was helpful. - FB-010, source row 11 (positive): The setup page has an excellent checklist. ### Reporting and export - FB-002, source row 3 (negative): The dashboard is slow; export failed twice. - FB-004, source row 5 (positive): I love the new reports. The export is fast. - FB-009, source row 10 (mixed): The report labels are clear, but billing is confusing. ### Billing - FB-003, source row 4 (mixed): Support was helpful, but the invoice shows the wrong charge. - FB-006, source row 7 (unscored): The refund arrived yesterday. - FB-009, source row 10 (mixed): The report labels are clear, but billing is confusing. ### Support - FB-003, source row 4 (mixed): Support was helpful, but the invoice shows the wrong charge. - FB-005, source row 6 (mixed): Getting started was confusing. A support agent was helpful. - FB-008, source row 9 (negative): The ticket form is broken and frustrating. ## Review queue Resolve all ID conflicts first. Then inspect flagged accepted records and audit unflagged records for rule errors. Full flags and exact source fields are in evidence.csv. - ID conflict: FB-011; source rows 12, 13 - FB-003, source row 4: mixed_sentiment - FB-005, source row 6: mixed_sentiment - FB-006, source row 7: no_sentiment_match - FB-007, source row 8: no_sentiment_match, no_theme_match - FB-009, source row 10: mixed_sentiment ## Analyst next steps 1. Correct or replace conflicting source IDs; rerun into a new output folder. 2. Review mixed, unscored and untagged records; document rule changes before comparing runs. 3. Read source evidence before proposing actions. No customer totals, financial impact, root cause or statistical significance is inferred. 4. Validate against human-labeled feedback from your domain. This tool has no claimed NLP accuracy.
WHAT ARRIVES IN YOUR DOWNLOAD
Literal phrase matching does not interpret negation, sarcasm or context. Theme percentages use accepted feedback as the denominator and can total more than 100%. These are workflow counts, not accuracy or customer-impact results.
Standalone toolkit files are MIT licensed. The category’s premium guided runbooks have separate single-user terms. Ongoing consulting, hosted execution and model subscriptions are not included.
CHOOSE YOUR SCOPE
The Customer intelligence category is $6.99. The complete 108-skill collection is $19.99 and includes all 3 runnable toolkits as separate ZIPs. Individual $0.99 skills are guided instructional packs.