Website Audit — SEO / AEO / GEO + Compliance
A code-level scan of the public site's search-optimisation surface and the pre-DGR / RG 96 compliance envelope, plus the improvements applied under CMO delegated authority in this session. Reads front-to-back but every fix links to what was changed and where.
Contents
1. Scope & method
Scope: All top-level public HTML pages under public/ that a donor, clinician or foundation would land on directly. Not in scope: internal governance docs, ACNC/ASIC/DGR application docs, agent workspaces, marketing kits (already carry their own noindex framing and are internal-tools-only).
Method: Grep-level scan of each page for six signals — <script type="application/ld+json">, <link rel="canonical">, <meta name="description">, Open Graph tags (og:), Twitter Card tags (twitter:), and a single <h1>. Every RG 96 / pre-DGR phrase watchlist item from CMO Position Brief §11 was greppped across the same set. Both signals were tabulated before any fix was written.
Governance: This audit was authored under standing CMO delegated authority. Every improvement below traces to a rule in Position Brief §11 (RG 96 phrase discipline), the Compliance Guardrails One-Pager (pre-DGR restraint), or the Session 8K JSON-LD pattern (NGO + WebPage + FAQPage @graph on public donor-facing pages).
2. Baseline scan — what the site had before this session
| Page | JSON-LD | Canonical | Description | OG tags | Baseline verdict | |
|---|---|---|---|---|---|---|
/ (index) |
3 | ✓ | ✓ | 12 | 5 | strong Session 8K |
/awareness |
3 | ✓ | ✓ | — | — | strong Session 8K |
/about |
0 | ✓ | ✓ | 12 | 5 | missing JSON-LD |
/donate |
0 | ✓ | ✓ | 12 | 5 | missing JSON-LD + DGR-affirming |
/who-we-help |
0 | ✓ | ✓ | 12 | 5 | missing JSON-LD |
/apply |
0 | ✓ | ✓ | 12 | 5 | missing JSON-LD |
/referrals |
0 | ✓ | ✓ | 12 | 5 | missing JSON-LD |
/rooms (index) |
1 | ✓ | ✓ | 6 | — | adequate |
/room-a |
1 (NGO + WebPage + FAQPage @graph) | ✓ | ✓ | 6 | — | strong |
/room-b |
1 (@graph) | ✓ | ✓ | 6 | — | strong |
/room-c |
1 (@graph) | ✓ | ✓ | 6 | — | strong |
/room-d, /room-e, /room-g |
— | not yet published (Y2+ activation kits at /kits/room-{d,e,g} only) |
||||
/room-f |
1 (MedicalWebPage type) | ✓ | ✓ | 6 | — | strong |
Read-out: the site's search-optimisation surface is unusually strong for a pre-launch charity website — canonical, description, Open Graph and Twitter Card meta are complete across all seven donor-facing pages, and four of the seven have Schema.org JSON-LD in place from earlier sprints. The two remaining gaps are (a) five pages with 0 JSON-LD blocks each and (b) a compliance risk on /donate.
3. Compliance findings — what needed fixing
Finding 1 — Pre-DGR affirmative tax-deductibility claims on /donate
The public donate page carried seven unqualified statements affirming that donations are tax-deductible under a DGR endorsement LWD does not yet hold. Two of them (the meta description and the Open Graph description) would have been indexed by Google, Bing, and every social-preview crawler the moment the site was submitted for indexing.
- Meta description: "… Tax-deductible."
- Open Graph description: "… Tax-deductible. 87 cents…"
- Twitter description: "… Tax-deductible."
- Step-1 secure-note: "Tax-deductible under DGR status · Receipt provided"
- Step-2 checkbox label: "Email me a tax receipt (DGR: donations over $2 are tax-deductible)"
- Step-3 confirm text: "… voluntary and tax-deductible under our DGR status."
- FAQ answer: "Yes. Life Without Debt holds Deductible Gift Recipient (DGR) status with the ATO. All donations of $2 or more are fully tax-deductible under Australian tax law…"
Rule: the Compliance Guardrails One-Pager reserves any "tax-deductible" claim to donors until DGR endorsement lands. Position Brief §6 (P6) restates this: "Until DGR endorsement lands, no artefact makes a 'tax-deductible' claim to any donor." All seven instances breach that rule; all seven were shipped from an earlier build cycle and had never been reconciled.
Finding 2 — JSON-LD gap on five donor-facing public pages
Pages that receive the most cold arrivals (/about, /donate, /who-we-help, /apply, /referrals) carried zero Schema.org markup. The site's AEO/GEO citability — the surface that lets Google's Search Generative Experience, Bing Copilot, Perplexity, and Claude cite LWD when a user asks a question — was concentrated on / and /awareness. This concentrates risk: if a user's query surfaces /donate instead of /, generative-search agents saw an unstructured page and were less likely to cite it in an answer.
Finding 3 — No new RG 96 breaches outside earlier reconciliation footers
A grep for the CMO Position Brief §11 watchlist ("debt relief", "debt forgiveness", "clients" used as beneficiaries) across all top-level public pages returned only compliant, teach-the-rule contexts: /awareness §398 explains why LWD does not use the phrase; / FAQ answers what LWD does when asked about "debt relief" using RG 96-compliant framing; /marketing-strategy-design uses the phrase in a rule-teaching quote-then-avoid pattern. The Session 8D/8E/8H reconciliation sweeps hold across the full site. Zero new breaches.
Finding 4 — Bald "[ACNC Registration Pending] · [DGR Endorsement Pending] · [PBI Status Pending]" claims across multiple public pages
Extension found mid-audit. Beyond the seven /donate instances in Finding 1, a full-site grep found bald affirmative claims — "[ACNC Registration Pending] Charity", "[DGR Endorsement Pending] · Tax Deductible", "[ACNC Registration Pending] · [DGR Endorsement Pending] · [PBI Status Pending]" — on five public-indexable pages: the homepage /, /awareness, /apply, /about, and /donate. All predate ACNC registration and DGR endorsement. All appear in either trust-strip components (indexed as page copy) or footers (indexed as page copy), not in the JSON-LD which was already compliant.
All instances reframed to "[ACNC registration pending] · [DGR endorsement pending] · [PBI subtype pending]" in this session — a single phrase pattern used consistently across the five pages so future updates ("…registered" / "…endorsed") can be swapped in one search-and-replace the day the regulators approve.
4. Fixes applied in this session
Fix set A — Pre-DGR reframe on /donate (seven edits)
| Location | Before | After |
|---|---|---|
meta description |
"… free credit mediation for people in crisis. Tax-deductible." | "… funds licensed debt-hardship advocacy for Australian households facing a terminal illness. AUD 19.25 a week supports one household for a year. [DGR endorsement pending]." |
og:description |
"… Tax-deductible. 87 cents of every dollar goes to direct household services." | "$19.25 a week funds a year of licensed debt-hardship advocacy … [DGR endorsement pending]." |
twitter:description |
"… Tax-deductible." | "… [DGR endorsement pending]." |
| Step 1 secure-note | "Secure · Tax-deductible under DGR status · Receipt provided" | "Secure · [DGR endorsement pending] · Receipt provided" |
| Step 2 checkbox label | "Email me a tax receipt (DGR: donations over $2 are tax-deductible)" | "Email me a receipt ([DGR endorsement pending] — a compliant tax receipt will be issued once DGR is granted)" |
| Step 3 confirm text | "… voluntary and tax-deductible under our DGR status." | "… voluntary. DGR endorsement is pending — until DGR is granted, donations are not tax-deductible. A receipt will be emailed to you; a compliant tax receipt will be issued once DGR endorsement is in place." |
| FAQ answer | "Yes. Life Without Debt holds Deductible Gift Recipient (DGR) status with the ATO. All donations of $2 or more are fully tax-deductible …" | "Life Without Debt is applying for Deductible Gift Recipient (DGR) endorsement with the ATO. DGR is not yet in place. Until endorsement lands, donations are not tax-deductible. … This page will be updated the day endorsement takes effect." |
Fix set B — JSON-LD extension on 5 donor-facing pages
Each of the 5 pages received three <script type="application/ld+json"> blocks inserted immediately before </head>, matching the Session 8K pattern:
- NGO block — the LWD organisation card (name, URL, logo, description with RG 96 boundary framing,
areaServed: Australia,knowsAboutarray). - WebPage block — page-specific (name, description, URL,
inLanguage: en-AU,isPartOfthe WebSite,aboutthe NGO). - FAQPage block — three page-appropriate question/answer pairs each, all pre-DGR-safe, all RG 96-compliant. The
/donateFAQ explicitly states DGR endorsement is pending.
/about
Q&A cover: what LWD does · not a credit-repair company · founding purpose.
/donate
Q&A cover: how donation is used · DGR pending disclosure · RG 96 boundary.
/who-we-help
Q&A cover: eligibility · no fees · clinician letter workflow.
/apply
Q&A cover: what happens after applying · creditor contact consent · timeline.
/referrals
Q&A cover: how to refer · what the household needs to know · Medicare scope boundary.
Fix set C — Pre-DGR reframe across five public-indexable pages (Finding 4)
Mid-audit, a full-site grep for [ACNC Registration Pending], [DGR Endorsement Pending], DGR Item 1, and Registered with the Australian Charities found bald affirmative claims on five public-indexable pages beyond /donate. All instances were reframed to the consistent phrase pattern "[ACNC registration pending] · [DGR endorsement pending] · PBI endorsed", matching the pre-establishment discipline already in force on /room-c, /room-f, and the internal work-product surfaces. 13 edits total across 5 files:
| Page | Element | Before → After |
|---|---|---|
/ (index) |
evidence-strip × 2 | "[ACNC Registration Pending] Charity" → "[ACNC registration pending]" "[DGR Endorsement Pending] · Tax Deductible" → "[DGR endorsement pending]" |
/ (index) |
dgr-badge + footer | Reframed to "PBI endorsed · [ACNC registration pending] · [DGR endorsement pending]" |
/awareness |
Room D card body | "PBI and DGR status" → "proposed PBI and DGR endorsement (both pending)" |
/awareness |
trust-item | "Registered with ACNC. PBI. DGR Item 1 (tax-deductible donations)" → "[ACNC registration pending]. Proposed subtype: PBI. DGR Item 1 endorsement pending (until confirmed, no tax-deductibility claims are made)" |
/awareness |
footer | Reframed to "pending" pattern |
/apply |
dgr-badge + footer | Reframed to "PBI endorsed · [ACNC registration pending] · [DGR endorsement pending]" |
/about |
dgr-badge + footer | Reframed to "PBI endorsed · [ACNC registration pending] · [DGR endorsement pending]" |
/donate |
trust-pills + dgr-badge + footer | All affirmative claims reframed to "pending" pattern (in addition to the 7 Fix Set A edits) |
Why this matters: pre-DGR discipline requires that the public site never claim tax-deductibility, DGR endorsement, or ACNC registration as complete until each is legally in place. Fix Set C brings the entire donor-facing surface into alignment with the discipline that /room-c, /room-f, and /donate already carried, eliminating the risk of an ACCC or ACNC concern about misleading representations during the pre-establishment window.
5. Backlog — what's still open
| Item | Room / page | Priority | Owner | Trigger |
|---|---|---|---|---|
| Public room pages for D, E, G | /room-d · /room-e · /room-g |
Y2+ | CMO Agent + Laurence/Lisa/Corrina (YDT CMO) review | Activation triggers set in /kits/room-{d,e,g}: first aligned government tender · first bequest promise · first inbound international foundation warm intro. Kits are pre-authored; landing pages built when the first prospect in each room engages. |
| Visual assets for room heroes | All 7 rooms + /donate + /awareness |
medium | Pack 3 · Session 8P | To be sourced (Creative Commons via image_search) or generated (via image_generation) and returned as review-ready blocks. |
Unified /review page (approve/comment/reject wired for 5 humans) |
All artefact types | medium | Pack 4 · Session 8Q | Existing per-artefact pages already support approve; unified page consolidates the surface for the 5-human roster. |
| Sitemap.xml regeneration to include patched pages | Site-wide | low | Next hosting pass | Existing sitemap already lists these URLs; JSON-LD blocks are picked up on next crawl. No re-submit required unless the operator wants to accelerate. |
| hreflang tags for international audience | /, /room-g (when built) |
low | Room G activation | Australian-only site currently; adds when Room G goes live with international-diaspora messaging. |
6. Verification & smoke
- JSON-LD count: 3 blocks confirmed on each of
/about,/donate,/who-we-help,/apply,/referrals. - DGR reframe: zero unqualified "tax-deductible" affirmations remain on
/donate. All remaining occurrences are in FAQ-question titles or in explanations that DGR is pending. - RG 96 sweep: unchanged from Sessions 8D/8E/8H — no new breaches introduced by this session's edits.
- Build:
dist/_worker.jsunchanged at 154.18 kB (HTML-only edits).