# Abstract counts — CCE cost-disclosure dataset

For an ACCRAC abstract. **Every figure below is reproducible** by the Python block at the foot,
run against `schools_cost_disclosure.csv` in this directory. Nothing is typed from memory.

Data collected 2026-09-16 and 2026-09-17. Rulings applied: Q1–Q11, recorded in `QUESTIONS.md`.

> **Denominator source, corrected 2026-09-17.** An earlier version of this file compared our 19
> against **CHEA's list alone** and reported "16 of 19, Campbellsville absent". That was wrong: it
> used one register where the permitted source is the **union of two**. Re-run against the union,
> **19 of 19 match**. The correction is set out below and in `cce-denominator.md`.

---

## Denominator

| | |
|---|---:|
| CCE-accredited Doctor of Chiropractic programmes | **19** |
| of which United States | **18** |
| of which Canada | 1 |

**Source: the union of two robots-permitted registers.** Neither reaches 19 alone, and their gaps
do not overlap.

| source | field | count | gap |
|---|---|---:|---|
| **DAPIP** — U.S. Dept of Education, checked 2026-09-17 | `/Users/benglass/accrac-2027/data/dapip_cce.json` → `institutions[].name` | 18 | US-only scope: lacks CMCC |
| **CHEA** — republishing the accreditor's report, `as_of` Oct 2024 | `/Users/benglass/accrac-2027/data/cce_permitted.json` → `chea.dc_institutions` | 18 | Oct 2024 snapshot: lacks Campbellsville |
| **union** | computed; **no materialized union field exists in either file** | **19** | — |

A third permitted source, CMCC's own accreditation page (`cce_permitted.json` → `cmcc`, fetched
2026-09-17), carries the one fact DAPIP structurally cannot: that CMCC's D.C. program holds CCE
(US) accreditation. **Neither file is copied into this repository.**

**Name comparison against the union: 19 of 19 match.** Nothing in ours is absent from it; nothing
in it is absent from ours. Matching is on a normalized key — lowercase, collapsed whitespace,
hyphen as space — because **the union of raw strings is 21**: the two registers spell three
institutions differently between themselves.

- **Ours against the registers — 2 differences:** `Cleveland University - Kansas City` (both
  registers write it unspaced) and `Logan University College of Chiropractic` (both write
  `Logan University`).
- **The registers against each other, where ours matches one — 2 differences:**
  `Life Chiropractic College-West` (DAPIP) against `Life Chiropractic College West` (CHEA), and
  `Universidad Central Del Caribe` (DAPIP) against `Universidad Central del Caribe` (CHEA).

**The abstract should use 19**, reproducible from permitted sources alone.

**Two cautions, set out in full in `cce-denominator.md`.** The registers' campus lists are stale —
CHEA's still carries Palmer's closed San Jose campus — so they are denominator sources only and
**not** campus-count sources. And this file's own earlier primary source,
`cce-usa.org/cce_dcp.html`, **is disallowed by that site's `robots.txt`**; on 2026-09-17 it was
removed as a source, deleted from the fetch cache, and struck from the two source logs that had
quoted its markup. The history of that change is kept, not overwritten.

**The `country` column was normalized on 2026-09-17** to `United States` / `Canada`, with the
territory in its own `territory` column (`Puerto Rico` ×1). The 18/1 split was asserted unchanged.

---|---|---|
| `data/cce-denominator.md` | **19** programmes, from CCE's own directory | checked 2026-09-16 |
| `/Users/benglass/accrac-2027/data/cce_permitted.json` | **18** in `chea.dc_institutions`, from a CHEA register republishing the accreditor's report | `as_of` **October 2024**, fetched 2026-09-17 |

**Name comparison, run 2026-09-17: 16 of our 19 match the JSON byte for byte.** Of the other three,
two are name-forms of the same institution — `Cleveland University - Kansas City` against
`Cleveland University-Kansas City`, and `Logan University College of Chiropractic` against
`Logan University`. The third is not a spelling: **`Campbellsville University` is in our list and
absent from the JSON entirely.** The JSON is `as_of October 2024` and our check is 2026-09-16; that
is a fact about the two dates and no explanation is offered.

**The abstract should use 19** — the count from the accreditor's own directory, checked most
recently — and should say that a CHEA-sourced register as of October 2024 lists 18 of them.

**Two cautions carried from `cce-denominator.md`, where both are set out in full.** The JSON's
`dc_campus_rows` still lists Palmer's closed San Jose campus, so it is a denominator source only and
**not** a campus-count source. And our own primary source, `cce-usa.org/cce_dcp.html`, **is
disallowed by that site's `robots.txt`** and was nonetheless fetched; that is recorded there rather
than quietly carried.

