From 1b8adb91ee2312d458b6a9762782e29b2c2e0872 Mon Sep 17 00:00:00 2001 From: Tudor Date: Tue, 21 Jul 2026 09:00:02 +0100 Subject: [PATCH 1/3] fix(home): correct education/Ofsted claims on the landing page Homepage marketing content had drifted from both the current education regime and the app's own school pages. An expert accuracy review surfaced five issues (3 critical, 2 high): - Ofsted card showed a single "OUTSTANDING" word-grade. Overall grades were abolished (Sept 2024) and inspections now produce a report card on a five-point scale (from Nov 2025). Rebuilt the card as a report card with per-area ratings + stand-alone safeguarding, matching what CompareOfsted actually renders on a school page. - Attainment 8 "National avg 50.2" was wrong; the real 2024/25 figure is 45.9. Corrected the benchmark and the illustrative school value. - Compare mock featured a KS2 "Reading progress" score, but KS2 progress isn't published for 2023/24 or 2024/25 (no post-COVID KS1 baseline). Swapped for Higher standard (RWM), which is published. - Editorial called it "UK school performance data"; the data is England-only. Now matches the hero and page metadata. - Softened the "40-page inspection report" exaggeration. Landing-page copy isn't covered by e2e journeys, so no test changes. Verified with tsc --noEmit and next build. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0146VHeLAWjDVE2B5uU67jCB --- nextjs-app/components/EditorialSection.tsx | 4 +- nextjs-app/components/HomeView.module.css | 50 ++++++++++++++++----- nextjs-app/components/HowItWorksSection.tsx | 35 ++++++++++----- 3 files changed, 65 insertions(+), 24 deletions(-) diff --git a/nextjs-app/components/EditorialSection.tsx b/nextjs-app/components/EditorialSection.tsx index 318361c..edc0a26 100644 --- a/nextjs-app/components/EditorialSection.tsx +++ b/nextjs-app/components/EditorialSection.tsx @@ -13,7 +13,7 @@ export function EditorialSection({ totalSchools, localAuthorityCount }: Editoria
About school data
-

Making UK school performance data actually readable

+

Making England's school performance data actually readable

