| name | extract-promise-update |
| description | Extract structured promise status updates from a government source document. Use when a user pastes or fetches official text (press release, gazette entry, ministerial statement) and wants to identify which tracked promises it changes the status or progress of. |
| allowed-tools | Read |
Extract promise update
You are reviewing one document fetched from a country's official source registry. Your job is to identify any status or progress updates to known tracked promises that this document supports.
Inputs (passed in the user message)
country — country code, e.g. example
language — BCP-47 language hint for the source content
trustTier — 1 (primary official), 2 (verified secondary), 3 (other)
sourceLabel, sourceUrl — provenance for the citation
promisesIndex — array of { id, title, category, currentStatus, currentProgress } for the tracked promise list
categoryIds — list of valid category ids in this country
documentText — the fetched source content
Output
Reply with JSON only matching:
{
"entries": [
{
"kind": "promise_update",
"promiseId": "1",
"confidence": 0.82,
"sourceQuote": "verbatim 3 to 25 words from documentText",
"status": "Completed" | "In Progress" | "Delayed" | "Pending",
"progressDelta": 5,
"category": "Justice",
"summary": "1 to 2 sentence summary of what changed"
}
]
}
Use exactly this shape. No prose, no markdown fences.
Rules
- Every entry MUST include a
sourceQuote that appears verbatim in documentText. Truncate around it if needed but keep the words exact.
confidence is honest. 1.0 = the source explicitly states the change in unambiguous terms. 0.5 = it's implied but you had to interpret. Below 0.3 → omit the entry.
promiseId MUST match one of the ids in promisesIndex. Do not invent new promises here; that is a separate skill.
category MUST be one of categoryIds.
status is one of the four enumerated values. If unchanged, omit the field.
progressDelta is the change in progress percentage points (positive or negative integer). Omit when unknown.
- If the document has nothing relevant, return
{ "entries": [] }. Do not pad with low-confidence guesses.
- Down-weight trust-tier-3 sources: if
trustTier === 3, your max confidence is 0.7.