# CENTS data dictionary

Fields in `states.csv`, `states.json`, `sources.csv` and `manifest.json`. Generated by `npm run data:release`; do not edit by hand.

## Status values

- `k8_requirement`: Shown publicly as "Requirement before grade 9" (the code is unchanged). A statute or rule requires financial education and reaches at least one grade before ninth, so the earliest grade covered is kindergarten to grade 8; some start only in grade 6 or 7. The law may name grade numbers, or name both elementary and middle (or primary, intermediate and middle) levels, which counts as a range before grade 9. See requirement_earliest_grade, requirement_grade_range and requirement_verb.
- `requirement_grades_unspecified`: A statute or rule says, in operative language such as shall or must, that students receive instruction in personal finance or financial literacy (or that the program of instruction includes it), and names no grade or grade range. It is a requirement, but it is not confirmed to reach K-8. Permissive wording does not count.
- `k8_standards_only`: State standards or frameworks name a personal-finance concept (earning, saving, spending, budgeting, credit or borrowing) at two or more K-8 grade levels, and no requirement to teach it was found. Money or coin arithmetic alone does not count.
- `high_school_only`: Shown publicly as "No K-8 personal-finance standards found" (the code is unchanged). A requirement or graduation course exists in grades 9-12, and no requirement for any grade before ninth and no K-8 standards naming a personal-finance concept at two or more grade levels were found. It describes what was found, not proof that none exist.
- `study_or_pilot_only`: A task force, study, pilot or unfunded permission exists, without a requirement.
- `none_found`: After the searches recorded for the state, no statute, rule or standard on K-8 financial education was found. This is not proof that none exists.
- `under_review`: The record is not yet confirmed to the standard we publish. No status and no conclusion are given; only the primary sources found so far are listed.

## Terms

- **Under review.** We found sources but have not confirmed a status. It does not mean there is no requirement, and it is not a negative finding. Under-review rows carry a status of under_review, no summary and no excerpts, and list their primary sources only.
- **Unknown.** A field is empty because the sources do not say, or we could not confirm it. Unknown is never the same as false: false means a source supports the negative statement, such as no requirement found.
- **Primary source.** A statute, administrative rule, board resolution or agency document from the state itself.
- **Check result.** The outcome of an automated second pass that retrieves each source and looks for the excerpt. It is not legal review.

## states.csv and states.json

One row per jurisdiction (50 states and DC). `states.json` carries the same fields, plus `pending_bills` and `sources` as lists.

| Field | Type | Meaning |
|---|---|---|
| `abbr` | text | Two-letter postal abbreviation of the state or DC. |
| `name` | text | Jurisdiction name. |
| `public_status` | text | The published status. One of the values listed under "Status values". Matches the badge shown on the site. |
| `confidence` | text | How well the sources support the status: high or medium. Empty when the status is under_review. |
| `summary` | text | One or two neutral sentences on what the law says and does not say. Empty when the status is under_review. |
| `k8_grades` | text | Grades from kindergarten to 8 for which the sources show financial education content, space-separated (K 1 2 ...). Empty means none were found or the status is under_review. |
| `k8_is_mandate` | true | false | empty | true only when a statute or rule requires it in K-8. false means no requirement was found. Empty means unknown or under_review. |
| `k8_delivery` | text | course (a standalone course), embedded (within another subject) or not_stated. Empty means unknown. |
| `k8_assessed` | true | false | empty | Whether the sources say the content is assessed. Empty means unknown. |
| `k8_funded` | true | false | empty | Whether the sources say it is funded. Empty means unknown. |
| `k8_standards_document` | text | Name of the standards document that includes the content, if one was found. |
| `k8_standards_year` | text | Year of that standards document, if stated. |
| `hs_graduation_requirement` | true | false | empty | Whether a high school course or credit is required for graduation. Empty means unknown. |
| `hs_course_length` | text | Length of the required high school course, as the source states it. |
| `hs_effective_date` | text | Who the high school requirement applies to or from when, as the source states it. |
| `pending_bills` | number | Count of pending bills recorded for the state. Bills are listed in states.json only. |
| `requirement_sweep` | text | What a sweep of state statutes and rules found about a requirement to teach financial literacy below grade 9: k8_named (a named K-8 grade or a range including K-8), grades_unspecified (operative language, no grade named), high_school_only, none_found (no requirement found in the text checked) or unconfirmed (the text could not be read). Empty when the status is under_review. It describes what was found, not proof that none exists. |
| `requirement_earliest_grade` | text | The earliest grade the instruction requirement found reaches: K or 1 to 12. For a requirement before grade 9 it is K to 8. Empty when no grade is named (requirement_grades_basis not_specified), when no requirement was found, when it could not be confirmed, or when the status is under_review. It describes the requirement, not the standards. |
| `requirement_grade_range` | text | The grades the requirement reaches, for example K-12, 6-8 or 9-12. When the law names both elementary and middle levels instead of grade numbers (requirement_grades_basis school_levels), elementary is taken to begin at kindergarten and the range is the levels named. Empty under the same conditions as requirement_earliest_grade. |
| `requirement_grades_basis` | text | How the grades were determined: grade_numbers (the law names grade numbers), school_levels (the law names both elementary and middle, or primary, intermediate and middle, levels), not_specified (operative language, no grade or level named), none_found or unconfirmed. Empty when the status is under_review. |
| `requirement_verb` | text | offer when the operative verb of the requirement is "offer": the law says districts shall or must offer courses or instruction (shown on the site as "offer courses"), which does not say every student must receive it. Empty otherwise. |
| `source_count` | number | Number of sources in sources.csv for this jurisdiction. |
| `last_verified` | date | ISO date the record was last checked against its sources. |

## sources.csv

One row per source.

| Field | Type | Meaning |
|---|---|---|
| `abbr` | text | Jurisdiction the source belongs to. Joins to states.csv. |
| `source_url` | url | Address of the source document. |
| `source_type` | text | primary (a statute, rule, board or agency document) or secondary (a summary by another organization, used only as a cross-check). |
| `role` | text | What the source is cited for: status, k8, high_school, pending_bill or crosscheck. |
| `publisher` | text | Who published the source. |
| `citation` | text | Statute section, rule or document title. |
| `excerpt` | text | Verbatim text from the source, 25 words or fewer. Empty for under_review jurisdictions. |
| `retrieved` | date | ISO date the source was retrieved. |
| `original_url` | url | empty | When source_url is an archived copy (web.archive.org), the agency's own address the copy was made from. Empty otherwise. |
| `archive_captured` | date | empty | When source_url is an archived copy, the ISO date the archive captured the page. Empty otherwise. |
| `check_fetched` | true | false | empty | Whether the second check could retrieve the source. Empty means the source was not checked. |
| `check_excerpt_found` | true | false | empty | Whether the excerpt was found word for word in the retrieved source. |
| `check_supports_status` | yes | partly | no | not_checked | empty | Whether the second check found that the source supports what the record says. Empty for under_review jurisdictions. |

## manifest.json

| Field | Type | Meaning |
|---|---|---|
| `version` | text | Release version, date-based (YYYY.MM.DD). It is the date of the latest verification in the data. |
| `generated_at` | timestamp | The same date at 00:00:00Z. It is derived from the data, not the clock, so rebuilding unchanged data gives identical files. |
| `counts` | object | Jurisdictions per public status, plus total and researched. These are the counts shown on the home page and the States page. |
| `files` | list | Each released file with its size in bytes and SHA-256 checksum. manifest.json is not listed in itself. |
