Skip to content

Site gaps 1/6: honest case studies, legacy redirects, one Organization schema, sameAs cleanup - #1006

Open
digeratiexperts wants to merge 1 commit into
mainfrom
grok/site-quick-wins-20261111
Open

digeratiexperts wants to merge 1 commit into
mainfrom
grok/site-quick-wins-20261111

Conversation

@digeratiexperts

Copy link
Copy Markdown
Owner

Summary

Quick wins from the 2026-11-11 site-gaps research, approved by Joe ("do it, approved ... fix all the GAPS"). First of a stack; the full plan is in docs/plans/SITE-GAPS-ROADMAP-20261111.md (added here).

  • Case studies, honest by default: /resources/case-studies lists only published stories. With none published it says so and links to industries, the Client Bill of Rights and the sample assessment report. The sample shells stay in caseStudies.ts as a template. An unknown slug is noindex.
  • Redirects: /about → /about/mission-values, /services → /solutions, /proactive-ecosystem-pricing → /pricing (301 on the server, query kept; <Redirect> in the SPA). Internal links now point at /pricing, and pricing's canonical is /pricing. /ecosystem-pricing stays: it's a separate service-matrix page.
  • One Organization entity: shared/organizationSchema.ts builds a single ITService/ProfessionalService JSON-LD (@id /#organization, hours, founder, offer catalog). The server injects it into every found page's shell; the hand-written block in index.html is gone, and the client JSON-LD references the same @id.
  • sameAs cleanup: the LinkedIn company page (404) and Instagram (no account) are removed from PUBLIC_SOCIAL_LINKS; x.com/DigeratiExperts (verified live) is added, with an X icon in the footer.
  • Hero on task: the pronunciation widget moved to About → Mission & Values ("Say it like we do"). The hero card now links to the sample report and is labelled "Sample report".
  • FAQ rich results: the homepage FAQ emits FAQPage JSON-LD from the same questions it renders.
  • Claim mirror added to .ai/ACTIVE_WORK.yaml (site-gaps-20261111).

Agent governance

Completion report

  1. What changed: see Summary.
  2. Why: the research found sample case studies presented as real, duplicate and broken Organization schema with dead social links, three legacy URLs without redirects, and a hero that spent its space on pronunciation.
  3. Files changed: see the diff. New files: server/marketingRedirects.ts (+ test), shared/organizationSchema.ts, server/organizationSchema.test.ts, and docs/plans/SITE-GAPS-ROADMAP-20261111.md.
  4. Functionality preserved: the pronunciation card is unchanged and still works, now on Mission & Values. The sample case-study data is kept. /ecosystem-pricing is kept. The phone number is untouched.
  5. Tests performed:
    • tsc passed.
    • vitest: the full run was slow under laptop load, and 25 files timed out (5 s timeouts, a Playwright goto). The non-visual timed-out files passed on a re-run with a longer timeout (6 files, 24/24). The two *.visual.test.ts files need a dev server at a fixed URL and were not re-run.
    • npm run build passed.
    • Against the production build on :3300: check:route-meta passed (118 routes), and smoke:public passed. The smoke now waits for link-hero-sample-report instead of the moved pronunciation button.
  6. Browser verification: smoke:public renders the homepage at 390, 768 and 1440 and checks for overflow. No manual screenshots.
  7. Remaining issues: none known.
  8. Human inputs still required: working LinkedIn, Instagram and Facebook URLs, so they can be added back to sameAs.

CONCURRENCY AUDIT

CONCURRENCY AUDIT
Branch base: db78962a (origin/main at start)
Current origin/main: checked at push
Commits landed on main since branch creation: checked at push (see comment if any)
Overlapping files:
- none with open PRs #997/#996/#992/#991
Overlapping active-agent claims:
- none on these files in .ai/ACTIVE_WORK.yaml
Reconciliation performed:
- n/a
Newer-main work preserved:
YES
Whole-file replacements reviewed:
YES (no whole-file replacements)
Tests:
tsc pass; vitest: load timeouts only, re-run passes; build pass; check:route-meta pass; smoke:public pass
Visual QA:
390: smoke:public render + overflow check
768: smoke:public render + overflow check
1440: smoke:public render + overflow check
Before/after evidence:
N/A
Screenshots captured:
YES (smoke script, tmp/public-visual-smoke, local only)
Production impact:
None until merged and deployed. Server adds 301s for /about, /services, /proactive-ecosystem-pricing.

Release state

  • PR state: IMPLEMENTED
  • Production state: NOT DEPLOYED
  • Expected release SHA / identifier: this PR's merge commit
  • Production verification evidence: none yet

Stacked on top of this one: PR2 (raw-HTML prerender), PR4 (reviews), PR5 (homepage restructure, draft). PR3 (Help Desk + Switching pages) is off main.

…n schema, sameAs cleanup, hero on task

Joe approved 2026-11-11. Plan: docs/plans/SITE-GAPS-ROADMAP-20261111.md. Relay: Intelligence-Hub #886.
const sameAs = buildOrganizationSchema().sameAs as string[];
expect(sameAs).toContain("https://x.com/DigeratiExperts");
// 2026-11-11: LinkedIn company URL 404s and the Instagram handle has no account.
expect(sameAs.some((u) => u.includes("linkedin.com"))).toBe(false);
expect(sameAs).toContain("https://x.com/DigeratiExperts");
// 2026-11-11: LinkedIn company URL 404s and the Instagram handle has no account.
expect(sameAs.some((u) => u.includes("linkedin.com"))).toBe(false);
expect(sameAs.some((u) => u.includes("instagram.com"))).toBe(false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants