Review a Generated Answer and Its Citations
Before you begin
Audience: Validator, SME, support engineer
The work item must be in PENDING_VALIDATION state before you begin this task. If the work item is still in NEW or GENERATING, wait for the Celery worker to complete processing and poll again. If it is in ESCALATED, see Submit a Generation Work Item for escalation handling guidance.
Generated answers (Flow B) require a higher level of scrutiny than Flow A answers that were extracted directly from human conversation. The LLM synthesizes content from internal source documents; it can produce plausible-sounding text that misrepresents the cited sources. You are the authoritative check on this.
Steps
1. Retrieve the generated candidate
curl -s http://localhost:8000/v1/generation/work-items/{work_item_id}/candidate
The response returns a GeneratedCandidate object. Key fields are described in the steps below.
Example response structure:
{
"candidate_id": "cand-a1b2c3d4",
"work_item_id": "wi-9f0a1b2c",
"generated_text": "The maximum payload size for a webhook delivery in the v3 API is 5 MB...",
"origin": "AUTOMATED",
"model_version": "claude-sonnet-4-6",
"answer_candidate_id": null,
"citations": [
{
"source_url": "https://confluence.example.com/wiki/spaces/APIDOCS/pages/123456",
"title": "Webhook Configuration Guide — v3",
"last_modified": "2026-04-15T09:30:00Z",
"excerpt": "Payloads exceeding 5 MB are rejected with HTTP 413...",
"authority_weight": 0.9
},
{
"source_url": "https://jira.example.com/browse/API-8812",
"title": "Increase webhook payload limit to 5 MB",
"last_modified": "2025-11-02T16:45:00Z",
"excerpt": "Resolved: Updated limit enforced in v3.2 release.",
"authority_weight": 0.8
}
]
}
2. Evaluate the generated text
Read the generated_text against the question it was created to answer (available in the parent work item). Ask:
- Does the answer directly address the question?
- Is every factual claim in the generated text traceable to a cited source?
- Are there claims that appear in the generated text but are not supported by any citation?
- Is the answer complete, or does it hedge excessively without providing actionable information?
If the generated text introduces facts not present in the citations, treat it as unreliable and proceed to step 7 (reject or escalate).
3. Evaluate each citation
For every entry in the citations array, verify:
- The excerpt supports the generated text. Open the
source_urland confirm the excerpt appears in context and is not taken out of meaning. - The
last_modifieddate is recent enough to be authoritative. An answer generated from a Confluence page last modified two years ago may be outdated. - The
authority_weightreflects your confidence in the source.
Authority weight reference:
| Source type | Typical authority_weight |
|---|---|
| Confluence (official documentation) | 0.9 |
| Jira (resolved tickets, release notes) | 0.8 |
| Other connected sources | Varies |
Higher-weight sources should carry more influence in your judgment. A generated text supported only by low-weight sources warrants additional verification.
Note: Citations are frozen at generation time. If a Confluence page or Jira ticket has been updated since the work item was created, the excerpt in the citation may no longer reflect the current source content. Always check the
last_modifiedfield and open thesource_urlto confirm the content is current.
4. Check the origin field
The origin field determines how the candidate was produced:
origin value |
Meaning |
|---|---|
AUTOMATED |
The text was generated by the LLM using RAG context from Confluence and Jira |
KNOWN_ANSWER |
A Weaviate similarity match at ≥ 0.92 was found; LLM generation was bypassed; the generated_text is drawn from the existing approved answer |
Note: When
originisKNOWN_ANSWER, theanswer_candidate_idfield points to the existing registry entry that was matched. The system surfaced an already-approved answer rather than generating a new one. Review the referenced entry to confirm it fully addresses the current question before proceeding to validation.
5. Check the model version
The model_version field records which LLM produced the answer. This is relevant when comparing candidates across time periods or when assessing whether a model upgrade has changed generation quality. Note the value in any escalation rationale if quality is a concern.
6. Accept the candidate for validation
If the generated text is accurate, complete, and supported by its citations, proceed to formal validation:
- Create a validation assignment for the
candidate_idusing the classification service. - Claim the assignment in the validation queue.
- Apply your approve, revise, or reject decision normally, following the same process used for Flow A candidates.
The generated candidate enters the standard 9-state validation lifecycle from this point forward.
Note: F2 scoring (β = 2, recall-weighted) means the generation pipeline is tuned to prioritize not missing valid answers over avoiding false positives. As a result, some generated candidates will be borderline in quality. Validator judgment is essential — the pipeline intentionally errs toward inclusion, and human review is the corrective step.
7. Reject or escalate a poor candidate
If the generated text is factually incorrect, unsupported, incomplete, or misleading:
- Reject at validation — Use the standard reject decision and document the specific problem in the
rationalefield. Be precise: state which claim is wrong and which citation failed to support it. - Escalate — If the question is important and the generated content is insufficient, escalate with a note that manual authoring is required.
Documenting the problem in rationale feeds quality improvement cycles. Vague rationale ("answer was bad") does not provide enough signal for pipeline refinement.
Result
You have evaluated the generated candidate against its source citations and determined whether it is fit for publication. If accepted, the candidate proceeds through standard validation to become an approved registry answer. If rejected or escalated, the knowledge gap is documented with a specific rationale that supports future improvement.