Source: data_layer/docs/ARCHITECTURE_VISUAL.md
Multi-Database Architecture - Visual Guide
System Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β JSONL Seed Files β
β (Source of Truth) β
β β
β βββ seeds/ β
β β βββ ufc.json β
β β βββ f1.json β
β β βββ ... β
β βββ seed.examples-kb/data/ β
β βββ triage.jsonl β
β βββ contract_generation.jsonl β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
seed_supabase_multi_db.py
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Supabase PostgreSQL (Primary DB) β
β REQUIRED β
β
β β
β Tables: β
β βββ sport_archetypes (5 master categories) β
β βββ prospective_leagues (all leagues + sync tracking) β
β βββ few_shot_examples (AI examples) β
β β
β Features: β
β βββ Fast queries (indexed) β
β βββ Sync status tracking β
β βββ Embedding storage (JSONB) β
β βββ ACID transactions β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
βββββββββββββββββββ βββββββββββββββββββ
β Neo4j Graph β β Pinecone Vector β
β OPTIONAL β β OPTIONAL β
β β β β β β
βββββββββββββββββββ βββββββββββββββββββ
β β
βββββββββββββββββββ βββββββββββββββββββ
β Graph Relations β β Semantic Search β
β β β β
β Nodes: β β Indexes: β
β β’ SportArchetypeβ β β’ altsports- β
β β’ League β β leagues β
β β β β’ altsports- β
β Relationships: β β examples β
β β’ BELONGS_TO_ β β β
β ARCHETYPE β β Features: β
β β β β’ Vector search β
β Features: β β β’ Similarity β
β β’ Pattern β β β’ Top-K results β
β discovery β β β
β β’ Archetype β β β
β navigation β β β
βββββββββββββββββββ βββββββββββββββββββSport Archetype System
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 5 Master Sport Archetypes β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β β
ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββββββββββ
β Racing β β Combat β β Team β βPrecisionβ β Large β
β β β β β Sport β β β β Field β
ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββββββββββ
β β β β β
ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββββββββββ
β F1 β β UFC β β Soccer β β Golf β βMarathonβ
β NASCAR β β Boxing β βBasketballβ βArchery β βTriathlonβ
β Horse β βMuay Thaiβ β Hockey β β Darts β βCycling β
β Racing β βWrestlingβ βVolleyballβ βShootingβ β Ski β
ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββββββββββData Flow
Seeding Flow
1. Read JSONL βββ 2. Generate Embedding βββ 3. Upsert Supabase
β
OpenAI API
(text-embedding-3-small)
1536d
β
β
βββββββββββββββββββββββ΄ββββββββββββββββββββββ
β β
4. Sync to Neo4j 5. Sync to Pinecone
β β
CREATE (l:League) index.upsert(vector)
CREATE (a:SportArchetype) with metadata
MERGE (l)-[:BELONGS_TO]->(a) in namespace
β β
β β
6. Update Supabase sync status
neo4j_sync_status = 'synced'
pinecone_sync_status = 'synced'Query Flow
User Query: "Find high-speed racing leagues"
β
1. Generate embedding
β
OpenAI API
β
β
βββββββββββββββββ΄ββββββββββββββββ
β β
2. Vector Search 3. OR Direct Query
(Pinecone) (Supabase)
β β
Return league_tags Return leagues
β β
β β
4. Get full data from Supabase
WHERE league_tag IN (...)
β
β
5. (Optional) Get graph relationships
(Neo4j)
β
MATCH (l)-[:BELONGS_TO_ARCHETYPE]->(a)
MATCH (sibling)-[:BELONGS_TO_ARCHETYPE]->(a)
β
β
6. Return results to userDatabase Sync Tracking
Supabase League Record:
βββββββββββββββββββββββββββββββββββββββββββββββ
β league_tag: "ufc" β
β league_name: "Ultimate Fighting Championshipβ
β sport_archetype: "combat" β
β β
β Neo4j Sync: β
β βββ neo4j_node_id: "abc123" β
β βββ neo4j_sync_status: "synced" β
β βββ neo4j_synced_at: "2025-10-10T..." β
β β
β Pinecone Sync: β
β βββ pinecone_id: "ufc" β
β βββ pinecone_namespace: "default" β
β βββ pinecone_sync_status: "synced" β
β βββ pinecone_synced_at: "2025-10-10T..." β
β β
β Embedding: β
β βββ embedding_vector: [0.123, -0.456, ...] β
β βββ embedding_model: "text-embedding-3-smallβ
β βββ embedding_updated_at: "2025-10-10T..." β
βββββββββββββββββββββββββββββββββββββββββββββββGraceful Degradation
Full System (All DBs Available):
ββββββββββββ
β Supabase β β
Required
ββββββββββββ
β
ββββββββββββ
β Neo4j β β
Available β Graph features enabled
ββββββββββββ
β
ββββββββββββ
β Pinecone β β
Available β Semantic search enabled
ββββββββββββ
β
ββββββββββββ
β OpenAI β β
Available β Embeddings generated
ββββββββββββ
Degraded System (Supabase Only):
ββββββββββββ
β Supabase β β
Required
ββββββββββββ
β
ββββββββββββ
β Neo4j β β οΈ Not available β Graph features disabled
ββββββββββββ
β
ββββββββββββ
β Pinecone β β οΈ Not available β Semantic search disabled
ββββββββββββ
β
ββββββββββββ
β OpenAI β β οΈ Not available β No embeddings generated
ββββββββββββ
System still works! Just with reduced features.File Organization
database/
βββ π Documentation
β βββ QUICKSTART_SUPABASE.md β Start here!
β βββ SETUP_STATUS.md π Status report
β βββ SUPABASE_IMPLEMENTATION_SUMMARY.md
β βββ COMPLETION_SUMMARY.md
β βββ ARCHITECTURE_VISUAL.md π This file
β βββ INDEX.md πΊοΈ Navigation
β
βββ π§ Scripts
β βββ seed_supabase_multi_db.py β Unified seeding
β βββ validate_supabase_multi_db.py β Validation
β βββ seed.examples.py π Examples
β
βββ π¦ Seeds
β βββ seeds/ π± League JSON files
β βββ seed.examples-kb/data/ π JSONL examples
β
βββ π Schemas
βββ schemas/models/neo4j/ πΈοΈ Graph schema
βββ (SQL in QUICKSTART) ποΈ Supabase tablesCommand Flow
βββββββββββββββββββββββββββββββββββββββ
β 1. Validate Setup β
β β
β $ python scripts/ β
β validate_supabase_multi_db.py β
β β
β Checks: β
β β
Environment variables β
β β
Database connections β
β β
Seed files β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β 2. Seed Archetypes (Required) β
β β
β $ python scripts/ β
β seed_supabase_multi_db.py β
β --archetypes β
β β
β Creates: β
β β¨ 5 sport archetype records β
β β¨ Neo4j archetype nodes β
β β¨ Pinecone archetype vectors β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β 3. Seed Leagues (Optional) β
β β
β $ python scripts/ β
β seed_supabase_multi_db.py β
β --leagues β
β β
β For each league JSON: β
β β¨ Insert to Supabase β
β β¨ Create Neo4j node β
β β¨ Link to archetype β
β β¨ Add to Pinecone β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β 4. Seed Examples (Optional) β
β β
β $ python scripts/ β
β seed_supabase_multi_db.py β
β --examples β
β β
β For each JSONL line: β
β β¨ Insert to Supabase β
β β¨ Add to Pinecone (by category) β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β 5. Query & Use β
β β
β Python: β
β >>> from supabase import β
β create_client β
β >>> supabase.table(...).select() β
β β
β SQL (Supabase dashboard): β
β SELECT * FROM prospective_leagues β
β WHERE sport_archetype = 'combat' β
βββββββββββββββββββββββββββββββββββββββEnvironment Setup
.env file:
βββββββββββββββββββββββββββββββββββββββ
β Required: β
β SUPABASE_URL=postgresql://... β
β SUPABASE_API_KEY=eyJhbGci... β
β β
β Optional (for embeddings): β
β OPENAI_API_KEY=sk-... β
β β
β Optional (for graph): β
β NEO4J_URI=bolt://localhost:7687 β
β NEO4J_USERNAME=neo4j β
β NEO4J_PASSWORD=... β
β β
β Optional (for vectors): β
β PINECONE_API_KEY=... β
βββββββββββββββββββββββββββββββββββββββQuick Start: See QUICKSTART_SUPABASE.md
Full Index: See INDEX.md
Status: β Production Ready