Goal: A static, modern portal that can browse/search KB content without requiring a backend.
Portal v2 is a set of HTML pages under portal/v2/ that load pre-built JSON indexes from portal/v2/data/.
Those JSON files are generated from canonical sources in the repo (podcasts, interviews, website scrape export).
portal/v2/index.html — dashboardportal/v2/knowledge_base.html — unified search UIportal/v2/podcast_explorer.html — episode browser + detail viewportal/v2/governance.html — links into governance docsportal/v2/training.html — links into training docsportal/v2/styles/theme.css — tokensportal/v2/styles/components.css — UI componentsportal/v2/styles/utilities.css — layout helpersportal/v2/styles/animations.css — minimal animationsportal/v2/components/nav.js — top navigation + language toggleportal/v2/components/language_toggle.js — FR/EN toggle (localStorage)portal/v2/components/search.js — simple client-side search/rankingportal/v2/components/card.js — card renderer helperportal/v2/data/unified_index.jsonportal/v2/data/podcasts_index.jsonportal/v2/data/interviews_index.jsonportal/v2/data/website_index.jsonflowchart TD
podcasts[Podcasts corpus] --> ingestPod[ingest_podcast_kb.py]
interviews[Interviews corpus] --> ingestInt[ingest_interviews_kb.py]
websiteExport[Website export] --> ingestWeb[ingest_website_content.py]
ingestPod --> kbPod[kb/podcasts/index.json]
ingestInt --> kbInt[kb/interviews/index.json]
ingestWeb --> kbWeb[kb/website/index.json]
kbPod --> unified[build_unified_kb_index.py]
kbInt --> unified
kbWeb --> unified
unified --> portalData[portal/v2/data/*.json]
portalData --> portalUI[Portal v2 pages]