School performance data in England is rich but fragmented. The Department for Education publishes Key Stage 2 SATs, GCSE attainment, Ofsted outcomes, progress scores, admissions figures and @@ -23,7 +23,7 @@ export function EditorialSection({ totalSchools, localAuthorityCount }: Editoria SchoolCompare brings it all into one place. Every school page shows performance against the national average, explains what the numbers mean, and lets you shortlist schools side by side. Built for parents, governors, journalists, and anyone who wants to understand a school without reading a - 40-page inspection report. + full inspection report.

diff --git a/nextjs-app/components/HomeView.module.css b/nextjs-app/components/HomeView.module.css index 81e6397..daebb9f 100644 --- a/nextjs-app/components/HomeView.module.css +++ b/nextjs-app/components/HomeView.module.css @@ -869,28 +869,54 @@ color: var(--text-primary, #1a1612); } -.ofstedBadge { +.ofstedFramework { align-self: flex-start; - padding: 0.2rem 0.55rem; + padding: 0.15rem 0.5rem; border-radius: 4px; - background: rgba(45, 125, 125, 0.12); - color: var(--accent-teal, #2d7d7d); - font-size: 0.55rem; + background: rgba(90, 58, 110, 0.12); + color: #5a3a6e; + font-size: 0.5rem; font-weight: 700; letter-spacing: 0.05em; + text-transform: uppercase; } -.ofstedVerdict { - font-family: var(--font-playfair), 'Playfair Display', serif; - font-size: 1.05rem; +.rcList { + display: flex; + flex-direction: column; + gap: 0.3rem; +} + +.rcRow { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.5rem; +} + +.rcArea { + font-size: 0.62rem; + color: var(--text-secondary, #4a453d); +} + +.rcChip { + padding: 0.1rem 0.4rem; + border-radius: 3px; + font-size: 0.52rem; font-weight: 700; - line-height: 1.2; - color: var(--text-primary, #1a1612); + letter-spacing: 0.03em; + white-space: nowrap; + flex-shrink: 0; } -.ofstedVerdict em { +.rcChipGood { + background: rgba(45, 125, 125, 0.12); color: var(--accent-teal, #2d7d7d); - font-style: normal; +} + +.rcChipNeutral { + background: var(--accent-gold-bg, rgba(180, 150, 40, 0.12)); + color: var(--accent-gold-text, #7a6800); } .ofstedMeta { diff --git a/nextjs-app/components/HowItWorksSection.tsx b/nextjs-app/components/HowItWorksSection.tsx index ae22fc2..c44b0d7 100644 --- a/nextjs-app/components/HowItWorksSection.tsx +++ b/nextjs-app/components/HowItWorksSection.tsx @@ -12,8 +12,16 @@ export function HowItWorksSection() { ]; const compareRows = [ { label: 'Reading, Writing & Maths', a: '70%', b: '64%', aHi: true }, + { label: 'Higher standard (RWM)', a: '13%', b: '6%', aHi: true }, { label: 'Ofsted', a: 'Outstanding', b: 'Good', aHi: true }, - { label: 'Reading progress', a: '+2.1', b: '+0.4', aHi: true }, + ]; + // Report card (Ofsted's framework from Nov 2025): one rating per area of + // school life on a five-point scale, plus a stand-alone safeguarding outcome. + const reportCard: Array<{ area: string; grade: string; good: boolean }> = [ + { area: 'Achievement', grade: 'Strong', good: true }, + { area: 'Curriculum & teaching', grade: 'Expected standard', good: false }, + { area: 'Attendance & behaviour', grade: 'Strong', good: true }, + { area: 'Safeguarding', grade: 'Met', good: true }, ]; return ( @@ -49,15 +57,15 @@ export function HowItWorksSection() {
Secondary · Year 11 · GCSE Attainment 8
-
This schoolNational avg 50.2
+
This schoolNational avg 45.9
-
-
+
+
-
62.4
-
+12.2 vs national
+
54.8
+
+8.9 vs national
@@ -77,15 +85,22 @@ export function HowItWorksSection() { Latest Ofsted inspection
- OUTSTANDING -
Rated Outstanding at last inspection.
-
Full inspection · March 2024
+ Report card · five-point scale +
+ {reportCard.map(({ area, grade, good }) => ( +
+ {area} + {grade} +
+ ))} +
+
Full inspection · March 2026
Judgement
Ofsted at a glance
-

Current grade, inspection date, and a plain-English headline — without opening a 40-page report.

+

Since November 2025, Ofsted rates each area of school life on a five-point scale rather than one overall word. We show every area and the inspection date — and, for schools not yet reinspected, the older overall grade they still carry.

From 13253116c2d7251481bb6360b36f5f4e81af78fc Mon Sep 17 00:00:00 2001 From: Tudor Date: Tue, 21 Jul 2026 09:07:23 +0100 Subject: [PATCH 2/3] fix(home): correct remaining KS2/Ofsted terminology on the landing page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to the accuracy pass — the medium-severity wording issues from the same expert review: - KS2 "Exceeding" isn't a DfE term. The above-expected level is the "higher standard" for the reading and maths tests and "greater depth" for teacher-assessed writing. Labelled per subject, and brought the illustrative reading value down from an implausible 73% (national higher standard is ~29%) to a realistic strong-school figure. - Attributed inspection outcomes to Ofsted, not only the DfE (Ofsted is a separate non-ministerial department). - Hero: "2026/2027 admissions results" -> "the 2026/27 admissions round" (admissions produce offers, not results, and we don't hold per-school offer outcomes). Tightened .miniRowHead so the longer "Greater depth" label stays on one line and the three subject columns keep their bars aligned (the visual is desktop-only; hidden on mobile). Verified with tsc --noEmit and next build. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0146VHeLAWjDVE2B5uU67jCB --- nextjs-app/components/EditorialSection.tsx | 6 +++--- nextjs-app/components/HomeView.module.css | 7 +++++-- nextjs-app/components/HomeView.tsx | 2 +- nextjs-app/components/HowItWorksSection.tsx | 13 ++++++++----- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/nextjs-app/components/EditorialSection.tsx b/nextjs-app/components/EditorialSection.tsx index edc0a26..0cbc4af 100644 --- a/nextjs-app/components/EditorialSection.tsx +++ b/nextjs-app/components/EditorialSection.tsx @@ -15,9 +15,9 @@ export function EditorialSection({ totalSchools, localAuthorityCount }: Editoria
About school data

Making England's school performance data actually readable

- School performance data in England is rich but fragmented. The Department for Education publishes - Key Stage 2 SATs, GCSE attainment, Ofsted outcomes, progress scores, admissions figures and - demographics — each in its own table, each with its own jargon. + School performance data in England is rich but fragmented. The Department for Education and Ofsted + publish Key Stage 2 SATs, GCSE attainment, inspection outcomes, progress scores, admissions figures + and demographics — each in its own table, each with its own jargon.

SchoolCompare brings it all into one place. Every school page shows performance against the national diff --git a/nextjs-app/components/HomeView.module.css b/nextjs-app/components/HomeView.module.css index daebb9f..538de4b 100644 --- a/nextjs-app/components/HomeView.module.css +++ b/nextjs-app/components/HomeView.module.css @@ -720,10 +720,13 @@ .miniRowHead { display: flex; justify-content: space-between; - font-size: 0.48rem; + align-items: baseline; + gap: 0.2rem; + font-size: 0.44rem; color: var(--text-muted, #6d685f); text-transform: uppercase; - letter-spacing: 0.04em; + letter-spacing: 0.01em; + white-space: nowrap; } .miniRowHead strong { diff --git a/nextjs-app/components/HomeView.tsx b/nextjs-app/components/HomeView.tsx index 945770b..4662a26 100644 --- a/nextjs-app/components/HomeView.tsx +++ b/nextjs-app/components/HomeView.tsx @@ -261,7 +261,7 @@ export function HomeView({ initialSchools, filters, totalSchools, howItWorks, ed

Every school in England, compared. diff --git a/nextjs-app/components/HowItWorksSection.tsx b/nextjs-app/components/HowItWorksSection.tsx index c44b0d7..5927458 100644 --- a/nextjs-app/components/HowItWorksSection.tsx +++ b/nextjs-app/components/HowItWorksSection.tsx @@ -5,10 +5,13 @@ import styles from './HomeView.module.css'; export function HowItWorksSection() { + // "exc" is the school's above-expected result. DfE names this differently + // by subject: "higher standard" for the reading and maths tests, "greater + // depth" for teacher-assessed writing. "nat" is the national expected %. const miniCascade = [ - { subj: 'Reading', exp: 96, exc: 73, nat: 75 }, - { subj: 'Writing', exp: 81, exc: 15, nat: 72 }, - { subj: 'Maths', exp: 85, exc: 47, nat: 74 }, + { subj: 'Reading', exp: 96, exc: 44, nat: 75, excLabel: 'Higher std' }, + { subj: 'Writing', exp: 81, exc: 26, nat: 72, excLabel: 'Greater depth' }, + { subj: 'Maths', exp: 85, exc: 41, nat: 74, excLabel: 'Higher std' }, ]; const compareRows = [ { label: 'Reading, Writing & Maths', a: '70%', b: '64%', aHi: true }, @@ -37,7 +40,7 @@ export function HowItWorksSection() {
Primary · Year 6 · Key Stage 2 SATs
- {miniCascade.map(({ subj, exp, exc, nat }) => ( + {miniCascade.map(({ subj, exp, exc, nat, excLabel }) => (
{subj}
Expected{exp}%
@@ -45,7 +48,7 @@ export function HowItWorksSection() {
{nat}%
-
Exceeding{exc}%
+
{excLabel}{exc}%
From 22e9eb2d48b0d6623e88fd67cb6ca8e5e4074583 Mon Sep 17 00:00:00 2001 From: Tudor Date: Tue, 21 Jul 2026 10:01:10 +0100 Subject: [PATCH 3/3] fix(home): make Att8 bar match its numbers and separate safeguarding Two internal-consistency fixes on the "What you'll see" mock: - The Attainment 8 bar had drifted from the numbers beside it (fill 68% / line 57% vs a 54.8 score and 45.9 national avg). Restored the mock's original 1:1 value-to-percent mapping: fill 54.8%, national line 45.9%. - The report card grouped "Safeguarding: Met" in the same five-point list as the graded areas, but safeguarding is a separate binary met/not-met judgement under the real framework. Moved it below the list behind a divider, with an outlined chip and a "separate check" label so it no longer reads as a graded area. Verified with tsc --noEmit and next build. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0146VHeLAWjDVE2B5uU67jCB --- nextjs-app/components/HomeView.module.css | 23 +++++++++++++++++++++ nextjs-app/components/HowItWorksSection.tsx | 12 +++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/nextjs-app/components/HomeView.module.css b/nextjs-app/components/HomeView.module.css index 538de4b..cbe4fc0 100644 --- a/nextjs-app/components/HomeView.module.css +++ b/nextjs-app/components/HomeView.module.css @@ -922,6 +922,29 @@ color: var(--accent-gold-text, #7a6800); } +/* Safeguarding is a separate binary met/not-met judgement, not a graded area, + so it sits below the five-point list behind a divider with its own chip. */ +.rcSafeguarding { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.5rem; + margin-top: 0.05rem; + padding-top: 0.35rem; + border-top: 1px dashed var(--border-color, #e5dfd5); +} + +.rcSep { + color: var(--text-muted, #8a847a); + font-style: italic; +} + +.rcChipMet { + background: transparent; + color: var(--accent-teal, #2d7d7d); + border: 1px solid rgba(45, 125, 125, 0.4); +} + .ofstedMeta { font-size: 0.6rem; color: var(--text-muted, #6d685f); diff --git a/nextjs-app/components/HowItWorksSection.tsx b/nextjs-app/components/HowItWorksSection.tsx index 5927458..75a3783 100644 --- a/nextjs-app/components/HowItWorksSection.tsx +++ b/nextjs-app/components/HowItWorksSection.tsx @@ -19,12 +19,12 @@ export function HowItWorksSection() { { label: 'Ofsted', a: 'Outstanding', b: 'Good', aHi: true }, ]; // Report card (Ofsted's framework from Nov 2025): one rating per area of - // school life on a five-point scale, plus a stand-alone safeguarding outcome. + // school life on a five-point scale. Safeguarding is judged separately, as a + // binary met/not-met outcome — kept out of this list and shown on its own. const reportCard: Array<{ area: string; grade: string; good: boolean }> = [ { area: 'Achievement', grade: 'Strong', good: true }, { area: 'Curriculum & teaching', grade: 'Expected standard', good: false }, { area: 'Attendance & behaviour', grade: 'Strong', good: true }, - { area: 'Safeguarding', grade: 'Met', good: true }, ]; return ( @@ -62,8 +62,8 @@ export function HowItWorksSection() {
This schoolNational avg 45.9
-
-
+
+
@@ -97,6 +97,10 @@ export function HowItWorksSection() {
))}
+
+ Safeguarding · separate check + Met +
Full inspection · March 2026