The eval suite behind a sentiment feature.
An HR product wants to auto-label employee feedback. Which model, which prompt, at what cost? This workbench holds the answer the way a PM should hold it: a 200-comment gold dataset with deliberately hard slices, 3 prompt versions, 2 models, all 6 configurations actually run against the Claude API, and a decision log that says what shipped and why. Every number on this page comes from those runs.
Accuracy and macro F1 across all six configurations
Prompt iterations (v1 naive, v2 adds label definitions and rules, v3 adds few-shot examples and sarcasm/code-switch handling) matter almost as much as model choice. The dotted ring marks the shipped configuration.
The decision chart: accuracy against cost
Cost per 1,000 comments (from real run telemetry) against accuracy. The gap between the two models closes as the prompt improves, which is the whole story.
Drill into one configuration
Per-class F1, the confusion matrix, and slice accuracy for the selected run. The failure frontier is not sarcasm (both models solved it); it is the boundary between mixed and neutral, and short low-signal comments.
Per-class F1
Confusion matrix gold rows × predicted columns
Accuracy by slice
Failure explorer
Every miss for the selected configuration, with the model's prediction against gold. Click a row to see what all six configs predicted for that comment, plus review notes on the interesting ones. Two of the shipped config's seven misses are arguably label noise, which is exactly what a failure review is for.
| Comment | Gold | Predicted | Slice |
|---|
Decision log: what shipped and why
- v1 told us the baseline was already high. Modern models classify plain-polarity HR comments near ceiling out of the box (Haiku 93.0%, Sonnet 96.0%). The naive prompt's misses concentrated in the mixed class (F1 0.74 on Haiku) and short comments, not in sarcasm, which both models handled at 100% from the first run. The eval killed a planned "sarcasm handling" workstream before it started.
- v2 taught us that definitions alone do not move the needle. Adding label definitions and tie-break rules without examples was flat to slightly negative on Haiku (mixed F1 dropped to 0.71). Rules describe the boundary; they do not demonstrate it.
- v3 closed the gap with few-shot examples. Four worked examples lifted Haiku to 96.5% accuracy and mixed F1 from 0.74 to 0.90, within half a point of Sonnet at roughly one fifth of the cost.
- The remaining frontier is annotation, not modeling. Of the shipped config's 7 misses, at least 2 are comments where the gold label itself is arguable. The next cheapest accuracy gain is tightening the labeling guideline for mixed versus neutral, then re-adjudicating that slice, not a bigger model.