Skip to main content

How is feedback quality scored?

Last updated 15 min read

Coolhand turns raw feedback into two numbers: a sentiment score drawn from likes, dislikes, and explanations, and a revision score measuring how much a user changed the output. Together they separate outputs people disliked from outputs people had to rewrite, which are different problems with different fixes.

This guide explains how to interpret the feedback analytics dashboard and understand what the metrics mean for your LLM workloads.


Quick Reference: Chart Glossary

Sentiment Chart (Sentiment Breakdown View)

Term Definition
Positive Feedback where the user clicked thumbs up. Indicates the response met their needs.
Negative Feedback where the user clicked thumbs down. Indicates dissatisfaction with the response.
Neutral Feedback where the user did not provide a thumbs up/down rating. This is not a middle rating—it means no explicit rating was given.
Positive Rate Percentage of rated feedback that was positive: Positive / (Positive + Negative) × 100. Neutral feedback is excluded from this calculation.
Negative Rate Percentage of rated feedback that was negative: Negative / (Positive + Negative) × 100.
Neutral Rate Percentage of all feedback that had no rating: Neutral / Total × 100.
Avg Revision Average revision score converted to percentage: (Revision Score / 5) × 100. Shows how much users typically edit responses.

Sentiment Chart (Net Sentiment View)

Term Definition
Net Sentiment A combined sentiment score that weights rating sentiment (60%) and revision sentiment (40%). Rating sentiment = (Positive - Negative) / Total × 100. Revision sentiment converts edit behavior to -100% to +100% (minimal edits = positive, heavy rewrites = negative). Ranges from -100% to +100%.

Sentiment Chart (Compound Sentiment View)

Term Definition
Compound Sentiment A 0-100% score that combines explicit ratings (thumbs up/down) with behavioral signals (how much the user edited the response). Higher = better. See How Compound Sentiment is Calculated below.

Match Rate Chart

Term Definition
Matched Feedback that was successfully linked to the original LLM request. This allows you to see the prompt and response alongside the feedback.
Unmatched Feedback received without a link to the original request. The feedback is still valid, but you won't be able to see what prompt/response it refers to.
Match Rate Percentage of feedback that was matched: Matched / Total × 100. Higher match rates mean better traceability.

Feedback Types Chart

Term Definition
Rating Only Feedback that only includes a thumbs up/down rating, with no revised text provided.
Revision Only Feedback that only includes edited/revised text, with no thumbs up/down rating.
Both Feedback that includes both a rating AND revised text. This provides the richest signal.

Collection Rate Chart

Term Definition
Collection Rate Percentage of LLM request logs that have received at least one piece of feedback. Measures how representative your feedback sample is of actual workload activity.
Logs with Feedback Count of unique logs that have one or more feedback submissions linked to them.
Total Logs Total count of client LLM request logs (excludes bakeoff comparison logs).

Understanding the Dashboard

What Each Chart Tells You

Sentiment Chart (Sentiment Breakdown) — Are users happy with responses?

  • High positive rate (>70%) suggests responses are meeting user needs
  • Rising negative rate may indicate quality issues or changing user expectations
  • High neutral rate means users aren't engaging with the rating system
  • Avg Revision shows how much users typically edit responses (higher = less editing needed)

Sentiment Chart (Net Sentiment) — What's the overall trend?

  • Combines rating sentiment (60%) with revision sentiment (40%)
  • Positive values (+) mean more users are satisfied than dissatisfied
  • Negative values (-) mean dissatisfaction is winning
  • Track this over time to spot quality trends

Compound Sentiment — How good are responses when combining all signals?

  • Scores above 80% indicate high-quality responses
  • Scores between 60-80% suggest room for improvement
  • Scores below 60% indicate significant quality issues
  • This score is more nuanced than binary thumbs up/down because it incorporates editing behavior

Match Rate — Can we trace feedback to requests?

  • Match rates below 90% may indicate integration issues
  • Unmatched feedback is still useful for aggregate trends but limits debugging

Feedback Types — What kind of feedback are we getting?

  • High "Rating Only" suggests users aren't taking time to revise
  • High "Revision Only" suggests users prefer to edit rather than rate
  • "Both" provides the most complete picture of user satisfaction

Understanding Collection Rate

Collection Rate measures what percentage of your LLM request logs have received feedback. This is different from Match Rate:

  • Match Rate: What % of feedback has been linked to logs (feedback accuracy)
  • Collection Rate: What % of logs have received any feedback (feedback coverage)

Collection Rate helps you understand how representative your feedback sample is of actual workload activity. A low collection rate means your sentiment analysis may not reflect the true user experience across all requests.

Collection Rate Benchmarks

Collection Rate Interpretation
20%+ Exceptional - near-comprehensive coverage (e.g., integrated review workflows)
5-19% Excellent - strong feedback loop with representative sampling
1-4% Good - typical for most production workloads
0.1-0.9% Low - sparse feedback, interpret trends with caution
<0.1% Very Low - insufficient data for reliable sentiment analysis