**The `country` column was normalized on 2026-09-17** to the controlled vocabulary
`United States` / `Canada`, with the territory moved to its own `territory` column
(`Puerto Rico` ×1, empty ×18). The 18/1 split was asserted unchanged across the change. The script
still computes the US figure as *country ≠ Canada*, which now agrees with a direct match on
`United States`.

---

## Field 1 — board/NBCE fees inside the financial-aid cost of attendance

| answer | colleges |
|---|---:|
| **yes** — a board or licensure cost is inside the published cost of attendance | **9** |
| **no** — it is not | **9** |
| **unverified** — the cost of attendance could not be read | **1** |

Of the nine *no*, **one publishes no cost of attendance at all** (University of Bridgeport), which
is a missing document rather than a silent one. The single *unverified* is Cleveland
University-Kansas City, whose College Financing Plan PDF has no text layer.

`f1_state`: published 16 · not-published 2 · unverified 1.

### f1_mechanism value counts

Multi-valued and semicolon-separated under Q6, **so these do not sum to 19**: 21 values across 19
rows, 2 rows carrying two values each.

| value | count |
|---|---:|
| allowance | 3 |
| term line item | 3 |
| upper-term incorporation | 4 |
| level row | 1 |
| **noted outside budget** | **1** |
| none shown | 6 |
| n/a | 3 |

`noted outside budget` was added to the vocabulary on 2026-09-17 under Q10 and is used by one
college (Southern California University of Health Sciences), where the board fee is published with
a figure in a table's own `*` footnote and placed outside that table's totals.

---

## Field 1b — the same question against the programme's own rate table

`f1_program_table_state`: published **19** · not-published 0 · unverified 0.

| | colleges |
|---|---:|
| rate table carries a board or licensure row | **1** |
| rate table carries none | **18** |

Mechanism: `none shown` 18, `term line item` 1.

---

## Field 2 — campus or living-arrangement variation

| | colleges |
|---|---:|
| publishes a variation | **9** |
| does not | **9** |
| unverified | **1** |

---

## Field 3 — publishing practice

| terms shown | colleges |
|---|---:|
| **all terms** | **4** |
| **one representative term** | **11** |
| both (one document each way) | 1 |
| neither a term nor a total — annual or credit-load rates only | 3 |

| prior year | colleges |
|---|---:|
| shown beside the current year | **1** |
| not shown | **18** |

The one is D'Youville University, whose table sets `25-26` and `26-27` side by side.

---

## Field 4 — tuition-adjustment notice clause

`f4_state`: published **16** · not-published 2 · unverified 1.

**Counted as clauses, not colleges**, because one college publishes clauses in both groups. Only
rows whose `f4_state` is `published` are counted, and only clauses about tuition or fees. Each is
quoted; none is characterized.

### Stating that notice will be given — 3 clauses, 2 colleges

> **Northeast College of Health Sciences**, website: "Tuition and Fees are subject to adjustments
> authorized by the Northeast College Board of Trustees. In such cases, due notice will be given."

> **Northeast College of Health Sciences**, catalog p.9: "Tuition and fees are subject to
> adjustments authorized by the Board of Trustees. In such cases, due notice will be given."

> **Palmer College of Chiropractic**, catalog, Tuition and Fees: "Students will be given notice of
> such modifications or changes prior to the changes taking effect."

### Stating change without (prior) notice — 6 clauses, 6 colleges

> **Cleveland University-Kansas City**: "The University reserves the right to alter tuition or fees
> and the regulations governing as deemed necessary and without notice."

> **Life Chiropractic College West**: "Life Chiropractic College West reserves the right, at any
> time and without prior notice, to change the information contained in this publication…"

> **National University of Health Sciences**, Bulletin p.2: "The administration of National
> University of Health Sciences reserves the right, without prior notice, to make changes at any
> time to the material contained in this bulletin…"

> **Northeast College of Health Sciences**, catalog p.4: "The College reserves the right to make
> changes, including without limitation changes to program offerings, … fees, or the announced
> academic calendar, at any time without notice."

> **Parker University**: "The Board of Trustees at Parker University reserves the right to increase
> tuition and fees whenever deemed necessary without prior notice."

> **University of Western States**: "Tuition and fees are subject to change without prior notice."

**Northeast College of Health Sciences appears in both groups** — it publishes two clauses
promising due notice for tuition and fees, and one reserving changes to fees at any time without
notice.

