How data works

How fees are published

Visit quotes and unofficial notes are leads only. Published amounts require a citable public school or government source, or an aggregated parent-reported range.

Source-linked fees

Submissions with a public HTTPS URL on the frozen allowlisted school or government hostname set are fetched with SSRF guards. For auto-publish, the amount must appear in HTML text (PDFs and images are not used for new auto-publish). Domains not on the allowlist never auto-publish as source-checked — use the private parent-report path instead. On match, the row is stored as Source checked with URL, fetch time, and content hash. Wayback archive is best-effort and never blocks publish.

Parent-reported ranges

Private reports never appear individually. When ≥5 independent reports (distinct daily-rotated abuse-token hashes) exist for the same school + grade + academic year + fee type, outliers are trimmed with a 1.5×IQR fence, then min–max, median, and count are shown, labelled exactly: Parent-reported range — not from the school.

Problems & service controls

Any preset-reason complaint hides the row immediately. Source rows are re-checked; aggregates stay hidden until ≥5 new independent reports arrive after the complaint. “Personal information” hides permanently. Spike thresholds can pause submissions automatically; academic-year end hides stale rows; past operator renew-by freezes the site as a dated archive. See Service status.

Status labels

  • Source checked — matched to a cited public page at check time
  • Outdated — page gone or amount no longer matches

We do not use labels like “verified”, “official fee”, or “accurate”.