> ## Documentation Index
> Fetch the complete documentation index at: https://docs.policymate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Verification

> Tell facts from an official record apart from facts PolicyMate's AI read in a document, and see the quote behind each one.

Much of what PolicyMate knows comes straight from an institution's own record, such as a legislature's bill database. The rest is read by AI from the documents governments publish: a mention of a bill in an agenda, a hearing announced in a notice, a sponsor named in a gazette. Both are useful, but they deserve different levels of trust.

So that you never mistake one for the other, every fact PolicyMate's AI read carries a `verification` object. It is the same mark your team sees next to each fact in the PolicyMate app.

## The Verification Object

A verification object looks like the following:

```json theme={null}
"verification": {
  "status": "confirmed",
  "checked_at": "2027-02-28T05:03:41Z",
  "sources": [
    {
      "type": "document",
      "id": "d51e...",
      "publisher": "Public Utility Commission of Texas",
      "title": "Open meeting agenda, March 6, 2027",
      "date": "2027-02-27",
      "url": "https://www.puc.texas.gov/...",
      "quote": "Staff will brief the Commission on the reporting obligations HB 1234 would create for large data centers.",
      "starts_at_second": null
    }
  ]
}
```

The `status` attribute says how far you can rely on the fact. The `checked_at` attribute is when PolicyMate last checked the fact against its source, and is `null` when it has not been checked.

The `sources` array lists where the fact was found, so you can always check it yourself. Each source's `type` is `document` or `transcript` when PolicyMate read the fact in one, with its `id`, or `record` when the fact comes from an institution's record or a reference database, in which case `id` is `null`. The `quote` attribute is the passage the fact was read from when PolicyMate has located it, and `null` otherwise. For transcripts, `starts_at_second` gives the start of the speech that contains the passage.

## Statuses

A verification's `status` is one of the following values, listed from most to least reliable. Each status matches a mark in the PolicyMate app, so your users and ours read the same fact the same way:

| Status | Shown in the app as | Meaning |
| - | - | - |
| `official` | From the official record | Taken from the institution's own record or API, not read by AI. |
| `reference` | From Wikidata | Taken from a public reference database. It is not the official record, and may be out of date. |
| `confirmed` | Confirmed by the source | Read by AI, then checked against the source's own words, which say it. |
| `corroborated` | Named in 3 documents | Read by AI in several separate documents, but not yet checked against them. |
| `unchecked` | Read by AI, not confirmed | Read by AI in one document, and not yet checked against its words. Read the passage first. |
| `unsure` | Not confirmed | Read by AI and checked, but the passage gave no clear answer. Read the passage first. |
| `disputed` | The source may not say this | Read by AI and checked, but the passage does not support it. Read the passage first. |
| `refuted` | The source says otherwise | Read by AI and checked, and the passage contradicts it. Do not rely on it without reading the passage. |
| `inferred` | Built from documents | The whole record was assembled by AI from documents, with no official record behind it. |

A check only marks a fact `confirmed` when it is sure the passage says it, and reports it as `unsure` otherwise.

> [!TIP]
>
> If you only want to act on facts you could defend, treat `official` and `confirmed` as settled, `reference` as settled but possibly out of date, and everything else as a lead worth checking.
>
> A verification tells you whether the source says something, not whether it is still true. A source can be outdated, and an official record can be corrected later.

## What Carries a Verification

The following parts of the API carry a `verification` object:

| Where | What it tells you |
| - | - |
| [Bills](https://docs.policymate.io/reference/bills.md), [people](https://docs.policymate.io/reference/people-and-organisations.md), and [organisations](https://docs.policymate.io/reference/people-and-organisations.md) | Whether the record rests on an official record (`official` or `reference`), or was assembled from documents (`inferred`) |
| A bill's [`sponsors`](https://docs.policymate.io/reference/bills#sponsors) | Whether the sponsor comes from the legislature's record or from documents |
| A person's `roles` | Whether the role comes from an official record (`official`) or a reference database (`reference`) |
| [Mentions](https://docs.policymate.io/reference/mentions.md) | Whether the document or transcript really names the bill, person, or organisation |
| [Events](https://docs.policymate.io/reference/events.md) | Whether the source really announces the event, on that date. It does not cover the event's other details, such as its location. |

## Other AI Output

A few fields are written by AI as a whole rather than read from a single passage, so they carry no quote. Instead, each one says so where it appears:

* **Summaries.** The `summary.source` attribute of bills, documents, and transcript chapters is `ai` when PolicyMate wrote the summary.
* **Categories.** Bills, documents, and transcript chapters are sorted into [categories](https://docs.policymate.io/reference/jurisdictions-and-categories.md#categories) by AI.
* **Transcripts.** [Transcripts](https://docs.policymate.io/reference/transcripts.md) produced by speech recognition say so in their `origin`, and their speakers are identified automatically.
* **Recommendations.** A [recommendation's](https://docs.policymate.io/reference/recommendations.md) `importance` and `why` are PolicyMate's judgement of what matters to your workspace.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.