← Back to projects
LSN Hub
ActiveFrom CSV Time Tracker to Full Newsroom Operations Platform
Internal operations hub for Los Santos News — AI content generation with Claude, browser-based video-to-GIF via FFmpeg.wasm, guided story building workflow, 4-tier employee lifecycle management, Discord bot with credential delivery, and shift analytics. 15 Vercel serverless endpoints, 20+ migrations, PostgreSQL RLS, and dual-environment deployment.
ReactViteSupabaseClaude APIFFmpeg.wasmTailwind CSS
Dashboard — 6 tools, one newsroom. Select a module to start working.
100%
👤
LSN Staff
Logs in with email/pass
⚡
Vite + React
SPA with hash routing
🔐
Supabase Auth
JWT, 24h TTL
🛡️
Row-Level Security
4-tier role enforcement
🗄️
PostgreSQL
Roster + shifts + profiles
📄
CSV Parser
Dual-format, encoding fallback
⏰
Shift Builder
Pair events + flag anomalies
📊
Analytics
Recharts, 7d-90d ranges
Phase 0•Core Platform•Tap a node for details
Key component
Infrastructure
Data flow
Core Platform
Phase 0
The foundation — Supabase Auth with JWT (24h TTL), PostgreSQL Row-Level Security enforcing a 4-tier role hierarchy (Admin > Editor > Creator > Viewer), employee roster with Steam ID matching, and CSV-based shift analytics with anomaly detection.
What Ships
Impact
LSN staff have secure, role-isolated access to shift data and employee records. Multi-tenancy is structurally enforced at the database level — data leaks are impossible by design.
Capability Comparison
| Phase 0: Core Platform | Phase 1: Content Engine | Phase 2: Production Bay | Phase 3: Admin & Discord | Phase 4: Voice Rewrite | Level 1: Basic RAG | Level 2: Multi-Source RAG | Level 3: Hybrid + Feedback RAG | Level 4: Agentic RAG | |
|---|---|---|---|---|---|---|---|---|---|
| Tools Available | Roster + Time Tracker | + Content Tools + Field Kit + Library | + Story Builder + Edit Bay (Video Clipper) | + Admin Panel + Discord Bot | + Voice rewrite | + pgvector RAG | + Knowledge docs | + Story arcs + Locations | + AI query planning |
| API Endpoints | 0 (client-only) | 4 (generate, fieldkit, image, audit) | 4 (same — new tools are client-side) | 15 (+8 admin + Discord interactions) | 15 (same) | 16 (+embed) | 17 (+chunk) | 18 (+arcs) | 19 (+quality gate) |
| AI Integration | None | Claude API (dual output) | Claude API (via Story Builder) | Claude API + Discord bot responses | Claude + voice rules | + vector similarity | + multi-source RAG | + hybrid search + feedback | + agentic retrieval |
| Auth & Security | Supabase Auth + RLS | Same + rate limiting | Same + audit relay | Same + Ed25519 + immutable audit log | Same | Same + embed key | Same | Same | Same |
| Content Types | Shift data only | Articles, posts, field reports | + GIFs, overlays, media | + User profiles, credentials | Same | Same | + Knowledge chunks | + Story arcs | + Quality scores |
| Migrations | 001-008 | 009-014 | 015-016 | 017-020 | 020 (same) | 021 | 022-023 | 024-025 | 026 |
| Discord | None | None | None | Bot + slash commands + credential threads | Same | Same | Same | Same | Same |
| Data Sources | — | — | — | — | 0 (prompt only) | 2 (Library + Roster) | 4+ (+ Knowledge + Lore) | 6+ (+ Locations + Arcs) | 6+ (AI-selected) |
| Search Type | — | — | — | — | None | Vector similarity | Vector similarity | Hybrid (vector + keyword) | Agentic (AI-driven) |
| RAG Learning | — | — | — | — | Static | Static | Static | Feedback loop | Self-evaluation |
| Token Budget | — | — | — | — | +~200 | +~800-1200 | +~1000-1500 | +~1200-1800 | +~2000-3000 |
| Latency Impact | — | — | — | — | +0ms | +250-500ms | +300-600ms | +400-800ms | +1-3s |