prxy.monster API-key BYOK is live. Start free

Outcomes

A receipt records what the gateway saw. An outcome records whether the call did what the user wanted. Outcomes are the bridge from “we ran a call” to “the call solved the problem” — and they feed the compounding loop:

receipts → outcomes → memory candidates → reviewer-promoted patterns → better future calls

The data model

Every outcome is anchored on a receipt_id and is append-only — receipts themselves are never mutated. Schema:

FieldTypeNotes
idUUIDOutcome row id.
receipt_idUUIDThe receipt this outcome describes. Required.
outcomeenumOne of 11 values (see below).
sourceenumself_report, human_reviewer, webhook, automated_test, agent_runner.
scorefloat | nullOptional 0..1 confidence.
labelsstring[]Optional tags (“auth-fix”, “regression”, etc.).
notes_hashsha-256 | nullIf notes were submitted, the server hashed them. Raw text never persists.
submitted_by_user_idUUID | nullWhen source = human_reviewer.
created_attimestampAppend-only.

outcome enum (11 values)

source enum (5 values)

Submitting an outcome

curl https://api.prxy.monster/v1/outcomes \
  -H "Authorization: Bearer $PRXY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "receipt_id": "8c5a4e2a-...-...",
    "outcome": "succeeded",
    "source": "agent_runner",
    "labels": ["auth-fix"],
    "notes": "User reported the auth bug is gone after this turn."
  }'

The notes field is hashed sha-256 server-side at write time. The raw string never persists. Reviewers in lair never see the raw note — only the hash and the structured outcome / labels.

Listing outcomes

curl https://api.prxy.monster/v1/receipts/<receipt_id>/outcomes \
  -H "Authorization: Bearer $PRXY_KEY"

Returns the append-only list of outcome rows for that receipt.

How outcomes feed memory

Positive outcomes (succeeded, partially_solved, user_satisfied, tool_chain_succeeded) feed the memory_candidates queue. A reviewer in lair (/dashboard/admin/memory-candidates) promotes useful candidates into the patterns table — and patterns ride into future calls via the patterns module.

We never auto-promote. Every promotion is a human decision. See Memory candidates.

Trust tiers (planned)

V-27d adds a trust_tier column on inference_outcomes. Self-reported outcomes are weighted lower than reviewer-confirmed or trusted-integration outcomes. Until V-27d ships, treat all outcomes as equal weight.

See also