Site Map
Verified against the live repo on 2026-09-03 — every route below was checked against the actual page files and Header.astro, not assumed from a spec.
Site tree
Solid = built and live. Dashed = referenced in the UI but the page doesn't exist yet (404) or hasn't been started. Nav labels are exactly what's in Header.astro today.
Not in the nav, but live
b30c1a2).Build status
Verified directly against the page files and Header.astro, line by line, on 2026-09-03.
| Item | Status |
|---|---|
| Rename "Platform Build & Optimization" → "Digital Tools & Systems" | Applied — nav, page title, hero eyebrow, homepage card (06ada66) |
| Rename "Digital Engagement & Strategy" → "Digital Strategy & Performance" | Applied — nav, page title, hero eyebrow, homepage card (06ada66) |
| Individual case study pages | Live — content collection with real content ported from fireflypartners.com, 8 pages at /project/[slug]/ (536bc8b) |
| Contact form wired to HubSpot | Live — real HubSpot embed with portal/form IDs, renders correctly. Re-test once main is deployed live. |
| Newsletter subscribe block | UI exists ("Subscribe to UnTangling the Week"), form doesn't submit anywhere |
| Jen's Musings | Scaffolded — content collection, landing page, detail route, and nav item live; 3 clearly-marked placeholder posts, no real content from Jen yet (536bc8b) |
| Downloads & Tools / AI Resources / Firefly in the Wild | Scaffolded — 3 minimal placeholder pages exist at their URLs, kept out of nav/hub via a simulated show_in_nav/show_on_hub toggle (both false), matching the spec's "unpublished to start" behavior (536bc8b) |
| "Related Resources" cross-content block | Missing, no matches in code — also blocked on the topic_tags/sector_tags reconciliation below |
| Case study tags (sector/service/platform) | Reconciled to the Functional Spec's exact vocabulary (9 sectors, 4 services, 10 platforms) across case studies and projects.astro (536bc8b) |
| Resources tags (topic_tags) vs. case study tags | Open — spec defines topic_tags for Articles/UnTangled/Musings separately from case studies' sector/service/platform tags, with no stated cross-reference rule (see Taxonomy below) |
Taxonomy
src/content.config.ts now defines two Astro content collections (caseStudies, musings) with Zod-enforced vocabularies pulled from the Functional Spec, replacing the old hardcoded/free-text tags. There are two separate, non-overlapping tag systems, and the spec doesn't say how they cross-reference.
sectors / services / platforms on every case study and on projects.astro now use the spec's exact vocabulary (9 sectors, 4 services, 10 platforms, p.10–11), enforced by z.enum so drift fails the build. A pre-existing filter bug (the "+" in "LGBTQ+ Rights" wasn't stripped from the filter slug) was found and fixed in the same pass.
Articles / UnTangled / Jen's Musings use a separate topic_tags vocabulary (p.16: AI adoption, digital strategy, engagement platforms, analytics and performance, website, sector news). The spec never states how topic_tags should match against case studies' sector_tags/service_tags/platform_tags for the "Related Resources" block — this is a real gap in the client's own document, not something we can infer from the code.
Open gaps
Everything still outstanding, in one list, each tagged with what it actually needs.
Reconcile topic_tags with case study tags
See Taxonomy above — the spec doesn't state a matching rule between Resources' topic_tags and case studies' sector_tags/service_tags/platform_tags. Blocks "Related Resources" until Jen or the client answers it.
"Related Resources" block
Specified to connect Articles / UnTangled / Musings / Projects by shared tags, pulling up to 3 matches. Both case study and Musings detail pages now have a visually placeholdered section for it, but the actual matching logic isn't built — blocked on gap #1.
Newsletter form isn't wired
resources/index.astro's and the new Jen's Musings landing page's "Subscribe to UnTangling the Week" forms both have onsubmit="return false;" — no HubSpot or API connection, unlike the contact form which is fully live.
Articles / UnTangled need their own content collection
Case studies and Musings now use Astro content collections; Articles and UnTangled are still hardcoded arrays inline in their .astro files — same pattern the taxonomy work already fixed elsewhere.
Real content for Jen's Musings and Downloads/AI/Wild
Both are scaffolded (routes, schema, nav where applicable) but hold only placeholder content — Musings has 3 clearly-marked placeholder posts, and Downloads & Tools / AI Resources / Firefly in the Wild are minimal "coming soon" pages with their nav/hub toggles off, per the spec's own "unpublished to start" / post-launch note.
Re-test the HubSpot contact form live
Renders correctly locally, with real portal/form IDs. Confirm it submits correctly once main is deployed to production — local testing can't rule out domain-specific issues.