Reporting a vote
From your app’s vote handler, with thetrace_id you kept from the traced agent call:
- Attaches the vote to the trace - up/down chips (and the comment) at the top of the trace’s detail view in Observe.
- Raises a signal on a downvote - a Negative user feedback signal lands in Monitor for triage, tagged with a User feedback chip. The user is the detector: no sampling, no judge call, nothing to configure or enable.
- Feeds Judge Calibration - every vote (up and down) is recorded as an outcome report, so AgentX’s automated verdicts get measured against real human reactions. See Outcomes & Judge Calibration.
- Moves the Downvote rate KPI - Overview’s card shows the share of votes in the window that were “down” (vote-denominated: of the users who reacted, how many were unhappy).
POST /feedback ({"traceId", "rating", "comment?", "endUserId?"})
and GET /feedback/trace/:traceId.
Feedback vs. outcomes
Both are ground truth; they differ in who reports. Feedback is a human vote with up/down semantics, forwarded live from your UI. An outcome is an after-the-fact system result (“ticket reopened”, reported by a workflow or webhook) with a free-form label. Both feed the same calibration math, and neither ever counts as “AgentX flagged it in advance” - they are the reports the judges get measured against, never predictions that inflate agreement.Try it
sample-scripts/selfhost_demo/14_user_feedback.py traces three simulated agent replies, votes
on them (two up, one down with a comment), and prints the resulting signal, the vote rows on the
trace, and the moved downvote rate - no LLM key needed.
