New Capability: Structured Data Knowledge Graph + Obsidian Vault

New Capability: Structured Data Knowledge Graph + Obsidian Vault

Date: April 1, 2026 Origin: Chris couldn't find the "Value-First Delivery Manifesto" article through site search. Investigation revealed a broken GROQ search query AND the absence of machine-readable structured data. George B. Thomas (Sidekick Strategies) shared his SuperSchema.ai-inspired implementation as a reference. Chris requested equivalent capability built natively into the Value-First website. Impact: Every page on valuefirstteam.com now declares its identity to AI systems (Google, ChatGPT, Perplexity) through JSON-LD structured data with entity linking. A companion Obsidian vault provides Chris with a human-browsable knowledge graph of the entire Value-First methodology.


What Was Built

1. Website Search Fix

The site search (/api/search.ts) had a GROQ query construction bug: multi-word searches used && between match terms inside an array (["Value*" && "First*" && "Delivery*" && "Manifesto*"]). In GROQ, && between strings evaluates to the last truthy value, so every multi-word search effectively only matched the last word. Fixed by changing && to commas, which gives proper AND matching in GROQ arrays.

2. JSON-LD Schema Knowledge Graph (Machine-Facing)

A schema factory system that generates Schema.org JSON-LD structured data for every content type on the website. Key architectural decisions:

  • Canonical entity definitions (src/lib/schema/entities.ts): Chris Carolan (/#founder) and Value-First Team (/#organization) have permanent @id URIs. Every piece of content on the site links back to these same entities.
  • Schema builders (src/lib/schema/builders.ts): Factory functions for 11 content types — Article, Episode (VideoObject + PodcastEpisode), Show (PodcastSeries), Contributor (Person), Course, Event, Trap, FAQ, Breadcrumb, Service.
  • Global injection: Organization + WebSite schema rendered on every page via BaseLayout (was homepage-only). No manual step when publishing new content — templates auto-generate schema at render time.

The entity graph creates a connected web that AI systems traverse:

Article --author--> /#founder (Chris Carolan)
Article --publisher--> /#organization (Value-First Team)
Episode --actor--> /#founder
Episode --partOfSeries--> /media/shows/{slug}#show
Show --productionCompany--> /#organization
/#organization --founder--> /#founder
/#founder --worksFor--> /#organization

This replaces per-credit schema generation tools (like SuperSchema.ai) with zero-maintenance, automatic structured data.

3. Obsidian Knowledge Vault (Human-Facing)

A complete Obsidian vault at /mnt/d/Obsidian/value-first/ with 58 interlinked notes covering:

  • Core Beliefs (6 notes): Five Core Beliefs index + each belief individually
  • Value Path (9 notes): The Value Path index + all 8 stages
  • 12 Traps (13 notes): Index + each trap with belief violations and Value Path impact
  • Unified Views (5 notes): Four Views index + each view
  • Three Orgs (4 notes): Three-Org Model + each org
  • Shows (6 notes): Media Network + active shows
  • People (7 notes): Chris, V, Sage, Pax, Ryan, Casey, Nico
  • Organizations (8 notes): Team, AI Leadership, Collective, Academy, programs, key content

Every note uses [[wiki-links]] to create connections. Graph view is color-coded by group (teal=beliefs, cyan=path, red=traps, purple=views, orange=orgs, blue=shows, yellow=people). Tron:Ares dark CSS theme applied.

Infrastructure Changes

Change Before After
Site search Only matched last word of multi-word queries Proper AND matching across all words
Organization schema Homepage only Every page
Content schema Basic Article + Video + Course (3 types) 11 content types with @id entity linking
Human knowledge graph None 58-note Obsidian vault at D:\Obsidian\value-first\

Implementation

File Purpose
apps/website/src/lib/schema/entities.ts Canonical @id definitions (Organization, Founder, WebSite)
apps/website/src/lib/schema/builders.ts 11 schema factory functions
apps/website/src/lib/schema/index.ts Barrel export
apps/website/src/components/seo/SchemaScript.astro Renders JSON-LD <script> tags from schema objects
apps/website/src/layouts/BaseLayout.astro Global schema injection
apps/website/src/pages/api/search.ts Fixed GROQ && to , on line 160
apps/website/src/pages/media/articles/[slug].astro Article + Breadcrumb schema
apps/website/src/pages/media/episodes/[slug].astro Episode + Breadcrumb schema
apps/website/src/pages/media/shows/[slug].astro Show + Breadcrumb schema
apps/website/src/pages/collective/practitioners/[slug].astro Contributor + Breadcrumb schema
apps/website/src/pages/what-we-solve/traps/[slug].astro Trap + Breadcrumb schema
apps/website/src/pages/events/[slug].astro Event + Breadcrumb schema
apps/website/src/pages/academy/index.astro Course schema (updated to new builder)
apps/website/src/pages/index.astro Removed old OrganizationSchema (now global)
/mnt/d/Obsidian/value-first/ 58-note Obsidian vault

Usage

Schema (automatic — no manual action needed)

Every published article, episode, show, event, trap, and contributor profile automatically generates full JSON-LD schema. To verify:

# Check schema on any page (look for application/ld+json script tags)
curl -s https://www.valuefirstteam.com/media/articles/value-first-delivery-manifesto-building-capability-rather-than-dependency | grep "application/ld+json" | wc -l

Adding schema to a new page type

// In any Astro page
import SchemaScript from '@/components/seo/SchemaScript.astro';
import { buildArticleSchema, buildBreadcrumbSchema } from '@/lib/schema';

// In template
<SchemaScript schema={[
  buildArticleSchema({ title, description, slug, ... }),
  buildBreadcrumbSchema({ items: [...] }),
]} />

Obsidian vault

Open Obsidian > "Open folder as vault" > D:\Obsidian\value-first\. Press Ctrl+G for the full graph view.


Leader Applications

V (Operations)

  • Content coverage analysis: The Obsidian graph view reveals which methodology concepts have thin content coverage (few links from Shows/People to a concept = content gap). This informs /content-multiply and /show-prep decisions.
  • Schema maintenance: When new content types are added (e.g., playbook pages, service pages), the builder pattern makes adding schema a 10-line addition to builders.ts + 5-line addition to the page template.
  • SEO/AEO monitoring: Can verify schema markup is rendering correctly across all page types.

Sage (Customer)

  • Session preparation: The Obsidian vault can be used during /meeting-prep to quickly see how a client's challenges connect to specific traps, beliefs, and methodology concepts.
  • Signal recognition: Understanding which traps a client's language maps to is core to Sage's relationship intelligence. The vault's trap-to-belief-to-path linking makes these connections explicit.

Pax (Finance)

  • No direct application. The structured data improves discoverability (potentially driving new relationships through AEO/GEO), but Pax doesn't interact with schema or Obsidian directly.

Dependencies

Dependency Status Notes
Obsidian app Requires installation Free download from obsidian.md
Sanity CMS Confirmed Schema data comes from Sanity at render time
Vercel deployment Confirmed Schema renders server-side on Vercel
Astro 5 Confirmed SchemaScript.astro uses Astro component syntax

Verification

Search fix

Search "Value First Delivery Manifesto" on the website. The article should now appear in results.

Schema

View source on any article page. Look for <script type="application/ld+json"> blocks. Should see Organization, WebSite, Article, and BreadcrumbList schemas with @id linking.

Obsidian

Open vault in Obsidian. Press Ctrl+G. Should see 58 nodes with color-coded groups and dense interconnections.


Commit: bee05b9f — "Add structured data knowledge graph + fix multi-word search" Git reference: Pushed to main April 1, 2026