Note: Collection rates vary significantly by workload type:

  • Human-in-the-loop workflows (e.g., content review, summarization): 20-40%
  • Automated pipelines with spot-checking: 1-5%
  • Background/batch processing: Often <1%

High-Signal vs Low-Signal Feedback

Not all feedback is equal. High-signal feedback (revisions, explanations) provides more actionable insights than binary-only feedback (thumbs up/down):

Feedback Type Signal Value What It Tells You
Revision + Rating High Exactly what was wrong and user sentiment
Revision only High What needed to change (actions > words)
Explanation + Rating Medium-High Why user was satisfied/dissatisfied
Binary rating only Low Directional sentiment, no actionable detail

Consider tracking both overall collection rate AND high-signal collection rate for a complete picture.


How Compound Sentiment is Calculated

The Compound Sentiment score combines two signals:

  1. Binary Rating (60% weight) — Did the user like or dislike the response?
  2. Revision Score (40% weight) — How much did the user edit the response?

Why These Weights?

  • 60% for explicit rating: The user's stated opinion is the strongest signal of satisfaction
  • 40% for revision behavior: Actions complement words—heavy editing suggests the response needed work, regardless of the rating

The Formula

Compound Sentiment = (Binary Score × 0.6 + Revision Score × 0.4) × 20

Where:

  • Binary Score: 5 for thumbs up, 1 for thumbs down
  • Revision Score: 1-5 based on edit percentage (see below)
  • The × 20 converts to a 0-100 scale

Understanding the Three Revision Scores

When a user provides revised output, three scores are calculated:

Edit Score (Levenshtein-based)

Measures how much typing/deleting the user did (character-level edit effort).

Score Change % Meaning
5 0-10% Minimal edits—response was mostly usable as-is
4 10-30% Light edits—small corrections or additions
3 30-50% Moderate edits—significant adjustments needed
2 50-70% Heavy edits—major rewriting required
1 70%+ Near-complete rewrite

Best for: Understanding user effort

Semantic Score (Trigram-based)

Measures how much the content/meaning changed (pattern similarity).

Score Similarity Meaning
5 90%+ Same content—minor wording tweaks
4 70-90% Similar content—some changes
3 50-70% Moderately different
2 30-50% Very different
1 <30% Completely different content

Best for: Understanding content quality

Revision Score (Combined)

Weighted combination: 40% Edit + 60% Semantic

This prioritizes semantic change (content quality) over raw editing effort. A response that was semantically wrong is worse than one that just needed reformatting.

When to Use Each Score

Question Use This Score
How much work did the user do? Edit Score
Was the response content correct? Semantic Score
Overall response quality? Revision Score

The 2x2 Matrix

Combining both dimensions reveals nuances:

Scenario Edit Score Semantic Score Interpretation
Minor tweaks 4-5 4-5 Response was good
Targeted fixes 4-5 1-2 Small edits, big meaning change (response was off)
Reorganization 1-2 4-5 Lots of work, same content (format was wrong)
Complete rewrite 1-2 1-2 Response wasn't useful

Example Calculations

Scenario Rating Revision Score Calculation Final Score
Loved it, used as-is Thumbs up (5) 5 (no edits) (5×0.6 + 5×0.4) × 20 100%
Liked it, minor tweaks Thumbs up (5) 4 (15% edits) (5×0.6 + 4×0.4) × 20 92%
Liked it, but rewrote half Thumbs up (5) 3 (40% edits) (5×0.6 + 3×0.4) × 20 84%
Disliked, complete rewrite Thumbs down (1) 1 (80% edits) (1×0.6 + 1×0.4) × 20 20%
No rating, light edits None 4 4 × 20 80%
Thumbs up only Thumbs up (5) None 5 × 20 100%

When Only One Signal Exists

If feedback has only a rating OR only a revision (not both), the score uses just that signal:

  • Rating only: Binary Score × 20
  • Revision only: Revision Score × 20

How Net Sentiment is Calculated

Net Sentiment provides a single trend line showing overall user satisfaction, combining both explicit ratings and revision behavior.

The Two Components

  1. Rating Sentiment (60% weight) — Based on thumbs up/down votes
  2. Revision Sentiment (40% weight) — Based on how much users edit responses

Rating Sentiment Formula

Rating Sentiment = (Positive - Negative) / Total × 100
  • Ranges from -100% (all negative) to +100% (all positive)
  • A score of 0% means equal positive and negative feedback

Revision Sentiment Formula

Revision scores (1-5) are converted to a sentiment scale (-100% to +100%):

Revision Sentiment = (Revision Score - 3) / 2 × 100
Revision Score Revision Sentiment Meaning
5 +100% Minimal edits = highly positive
4 +50% Light edits = positive
3 0% Moderate edits = neutral
2 -50% Heavy edits = negative
1 -100% Complete rewrite = highly negative

