🪐 For Kevin Clark · Dakar Foundation

The second brain
for your media nonprofit.

An Obsidian knowledge graph + Claude Code agent + Supabase backbone that captures every apprentice, every employer partner, every event, every sponsor — and a voice AI named Linna who talks about it. Built the way you asked for it.

—
Atomic notes
One concept, one file, wikilinked
Wikilinks
Cross-references between notes
—
Folder hubs
From Tracks to Sponsors
6
Tracks live
In Supabase + the vault
01 · The build

Six pieces. One brain.

Andrej Karpathy's "AI reads, summarizes, extracts relationships, builds the graph autonomously" — except instead of a personal journal, it's the entire operational map of Dakar Foundation.

1

Hubs + atomic notes

Your vault has six hub notes — Dakar Pathway, Cinema Basel West, Employer Partners, Sponsors, Academic Partners, Compliance — and one file per apprentice, employer, sponsor, event. One concept, one file.

2

Wikilinks instead of folders

Every note [[wiki-links]] to related notes. Andre Robinson's apprentice file links to [[Lighting & Grip]], [[LA City College]], and [[Dakar Pathway]]. Obsidian renders the relationships in Graph View.

3

Claude Code agent on the inbox

Drop emails, PDFs, or notes into 99-Inbox/. A Python harness running Claude Opus 4.7 reads each one, extracts entities (people, partners, events), writes atomic notes, and wikilinks them automatically.

4

Supabase as the structured spine

The same data lives in a Supabase Postgres — 11 tables for tracks, apprentices, employers, sponsors, equipment, events, placements, sponsor-track sponsorships, compliance items. Wikilinks become foreign keys.

5

Smart Connections + Dataview

The Smart Connections plugin generates embeddings on every note for semantic search. Dataview turns the vault into a queryable database — "show me every active apprentice in the AI in Media track" returns a live table.

6

Linna — the voice layer

A Vapi voice agent (Claude Haiku + ElevenLabs) trained on the entire vault. Students, employers, sponsors, and journalists can phone in and Linna routes them. Same knowledge, two surfaces.

02 · The graph view

Every note. Every link. Every relationship.

This is your vault's live graph. Drag a node. Hover for the excerpt. Watch clusters form around hubs — apprentices around tracks, tracks around the Dakar Pathway, partners around sponsors.

Drag to pan · scroll to zoom · hover a node for details · click to highlight links
03 · The folder structure

Numbered folders. Predictable paths.

Obsidian's lightest convention — numbered top-level folders so the index reads itself.

04 · Sample notes

YAML frontmatter + body + wikilinks.

Click a note to see its raw markdown — that's what the agent reads, that's what Smart Connections embeds, that's what Dataview queries.

Pick a note on the left to view its raw markdown →
05 · The Claude agent loop

How new information becomes structured knowledge.

Drop a CSV of new sponsor leads, a PDF of a partnership agreement, or a forwarded email into 99-Inbox/. The rest happens by itself.

📥
Inbox
Email, PDF, voice memo, screenshot — drop it into 99-Inbox/
→
🤖
Claude reads
Opus 4.7 extracts people, partners, events, dates, ask types
→
📝
Atomic notes
One file per entity, YAML frontmatter, wikilinked to hubs
→
🕸️
Graph updates
Obsidian Graph View re-clusters · Smart Connections re-embeds
→
🗄️
Supabase synced
Structured rows posted via service_role · Linna picks them up
06 · The stack

Three layers. Zero lock-in.

Your data lives in plain markdown + plain Postgres. Anything we build on top is replaceable. You're not renting your knowledge.

📚

Knowledge layer

Obsidian vault — plain markdown files on your filesystem. Wikilinks, YAML frontmatter, atomic notes. Open it in any text editor, sync it to iCloud, version it in Git.

ObsidianSmart ConnectionsDataviewCanvas
🤖

Agent layer

Claude Code + Claude Opus 4.7 running locally. Reads the inbox, extracts entities, writes notes, wikilinks them, archives sources. One Python harness. Configurable in plain markdown.

Claude Opus 4.7Claude CodePython
🗄️

Structured layer

Supabase Postgres — 11 tables modeling the entire Dakar operation. Public read on academic partners + events. Service-role for staff CRUD. Foreign keys mirror the wikilinks.

SupabasePostgresPostgRESTpgvector
🎙️

Voice layer

Linna — a Vapi-powered voice agent with Grace's voice clone. Routes students, employers, sponsors, journalists. Available 24/7 from any phone or browser.

VapiClaude HaikuElevenLabsDeepgram
🌐

Marketing layer

Your existing dakarpathway.lovable.app stays in place. This tour deploys alongside it. Plug into your CRM, your email, your social — without re-architecting anything.

LovableVercelResend
🔐

Compliance layer

DOL + CA DAS audit-ready exports out of Supabase. Apprentice rosters, hours logged, employer placements, certifications — queryable in plain SQL when the auditor calls.

DOLCA DASLA CountyCOYA

Kevin — this is yours.

The vault, the agent, the Supabase, the voice layer — all wired and running. Next move is a 30-minute call to walk you through running it locally, dropping your first real email into the inbox, and watching it become structured knowledge.