**9 of the 16 published clauses use neither phrase about tuition.** One further college, Canadian
Memorial Chiropractic College, uses the words *subject to change without notice* on its
tuition-and-fees page — **about the interest rate on overdue balances, not about tuition** — and is
recorded as `not-published` for this field on that ground. It is excluded from both counts above.

---

## Field 5 — route to NBCE pass rates, and the rates' own format

| route | colleges |
|---|---:|
| published | **17** |
| not published | **2** |
| unverified | 0 |

| rates' format (`f5_source_form`) | colleges |
|---|---:|
| **text** | **12** |
| **image-only** | **3** |
| **external-embed** | **2** |
| (no route, so no rates document) | 2 |

Per Q8 the route and the format are separate facts: `f5_state` stays `published` when the route is
published, whatever the rates' format. Per Q9 the format is coded by the route recorded in `f5`.

---

## Field 6 — whole-programme totals

| | colleges |
|---|---:|
| **whole-programme tuition total published** | **4** |
| **whole-programme cost of attendance published** | **1** |

Both columns stated in full, so no state has to be worked out from the published count and the
denominator:

`f6_tuition_total_state`: published **4** · not-published 15 · unverified 0.
`f6_coa_total_state`: published **1** · not-published 18 · unverified 0.

| college | tuition total | cost of attendance total |
|---|---|---|
| Life University | $198,558 | — |
| Northeast College of Health Sciences | $159,600 | $236,620 |
| Northwestern Health Sciences University | $136,976 | — |
| Southern California University of Health Sciences | $139,680 | — |

**No total in this dataset was computed.** Where a college publishes components and no total, the
components are listed and the missing total is stated.

---

## Board measure — what the published figure counts

**Added 2026-09-17**, after a sweep of all 19 colleges' cached documents. The original pass
spec-checked short column labels and never reached the sentence defining the measure.

| | colleges |
|---|---:|
| **publishes a measure** | **14** |
| states none — a goal or a heading only | **3** |
| unverified — a document exists and could not be read | **2** |

**Of the 14 that publish one, they do not count the same thing — but the count of how many
count what is HELD, and no figure is offered here.**