Combined Net Sentiment Formula

Net Sentiment = (Rating Sentiment × 0.6) + (Revision Sentiment × 0.4)

Example Calculations

Rating Sentiment Revision Sentiment Calculation Net Sentiment
+50% (mostly positive) +100% (score 5) 50×0.6 + 100×0.4 +70%
+50% (mostly positive) -50% (score 2) 50×0.6 + (-50)×0.4 +10%
-20% (slightly negative) +50% (score 4) -20×0.6 + 50×0.4 +8%
+30% (positive) 0% (score 3) 30×0.6 + 0×0.4 +18%

When Only One Signal Exists

  • Rating only: Uses rating sentiment directly
  • Revision only: Uses revision sentiment directly
  • Both available: Combines with 60/40 weighting

Interpreting Net Sentiment

Range Interpretation
+50% to +100% Excellent—users consistently satisfied
+20% to +49% Good—positive trend with room for improvement
-19% to +19% Mixed—roughly equal satisfaction/dissatisfaction
-49% to -20% Concerning—more users dissatisfied
-100% to -50% Poor—significant quality issues

Common Questions

Why is neutral not counted in positive/negative rates?

Neutral means "no rating given"—the user chose not to express an opinion. Including it would dilute the signal from users who did rate. The rates show sentiment among users who rated.

Why might match rate be low?

Common causes:

  • Feedback submitted without proper request correlation IDs
  • Timing issues (feedback submitted long after the request)
  • Integration bugs in the feedback submission flow

What's a "good" Compound Sentiment score?

Score Range Interpretation
90-100% Excellent—responses consistently meet user needs
80-89% Good—minor improvements possible
70-79% Fair—noticeable quality gaps
60-69% Needs attention—users frequently unsatisfied
Below 60% Poor—significant quality issues

Why weight ratings more than revisions?

Explicit ratings (60%) outweigh revision behavior (40%) because:

  • Users may edit for style preferences even when satisfied
  • A thumbs up with heavy edits might mean "good content, wrong format"
  • The rating is the user's direct statement of satisfaction

Technical Details

API Reference

Submit feedback via the API:

POST /api/v2/llm_request_log_feedbacks
{
  "llm_request_log_feedback": {
    "sentiment": "like",
    "revised_output": "The corrected response text..."
  }
}

Parameters:

  • sentiment (string, optional): "like", "dislike", or "neutral". Preferred rating field.
  • like (boolean, optional, deprecated): true for thumbs up, false for thumbs down. Use sentiment instead. If both are provided, sentiment takes precedence.
  • revised_output (string, optional): User's edited version of the response

The revision_score is automatically calculated server-side when revised_output is provided.

Converting like to sentiment

If you are migrating from the boolean like field, use this mapping:

like (boolean) sentiment (string) Stored as integer
true "like" 2
false "dislike" 0
nil / omitted (no conversion) nil

Data Model

Field Type Description
sentiment string ("like", "dislike", "neutral") Preferred rating field. Stored internally as integer (0=dislike, 1=neutral, 2=like).
like boolean/null Deprecated. true = positive, false = negative, null = no rating. Converted to sentiment on write.
revised_output text User's edited response (if provided)
revision_score integer (1-5) Computed from edit distance
llm_request_log_id hashid string/null Link to original request (null if unmatched). Stored internally as an integer FK.
computed_sentiment_score decimal (-1.0 to 1.0) Weighted rollup of parent + partial sentiment ratings. null if no sentiment has been submitted. Updated automatically within seconds of any sentiment change. See How the Sentiment Score is Computed.

How the Sentiment Score is Computed

computed_sentiment_score is a weighted average of the parent feedback's rating and any partial feedback ratings attached to it:

Component Weight Value
Parent sentiment like = +1.0, neutral = 0.0, dislike = −1.0
Each partial sentiment like = +1.0, neutral = 0.0, dislike = −1.0

The parent carries double weight because it represents the overall response rating, while partials represent targeted section feedback.

Example: Parent is like (+1.0), one partial is dislike (−1.0):

score = (2×1.0 + 1×−1.0) / (2+1) = 1.0/3 ≈ +0.33

The score is recalculated automatically (usually within seconds) whenever you submit feedback, add or remove a partial, or change any sentiment rating. It is null until at least one sentiment value is present.

Related articles

  • What is partial feedback?

    Partial feedback rates a specific section of an AI response instead of the whole thing. You send the highlighted text...

  • How should I collect feedback on AI output?

    The highest-signal feedback is the edit a user makes to an AI output, then their written explanation, and only then a...

  • What is feedback match rate?

    Match rate is the share of your feedback submissions that Coolhand successfully linked back to the LLM request log th...

  • Creators vs. reviewers

    A creator is one raw identifier attached to a single feedback submission. A reviewer is the person behind it, assembl...