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@idURIs. 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-multiplyand/show-prepdecisions. - 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-prepto 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