TokenPad

Prompt · Analysis

Sentiment analysis prompt

Reading customer feedback at volume where "negative" tells you nothing and "negative about delivery, positive about the product" tells you what to fix.

The prompt
Analyse the sentiment of the text below.

<text>
{{text}}
</text>

Aspects to assess: {{aspects}}

Return JSON:
{
  "overall": "positive" | "negative" | "mixed" | "neutral",
  "aspects": [
    {"aspect": "<one of the listed aspects>", "sentiment": "positive" | "negative" | "neutral", "evidence": "<the exact phrase>"}
  ],
  "intensity": "strong" | "moderate" | "mild"
}

Rules:
- Only include an aspect if the text actually says something about it. Silence is not neutral — omit it.
- Evidence must be a verbatim quote from the text, not a paraphrase.
- Return "mixed" for overall whenever aspects disagree. Do not average them into a single label.
- Judge the sentiment expressed, not the sentiment you would expect. A calmly worded complaint is negative; an enthusiastic report of a problem is still negative.
- Sarcasm inverts the literal reading. If you are unsure whether something is sarcastic, use the literal reading and lower the intensity.

What to fill in

{{text}}
A review, a survey response, a support message.
{{aspects}}
The dimensions you can act on: delivery, price, quality, support, documentation. Generic sentiment is not actionable; aspect sentiment is.

Why it is written this way

Every rule in the prompt is there because of a specific failure it prevents. Knowing which is which is what lets you adapt it instead of only pasting it.

Mixed is a first-class result

Most real feedback is mixed, and forcing it into positive or negative destroys the information. A five-star review complaining about shipping is the most useful review you will get all week, and a single label throws that away.

Evidence is required and verbatim

The quote makes every judgement auditable in a second. It also constrains the model — an aspect it cannot quote for is an aspect it was about to invent.

Silence is not neutral

This distinction matters when aggregating. Ten reviews neutral on price and ten reviews silent about price are completely different facts, and a prompt that conflates them produces a misleading chart.

Sarcasm has a defined fallback

Sarcasm detection is unreliable. Rather than pretending otherwise, the prompt states which way to fail and asks for reduced intensity, so the error is visible in the data.

The version most people write, and what it costs

Is this review positive or negative?

{{text}}

A review praising the product and condemning the delivery comes back "positive". Aggregate a thousand of those and your dashboard says customers are happy while the delivery problem that is driving your churn is completely invisible.

What it still gets wrong

  • Sarcasm and understatement remain the main error sources, particularly across cultures and in short text.
  • Intensity is not calibrated between runs. Use it for sorting within a batch, not as an absolute score.
  • Aspect lists shape the answer. An aspect you did not list is an aspect you will not hear about.

Check it before you ship it

To build one of these from scratch for a task not covered here, the prompt generator assembles the same structure — delimiters, output contract, edge cases — from an expert-authored blueprint, and the prompt review checklist is what to run over the result.