{"id":"cs-nps-comments-json-sentiment-theme","audience":"managers","category":"support-work","technique":"constraints","track":"support","level":"advanced","title":"Tag five NPS comments in JSON with mixed-sentiment rules","free":false,"task":"Tag each NPS comment and return one JSON code block with an array of five objects, one per line. Keys: id, sentiment (exactly \"positive\", \"neutral\" or \"negative\"), theme (exactly \"support\", \"product\" or \"pricing\"), quote (a verbatim phrase of 6 words or fewer). If a comment mixes positive and negative, sentiment is neutral and theme is the first one mentioned. Nothing outside the block. At most 7 lines of code.","materialLabel":"Your material (attached to your prompt automatically)","material":"NPS COMMENTS (Q3)\nC1: \"Support fixed it in minutes, brilliant.\"\nC2: \"Too pricey for what we actually use.\"\nC3: \"It does the job, nothing more.\"\nC4: \"Reports are slow and confusing.\"\nC5: \"Support is lovely but the reports are slow.\"\n\nTAG GUIDE\nsentiment: positive (praise only), negative (complaint only), neutral (lukewarm, or a mix of praise and a complaint).\ntheme: support (the team, replies), product (features, reports, speed), pricing (cost, value for money). For a mixed comment, use the theme mentioned first.\nQuote: a word-for-word phrase of 6 words or fewer from the comment.\n\nAnalyst draft: 'C5 is negative because of the slow reports.' (Mixed comments are neutral.)","rules":[{"type":"codeBlocks","count":1},{"type":"maxCodeLines","max":7}],"mistakes":[{"title":"Calling C5 negative","why":"The analyst draft says negative.","fix":"Say: \"A mix of praise and complaint is neutral; theme is the first mentioned.\"","checks":["r1"]},{"title":"Paraphrased quotes","why":"The AI rewrites the phrases.","fix":"Say: \"Quotes word for word, 6 words or fewer.\"","checks":["r2"]},{"title":"Extra text","why":"The AI adds an explanation.","fix":"Say: \"One JSON code block with keys id, sentiment, theme, quote.\"","checks":["r0"]},{"title":"Skipping the code block shape","why":"The AI splits output into several code blocks or none.","fix":"Say \"exactly one code block and nothing else\".","checks":["codeBlocks"]},{"title":"Letting the code sprawl","why":"The AI adds extra lines and comments.","fix":"Say \"at most N lines of code\".","checks":["maxCodeLines"]}],"promptHints":[{"label":"Asks for one code block","patterns":["code block","```"]},{"label":"Caps the code length","patterns":["lines"]},{"label":"Names the keys and values","patterns":["sentiment","theme","quote","neutral"]},{"label":"States the mixed rule","patterns":["mix","first mentioned","neutral"]}],"hint":"Tagging needs allowed values and a rule for mixed comments. State both with the JSON shape.","rubricLabels":["The output is a single JSON code block with five objects with the keys id, sentiment, theme and quote, and nothing outside the block","The tags are C1 positive support, C2 negative pricing, C3 neutral product, C4 negative product, C5 neutral support","Every quote is 6 words or fewer and word for word from its comment, and all values are from the allowed lists"]}