Internal progress tracker for the Stage 0 demonstrator. Figures are calculated from
requirement statuses.
Stage 0, overall
49%
The mean of 16 components, each calculated from the 38 requirements that count towards Stage 0.
Since the first snapshot
Baseline set 2026-11-02
5
Strong
70% and over
7
In progress
30% to 69%
4
Barely started
under 30%
Foundations 3 components · 88%
Accessibility and performance
100%
Customer asks · §8 Non-functional
Accessibility: meets WCAG 2.2 AA, with an accessibility statement; interactive tools (quiz, scene, cards) must work with keyboard and screen readers and offer a non-visual alternative. Performance and devices: mobile-first design (students will mostly use phones); fast load times on average connections; supports current versions of major browsers.
Remaining work
Re-run the audit suite over every new page
Write the accessibility statement page
Calculated from 1 requirement
R32DoneMobile-first, accessible, fast§8Accessibility 100 on all 15 audited routes with performance 97 to 100, plus eight bespoke audit scripts. Greyscale checks prove no state relies on colour alone. The accessibility statement page is the piece still missing..lighthouse/result.json, scripts/contrast.mjs, scripts/overflow.mjs
Content model and data layer
75%
Customer asks · §3 Cross-sector requirements
Every career and course page carries tags from the green skills taxonomy (see section 5). Content is held in a CMS so Faculty staff can update it without a developer.
Remaining work
Add sector, resource, taxonomyTag and caseStudy collections
Extend the validator for each
Add sectorId to all roles
Calculated from 2 requirements
R30DoneContent held so staff can update it without a developer§3, §8Eighteen typed collections behind one accessor layer, every file stating its source and the date a human last checked it, referential integrity enforced by the validator, and the schema rendered on screen with a real record. Sector is now among them. Resource, taxonomyTag and caseStudy are the three still to add.src/lib/content.js, scripts/validate-data.mjs, src/data/sectors.json
R26Part doneThe taxonomy as the single tagging system§5One tag vocabulary exists and is enforced in both directions, but it is a preference vocabulary written for a 16-year-old rather than a skills taxonomy: there is no core, technical and transferable structure, and courses carry a strand rather than tags.src/data/tags.json, scripts/validate-data.mjs
Site structure and navigation
90%
Customer asks · §9 Site structure
The site is organised around three entry points: sectors, audiences and the Faculty. Visitors can start from a sector, an audience or the Faculty, and the tools connect all three.
Remaining work
Create the missing routes; header and footer carry the real structure
Calculated from 1 requirement
R1Part doneSite structure: three entry points, all page groups§9The home page is a navigation portal and nothing more: a title, one search box, five “Explore for:” routes keyed to who the reader is, and the two under them, into the work itself at /sectors and into who teaches it at /providers. Every option opens its own page; nothing on / filters in place. The header carries four real destinations on every route (Courses, Explore work, Where to train and About the data), so the structure is navigable from anywhere rather than only from the front door. Every page group from the site map exists and builds, and the validator opens the page behind every nav link and every home-page link, so the structure cannot quietly start pointing at nothing. What is left is the footer, which still carries only the two tools and the provenance trigger; that is a change to a shared component on signed-off routes and has not been asked for.src/pages/index.astro, src/data/home.json, src/components/SiteHeader.astro, src/pages/about.astro
Content pages 6 components · 43%
Careers directory
50%
Customer asks · §3 Sector pages, item 3
A directory of green careers: role title, what the job involves, typical entry routes, skills needed, and sourced salary and demand data with an as-of date.
Remaining work
Name the salary source with an as-of date
Add a demand or vacancy figure with its source
Named entry routes: GCSE, T Level, apprenticeship, A level
Calculated from 1 requirement
R7Part doneCareers directory with sourced salary and demand data§3All 14 roles carry and render a pay range. There is no demand or vacancy figure anywhere in the data, and the pay figures carry no named publication or as-of date on the page. The home page shows no pay figure at all for that reason: a number whose publisher and date the record cannot state is a number nobody can check, and /about says so in as many words.src/pages/role/[id].astro:276-284
Home page
100%
Customer asks · §9 Phasing
Phase 1, content site: home page, six sector pages, three landing pages with the student guidance tools, resource pages, taxonomy, partner profiles and CMS.
Nothing outstanding on this component.
Calculated from 1 requirement
R2DoneHome page§9Rebuilt on 2 November, twice. What it offers is Jamie's: a title, one search box that submits to /courses, and links to pages, with no stats line, no chips, no cards full of records, no switcher and no “Being built” tags, because everything a reader might want to know belongs on the page the link opens, where it is kept true once. How it looks is the site's own language, lifted from /start rather than invented: the wide wrap, the lockup, three illustrated cards for the three audiences who arrive not knowing what the site is, two lime bands under them for the two who do, and the footer's tile row at the foot for the two routes that are not about who you are at all. Which link takes which shape is a judgement about emphasis and Jamie's to make: he swapped the bands and the tiles on 2 November, and the hero was centred and the search control widened to 720px in the same pass. The card scenes are drawn in src/components/PortalArt.astro, which belongs to this page alone. The links are data (src/data/home.json) in three shapes, each allowed only the keys it draws with, so the portal cannot start describing the pages it points at; validate-data.mjs checks that too, and that every route has a page behind it. The page this hub replaced moved to /start unchanged and is the young person's door.src/pages/index.astro, src/data/home.json, src/pages/start.astro
Sector pages
60%
Customer asks · §3 Sector pathways
The portal needs one page for each of six sectors, all built from the same template so visitors can compare them easily. A pathway graphic showing routes from entry level to professional level (for example short courses, T Levels, apprenticeships, FE, degrees and degree apprenticeships), with each step linking to the partner course that offers it.
Remaining work
Retrofit to Clean energy related-sector link
Calculated from 5 requirements
R3Part doneSector page template, seven sections§3The seven-section sector template is built and all six sectors render on it. Six of the seven sections are real, drawn from what the roles already carry; section five, real stories, has nothing behind it and says so rather than drawing an empty frame.src/pages/sectors/[id].astro
R4Part doneRetrofit sector populated§3The content is written and is the strongest in the repo, but it sits on four role pages rather than on a sector page.src/data/roles.json
R5Part doneThe other five sectors, on the same template§3All five other sectors exist on the same template as Retrofit, each marked as sample content. Their roles are researched; the paragraph about why each matters to the county is not written yet.src/data/sectors.json
R6DonePathway graphic, each step linking to a course§3Four pathways holding 19 steps, five of them at a level with no provision and labelled as gaps. Built per role rather than per sector, which is finer-grained than asked for.src/components/PathwayLadder.astro, src/pages/pathway/[id].astro
R8Part doneRelated sectors and transferable skills§3Transferable skills render on all 14 roles, and every sector now names its related sectors and says why, enforced by the validator. The cross-link exists in both directions. What is missing is the same thing on the role page, which still has no route to a neighbouring sector.src/data/sectors.json, src/pages/sectors/[id].astro
Faculty ecosystem and partner profiles
50%
Customer asks · §6 Faculty profile pages
Each of the seven Faculty partners gets a profile page that shows what it offers and how it connects with the others, so visitors see one ecosystem rather than seven separate institutions. A landing page showing all seven partners and a partner-by-sector grid, with each cell linking to the relevant courses.
Remaining work
Provider-by-sector grid, reusing the /map component
Calculated from 3 requirements
R27Part doneEcosystem landing page and partner-by-sector grid§6The provider list is built and every one of the 32 organisations has a profile page. The partner-by-sector grid itself is not built yet; /map still holds the roles-by-levels grid the component came from. The hub routes to it: "Where to train" on the front door and in the header both land on /providers, so the seven partners are reachable from the first screen even though the grid is not built.src/pages/providers.astro, src/pages/partner/[id].astro
R28Part donePartner profile template, eight sections§6The eight-section profile template is built and renders for all 32 providers, not just the seven Faculty members, because ingestion keys on provider and every provider it can pull from needs somewhere for those courses to land. Facilities, specialisms and who it is for are the sections still waiting on Faculty input.src/pages/partner/[id].astro
R29Part doneProgression links between partners§6Progression between partners is now stated rather than implicit: each profile finds the courses a level above where that provider's own catalogue stops, for the same roles, and names who teaches them. Derived, so it cannot go stale.src/pages/partner/[id].astro
Green skills taxonomy
0%
Customer asks · §5 Green skills taxonomy
Explain green skills in clear language, and group them in a simple structure that the Faculty agrees (for example core, technical and transferable skills). Make the taxonomy the single tagging system for careers, courses and resources, so that visitors can follow a skill from a job to the courses that teach it.
R25Not startedTaxonomy page: explainer, structure, glossary, per-audience summary§5There is no taxonomy page. Every role carries a taxonomy reference and the role page prints the alignment claim, which is the claim with nothing behind it yet.src/pages/role/[id].astro:292-294
Resource library
0%
Customer asks · §5 Resource pages
Four resource pages give each audience a curated, searchable library. Visitors can search and filter by sector, type, audience and date, and sort newest first.
Remaining work
One shared search, filter and sort component
10–15 real items from the PDFs already in docs/
Policy, teachers and advisers, jobs, and events pages
Calculated from 5 requirements
R20Not startedResource library: search, filter, sort, item fields§5No resource entity, no component and no items.
R21Not startedPolicy and evidence page§5Not started. The source material is already in the repo: the strategy, the skills map, the retrofit pathway maps and four conference documents.docs/green-skills-strategy.pdf
R22Not startedTeachers and advisers page, with lesson plan fields§5Not started. The adviser page is a signpost to one tool, not a resource library.src/pages/advisers.astro
R23Not startedJobs and upskilling page§5Not started.
R24Not startedEvents page§5Not started.
Audience journeys 2 components · 30%
Student journey and tools
43%
Customer asks · §4.1 and §10 acceptance
A short quiz (indoors or outdoors, hands-on or digital, team or solo, interests and favourite subjects) that returns matched careers and says why each matched. A student can reach a shortlist of matched careers, with reasons, in under five minutes and without creating an account.
Remaining work
Show the match reasons on the quiz result
Shortlist of three and a student landing page
Parents and carers section; school subjects in search
Calculated from 7 requirements
R10Not startedStudent landing page on the common structure§4.1The student page was folded into /explore, which is a search surface: no benefit blocks, no proof, no next steps, no FAQs.src/pages/explore.astro
R11Part doneStudent direct-choice route by level§4.1Sector to career works, and career to routes-in by level works with a next step on each rung. The named routes the requirement asks for — GCSE, T Level, apprenticeship, A level — are not in the data; the ladder is RQF levels 2 to 7.src/components/Ladder.astro
R12Part doneGuided quiz returning matched careers with reasons§4.1Three questions, scored matching, three results and one named course with cost, start date, campus, bus route and phone. The reasons are computed and then not shown: the result card renders only title, pay and the day-one scene.src/islands/SitBeside.jsx:303-325
R13Part doneFavourite subjects to careers§4.1The mechanism maps a typed term to tags and roles and works. Of the obvious school subjects only maths is in the file.src/data/synonyms.json
R14Part doneShortlist, compare three, share without login§4.1Sharing is built and goes further than asked: a card is rendered off-screen and handed to the device share sheet as an image, so no personal data is collected. The shortlist and the side-by-side compare of three do not exist.src/components/SaveCard.astro, src/islands/SitBeside.jsx
R15DoneExplorable scene or swipe cards§4.1Over-delivered against a target of concept only: a drawn county map with a Gloucester inset, eight training points over 13 campuses and 14 illustrative project pins.src/pages/area.astro
R16Not startedParents and carers section, and a link to a careers adviser§4.1No parent or carer content anywhere. The adviser page is written for professionals and is not linked from any student-facing surface.
Upskiller and business pages
17%
Customer asks · §4.2 and §4.3
Tool: a “skills gap check” where a visitor selects their current trade or role and a target area, and sees the gap and the shortest route to close it (for example from electrician to heat pump or solar installer). Tool: a “training needs finder” where a business states its sector, team size and goals, and receives suggested courses, apprenticeships and partners.
Remaining work
Upskiller page with the Electrician to Heat Pump Installer gap check
One business page with a scripted training needs finder
Calculated from 3 requirements
R17Not startedUpskiller landing page and skills gap check§4.2Upskillers is the one audience the requirements name that has no persona. There is no electrician role and no skills-delta model, so the electrician to heat pump script has nothing behind it yet.src/data/personas.json
R18Part doneBusiness landing page and training needs finder§4.3Two thin business-facing pages exist, each a heading, persona copy and two signpost panels. There is no training needs finder.src/pages/smes.astro, src/pages/employers.astro
R19Not startedRequest-a-conversation enquiry form§4.3There is no form element in the repo. Enquiry today means the provider's own phone number and contact page.
Course data 3 components · 58%
Course data and ingestion
74%
Customer asks · §7.1 Course data
Bring course data from the Faculty partners and other local providers into a single database. Support both manual upload and live queries of a provider’s own system, chosen per provider; where a live source is down, show the last good data with its date.
Remaining work
Crawler and AI extractor across all providers, with change detection
Calculated from 5 requirements
R9DoneFilter by sector, level, provider, location, mode and funding§3The course finder filters on all six axes §3 names — sector, level, provider, location, mode and funding — with every facet value derived from the data rather than typed, so an ingested course joins the finder by existing. Within an axis the choices are OR, across axes AND. An option that would leave nothing is disabled rather than hidden, because 'there is none of that here' is an answer about the county worth being able to see. A seventh way to narrow the list arrives from the home page: the one search box on / is a plain GET form to /courses, and the finder reads q out of the query string so it opens with the words in its own box and the list already cut down. The six axes still work alongside it and their counts are computed against what the words leave. The finder also accepts provider= for links from a partner profile, and ignores a provider id no course belongs to rather than filtering the page down to nothing.src/pages/courses.astro, src/islands/CourseFinder.jsx, src/lib/search.js, src/pages/index.astro
R38Part doneCourse data brought into a single database§7.1The ingestion layer is built: six adapters on one interface, a runner that dedupes, diffs field by field against live data and writes an inbox, and an approval step that runs the validator before writing. Verified end to end with no keys present. The NCS adapter reads the real published workbook — 102,861 rows, 422 of them at providers we hold. What is left is running it with keys and approving a first batch.scripts/ingest/run.mjs, scripts/ingest/ncs.mjs
R39Part doneCourse finder running on the ingested data§10The finder runs over whatever is in the course collection, so an approved ingested course appears in it with its source and the date a person accepted it. It is live data the moment ingestion has been run with keys.src/pages/courses.astro
R44DoneCourse last-updated date shown§10, §11Derived rather than typed, and it collapses to one date or widens to a range so the sentence stays true. Ingested courses carry their own provenance with the date a person approved them, shown on the course finder and the partner profile. /about now carries the same dates for every collection, not just courses, so "when was this last checked" is a page in the top nav rather than something to go looking for.src/components/SiteFooter.astro, src/islands/CourseFinder.jsx, src/pages/about.astro
R48Part doneNational course data sources§7.1The NCS adapter is built and reads the real monthly release, finding its own current file because the name carries its month. The DfE vacancies and Skills England adapters are built and waiting on keys.scripts/ingest/ncs.mjs, scripts/ingest/faa.mjs, scripts/ingest/occmaps.mjs
Review queue
50%
Customer asks · §7.1 and §11 Governance
Validate imports, report errors to an administrator, and keep a log of what changed and when. Each partner remains the owner of its data and signs a data-sharing agreement covering use, refresh frequency and withdrawal.
Nothing outstanding on this component.
Calculated from 1 requirement
R47Part doneReview queue for imported courses§7.1, §11The review queue is built. /inbox lists pending items grouped by provider with source, confidence, a link to the page it came from and a field-level diff; `npm run approve` moves items into live data through the validator and keeps rejections with their reason. The nightly Action opens the pull request that is the queue itself.src/pages/inbox.astro, scripts/approve.mjs, .github/workflows/ingest.yml
Provider ‘tell us’ channel
50%
Customer asks · §7.1 (closest match; the channel itself is our addition)
Accept data in any format the provider can supply (for example spreadsheets, CSV, XML, JSON, feeds or an API); the developer defines the common data model and mapping.
Remaining work
Working version needs a server: Stage 1
Calculated from 1 requirement
R46Part doneProvider channel for telling us about new training§7.1The mock channel is built on /providers: a provider pastes a course link and gets a confirmation. It is labelled a demonstration in words rather than small print and sends nothing, because a form that looked like it submitted and did not would leave a provider waiting to hear back. The working version needs a server.src/pages/providers.astro
Launch 2 components · 15%
Sharing and SEO previews
0%
Customer asks · §13 What the site must support
Shareable pages and tools, with clear page titles and preview images for social media and email.
Remaining work
Open Graph tags and one preview image per page group
Check the production link unfurls in Teams
Calculated from 1 requirement
R36Not startedShareable pages with titles and preview images§8, §13There are no Open Graph, Twitter, canonical or structured-data tags anywhere, so a link pasted into a chat renders as a bare URL. Every route is deliberately kept out of search until sign-off, which is right and does not conflict with adding preview tags.src/layouts/Base.astro:36-55
Deploy and governance pack
30%
Customer asks · §10 Priorities and acceptance
Budget, timeline and procurement route: to be confirmed by GCC. Bidders should price each phase separately, state their assumptions and include a contingency.
Remaining work
Deploy and check on a real phone
Sample-content labelling pass
Stage 1 proposal priced per phase, decisions list, data-sharing question
How this figure is set
This component has no requirement of its own, so the figure is set by hand in
the data. It is the only typed percentage on the page.
How this page is calculated
Each component is the mean of its requirements' scores: done counts 100, part done 50,
not started 0, and a requirement may carry its own percentage where half is not the
honest number. The overall figure is the mean of the 16 component
percentages. A requirement deferred to Stage 1 is excluded rather than scored as zero, so
the figure measures the demonstrator and not the whole programme.
Of 48 requirements on record, 7 are done, 21 (1 outside Stage 0) are part done and 11 are not
started. A further 9 are deferred to Stage 1. That leaves 38 counted towards the figures above: the deferred ones, and
any marked as outside Stage 0, contribute to no bar. They are counted here rather than
hidden, because work that was done is still work that was done.
Requirement wording
Green Skills Pathways Portal – Website Requirements (Jon Hickman, 28 Oct 2026), read against the codebase. Statuses and evidence paths were seeded from the gap review in STAGE-0-GAP-REVIEW.md §8, which was produced by reading each file rather than from notes.
Component quotes
Green Skills Pathways Portal – Website Requirements (Jon Hickman, 28 Oct 2026); STAGE-0-GAP-REVIEW.md