> **Held, 2026-09-17.** There was a table here giving four counts: how many colleges count a
> six-month window, all parts of the examination, licensure as an alternative route, and a
> Canadian board. **All four are withdrawn.** They were derived by string-matching `f_board_measure_verbatim`, a column that
> holds the college's quoted sentence *and our own annotation in the same cell*. A string match
> cannot tell the two apart, so the figures measured our writing as much as the colleges'.
>
> The all-parts count matched the **annotation** in every row it counted and the quoted text in
> none. It counted Parker, whose published test is *"attempting any or all parts"*,
> because the annotation reads `ATTEMPTING ANY OR ALL PARTS`. Read case-insensitively it also
> picked up D'Youville — whose cell records that *"NBCE", "all parts" and "within six" occur
> zero times* on the page, i.e. a recorded **absence** counted as a presence. Neither reading is
> defensible, and the same defect runs through the other three counts.
>
> **Beyond the method, the measure itself is undefined.** What counts as "all parts" has not been
> settled: whether enumerating them (Northeast's *"Parts I-IV"*) is the same statement, whether
> CMCC's *"Components A, B, and C"* belongs on this axis at all, and whether a phrase recoverable
> only from an annotation over a line that cannot be quoted may carry a count. Those are **Q13**
> in `QUESTIONS.md`. **No count returns until Q13 is answered and the column is split.**
>
> `f_board_measure_verbatim` is unchanged. What each college publishes is still readable there,
> row by row, which is how these differences should be read until there is a coded column.


**CMCC is not on the same axis at all.** It publishes CCEB Components A, B and C — a Canadian
examination — not NBCE performance. A CMCC percentage and a US college's percentage are not the same
quantity.

**Texas Chiropractic College publishes a figure and tells a reader it understates.** It states the
six-month all-parts number, then that it *"does not require students to take all four parts of the
NBCE exams prior to graduation"*, and that its Part IV scores *"provide a more accurate depiction"*.

**The three that state none** are Campbellsville and Bridgeport, which publish no board-rate document
at all, and **Logan**, which publishes a goal and a heading and never says what the figure counts —
recorded as a fact about Logan's disclosure, not about our reading.

---

## Figure qualifier — the status of a college's own cost figures

**Added 2026-09-17.** Distinct from the tuition-adjustment clause, which is about changing figures in
future. This is what a college says about the number as published.

| | colleges |
|---|---:|
| **qualifies its own figures** | **14** |
| does not | **5** |

**The strongest is Cleveland's**, because it tells a reader the figure is not what it looks like:
*"The College Finance Plan is a calculation of two terms and does not reflect the full cost of a
program."*

**The most direct about its own website is SCU's**: *"Tuition rates are subject to change and may not
be reflected on this website or other SCU materials."* The second clause says the number in front of
the reader may already be wrong.

**Logan names who holds the real figure**: *"The amounts listed below are estimates."* and *"The
Finance Office provide official tuition and fee amounts."*

**Scope matters and is recorded.** Northeast qualifies only the indirect side — *"Indirect costs are
estimates and may vary due to individual factors"* — leaving tuition and fees unqualified. Sherman's
*"Tuition is the only cost actually billed"* turns every other row of its own table into an allowance
rather than a charge. Parker puts the qualifier inside the table, in the row label
*"Total (estimated) cost of attendance"*.

**The five that do not qualify** are D'Youville, Life West, UCC, Bridgeport and UWS. In three of
those — D'Youville, Bridgeport and UWS — an estimate qualifier does exist on the same page but
attaches to **another programme's** figures, not the chiropractic ones.

---

## Annual tuition total

**Added 2026-09-17.** Distinct from field 6, which is the *whole programme*. This column holds a
figure the college publishes as tuition for **one academic year**, in the span the college itself
states.

| | colleges |
|---|---:|
| **publishes an annual tuition total** | **6** |
| does not | 13 |

| college | figure, as published | the span, in the college's words |
|---|---|---|
| Canadian Memorial Chiropractic College | `$31,308` | `Tuition (academic year)` |
| Life University | `$33,093` | `Tuition Per Year***` |
| Northeast College of Health Sciences | `$31,920` | `two trimesters (one academic year/30 weeks of instruction)` |
| Sherman College of Chiropractic | `$41,920` | `Total annual tuition is $41,920.` |
| Southern California University of Health Sciences | `$52,380` | `3 terms per academic year` |
| Universidad Central del Caribe | `$33,600.00` / `$43,793.00` | `per year`, split by Puerto Rico residency |

**None is computed.** A per-term rate multiplied by a term count does not go in this column, which
is why thirteen colleges are `not-published` despite publishing a term rate and a programme length.
Sherman's was missing from the dataset until the page audit found it; it is the college's own
sentence, not `$10,480 × 4`.

---

## Other-programme disclosure

> **5 colleges publish a whole-program cost for another program and not for the D.C.**

D'Youville University · Logan University · Universidad Central del Caribe · University of
Bridgeport · University of Western States.

Each is recorded as what that college publishes, with the other programme named and its wording
quoted verbatim with a URL. **No comparison is drawn between colleges and no inference is offered
about why.**

13 colleges show no such pattern in the source log already held. 1 is not determinable — Cleveland,
whose own cost document could not be read.

---

## Disclosures inside expanding panels — our observation of the markup

**No count is given here.** Under the **Q20** ruling of 2026-09-18 the count that stood here, of colleges with a cost
disclosure logged inside a collapsible panel, is withdrawn. It was computed by matching a regex across every column of a row at once, so it ran
over `notes` and five `*_verbatim` columns together; none of the colleges it counted rested on a coded
column, and Logan's rested on our own `notes` prose alone. **The words it matched — `accordion`,
`aria-expanded`, `collapse-body` — are our own markup vocabulary, not anything a college
publishes**, so the count measured our note-taking rather than the colleges' disclosure.

**Everything below is our observation of the page as served. None of it is a statement by the
college**, and no college publishes the fact that its own content sits inside a panel.

| college | what sits inside the panel | markup we observed | recorded in |
|---|---|---|---|
| D'Youville University | the chiropractic tuition-and-fee table | `<details>`/`<summary>` accordions, present in the served HTML | `site_status` |
| Logan University | the figures on the tuition page | `vc_tta` accordion panels; the page carries no `<table>` | `notes` |
| Northwestern Health Sciences University | the licensure allowance and the whole-programme tuition total | `class="collapse-body collapse"` with `aria-expanded="false"` | `f1_mechanism_verbatim` |
| Parker University | the tuition-adjustment clause | a collapsed FAQ toggle titled `Is there a policy regarding tuition increases?` | `f4_notice_verbatim` |
| University of Western States | the tuition-adjustment clause | a collapsed accordion labelled `Tuition,[NBSP]Fees[NBSP]and Other Charges Notice` | `f4_notice_verbatim` |

**Logan is recorded differently from the other four on purpose.** The note records accordion panels
and does **not** record whether they are collapsed when a reader arrives, so no claim is made that a
reader must expand them. The other four rows each record a collapsed state in the words quoted
above.

**This list is not a set and is not complete.** It is what the nineteen source logs happen to have
recorded while other questions were being answered. **Absence from it is not absence at a college** —
the question was not asked of every page, so a college missing here may publish inside a panel too.

---

## The ratified school page shape, field by field

**Added 2026-09-18, phase 3 session 1.** The fifteen fields of `docs/school-page-shape.md` against
this dataset, three states each, over all 19 programs. **No count here is new** — each is a count
over a coded state column, and the same columns are counted in the field sections above. What is
new is the mapping: which ratified field each coded column answers, and which ratified fields this
dataset cannot answer at all.

**A field resting on more than one coded column gets one row per column.** The rows are not
combined, because adding them would produce a figure no column holds.

| ratified field | coded column | published | not published | unverified |
|---|---|---:|---:|---:|
| `regional_accreditor` | — | | | |
| `us_licensure` | — | | | |
| `length_format` | — | | | |
| `prerequisites` | — | | | |
| `nbce_pass_rates` | `f5_state` | **17** | **2** | **0** |
| `board_measure` | `f_board_measure_state` | **14** | **3** | **2** |
| `publishing_practice` | — | | | |
| `tuition_adjustment_notice` | `f4_state` | **16** | **2** | **1** |
| `student_orgs` | — | | | |
| `campus_name` | — | | | |
| `campus_note` | `f2_state` | **9** | **9** | **1** |
| `cost_of_attendance` | `f3_state` | **19** | **0** | **0** |
| `cost_of_attendance` | `annual_tuition_total_state` | **6** | **13** | **0** |
| `cost_of_attendance` | `f6_tuition_total_state` | **4** | **15** | **0** |
| `cost_of_attendance` | `f6_coa_total_state` | **1** | **18** | **0** |
| `fees` | `f1_state` | **16** | **2** | **1** |
| `fees` | `f1_program_table_state` | **19** | **0** | **0** |
| `articulation_register` | — | | | |
| `pre_enrollment_practice_contact` | — | | | |

### The fields where the fewest programs publish anything

| | coded column | programs publishing |
|---|---|---:|
| `cost_of_attendance` | `f6_coa_total_state` | **1 of 19** |
| `cost_of_attendance` | `f6_tuition_total_state` | **4 of 19** |
| `cost_of_attendance` | `annual_tuition_total_state` | **6 of 19** |
| `campus_note` | `f2_state` | **9 of 19** |

### The seven fields this dataset cannot speak to

**Five have no column in it at all:** `regional_accreditor`, `us_licensure`, `length_format`,
`prerequisites`, `student_orgs`. They record institutional accreditation, licensure, program
length, entry requirements and student organizations; this dataset records cost disclosure.

**`publishing_practice` has no coded column.** Its record is `site_status`, which holds our prose
beside strings quoted from colleges' `robots.txt` files — prose of two kinds in one cell. Under the
**COUNTING** rule in `data/CLAUDE.md` it is not countable, and no count over it is published here.

**`campus_name` takes no state.** It is a label.

**Two are held.** `articulation_register` and `pre_enrollment_practice_contact` have no value shape
at any college, so there is nothing to count in any state.

**So this dataset speaks to eight of the fifteen ratified fields and not to seven.** Where an answer
to one of the seven sits in a cached document already in this repository, it is recorded in
`data/DATASET_GAPS.md` — recorded, not populated.

---

## Reproducing every figure

Save as `abstract_counts.py` beside the CSV — it is already in this directory — and run it from
`data/`:

```bash
python3 abstract_counts.py
```

It prints every number above. The classifiers it uses are explicit rules on each cell's own
opening words, so any classification can be checked against the cell it came from. The field 4
quotes are asserted to occur in their row's `f4_notice_verbatim` before the counts are printed; if
one ever stops matching, the script fails rather than printing a stale figure.

```python
# Full source: ./abstract_counts.py in this directory.
# The three derivations that are not a direct column read:
#
#   US count      country != "Canada"            (the country column is not normalized)
#   f1 yes/no     first word of f1_board_fees_in_coa
#   f3 terms      opening phrase of f3_terms_shown, matched against four fixed prefix sets
#   f3 prior year first word of f3_prior_year_shown
#
# Everything else is a count over a state column, a source_form column, or the
# semicolon-split f1_mechanism vocabulary.
```
