# Feature: Live AI (Faktoid-oppslag & Referent) **Filsti:** `docs/features/live_ai.md` ## 1. Konsept AI-drevet analyse av sanntids transkripsjon. Opererer i to moduser med samme underliggende pipeline (Whisper → NER → handling), men ulik output. ## 2. Studio-modus: Faktoid-oppslag Brukes i Studioet (se `docs/concepts/studioet.md`). En "virtuell co-host" som dytter relevante faktoider til programlederne i sanntid. ### 2.1 Dataflyt 1. Live transkripsjon (se `docs/features/live_transkripsjon.md`) leverer tekst-chunks. 2. Rust-tjenesten analyserer for egennavn (Named Entity Recognition). 3. Lynraskt oppslag i PostgreSQL: `SELECT * FROM factoids JOIN actors... WHERE actor.name = $1`. 4. Treff dytter `LiveFactoidEvent` inn i SpacetimeDB. 5. SvelteKit-studio viser faktoiden lydløst i en egen boks. ### 2.2 Lagring Live-transkripsjonsloggen er flyktig (TTL 30 dager): ```sql live_transcription_log ( id SERIAL, session_id UUID, chunk_timestamp TIMESTAMPTZ, chunk_text TEXT, matched_entities TEXT[], pushed_factoids UUID[], created_at TIMESTAMPTZ DEFAULT now() ) ``` En nattlig jobbkø-jobb sletter rader eldre enn TTL. ## 3. Møte-modus: AI-Referent Brukes i Møterommet (se `docs/concepts/møterommet.md`). Genererer referat og action points. ### 3.1 Dataflyt 1. **Under møtet:** Whisper transkriberer i chunks. Aha-markører fra deltakerne lagres med tidsstempler. 2. **Ved møteslutt:** En `meeting_summarize`-jobb opprettes i jobbkøen (se `docs/infra/jobbkø.md`). 3. Rust-worker sender transkripsjonen + Aha-markører til AI Gateway (`sidelinja/rutine`) med instruksjon om å generere: * Referat (strukturert Markdown) * Action points (foreslåtte Kanban-kort) * Identifiserte `#Temaer` og `@Aktører` 4. Referatet lagres som melding i relevant Tema-chat. Foreslåtte Kanban-kort vises for godkjenning. 5. `graph_edges` opprettes automatisk mellom møtesegmenter og identifiserte Temaer/Aktører. ### 3.2 Off-the-record Når off-the-record er aktivt, stopper Whisper-strømmen og ingen data lagres. Visuell indikator i alle deltakeres grensesnitt. Transkripsjonen får et gap i tidslinja. ## 4. Kill Switch Studio-modus har en **kill switch** — en synlig "Stopp AI"-knapp i studio-grensesnittet som umiddelbart: 1. Stopper NER-analyse av nye chunks 2. Skjuler faktoid-boksen 3. Logger tidspunkt og grunn (manuelt felt, valgfritt) Nødvendig fordi AI-en kan dytte feil eller irrelevante faktoider under live innspilling. Programlederen må kunne slå den av uten å forlate studio-viewet. Kill switch-status (`ai_enabled: bool`) lagres på LiveKit-rommet i SpacetimeDB og synkes til alle klienter i rommet. ## 5. Instruks for Claude Code * Begge moduser deler samme Whisper-pipeline — ikke dupliser transkripsjonskode. * Studio-modus krever lav latens — hold NER-oppslaget raskt (indekserte spørringer). * Møte-modus er asynkron — prosessér via jobbkøen etter møteslutt. * All AI-kode peker på `http://ai-gateway:4000/v1`, aldri direkte til leverandør. * Kill switch skal alltid være tilgjengelig i studio-modus — default: AI aktivert. * Alt er workspace-scopet.