{ "total": 100, "created": "2026-05-25T15:51:25.967554+00:00", "tickets": [ { "id": "F-001", "epic": "Films", "title": "ElevenLabs voices live i /api/films/voices", "api": "/api/films/voices", "stack": "Node.js", "priority": "P0", "effort": "2h", "desc": "L\u00e4gg ELEVENLABS_API_KEY i amos-core service env, testa 30+ r\u00f6ster returneras", "status": "blocked_external" }, { "id": "F-002", "epic": "Films", "title": "TTS pipeline: scen-narration \u2192 ElevenLabs audio \u2192 S3", "api": "/api/films/projects/:id/tts", "stack": "Node.js+EL", "priority": "P0", "effort": "4h", "desc": "Varje scens narration-text \u2192 EL TTS \u2192 audio URL sparas i film_scenes.audio_url", "status": "done" }, { "id": "F-003", "epic": "Films", "title": "AI clip matching: scen-keywords \u2192 video URL", "api": "/api/films/projects/:id/scenes/:id/match-clip", "stack": "Python+Vector", "priority": "P1", "effort": "6h", "desc": "Semantisk matchning av scen-keywords mot media library via Qdrant", "status": "done" }, { "id": "F-004", "epic": "Films", "title": "AI bakgrundsmusik per scen (stil/emotion)", "api": "/api/films/projects/:id/music", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Generera musik via AAMOS music_generate baserat p\u00e5 scen-emotion", "status": "done" }, { "id": "F-005", "epic": "Films", "title": "Film rendering pipeline (ffmpeg worker)", "api": "/api/films/projects/:id/render", "stack": "Python+ffmpeg", "priority": "P1", "effort": "8h", "desc": "Systemd worker: scener + audio + klipp \u2192 slutvideo via ffmpeg", "status": "done" }, { "id": "F-006", "epic": "Films", "title": "Film preview player endpoint", "api": "/api/films/projects/:id/preview", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "Returnera preview-manifest (HLS/MP4 URL) f\u00f6r film-projektet", "status": "done" }, { "id": "F-007", "epic": "Films", "title": "Character DNA builder med AI", "api": "/api/films/characters/:id/dna", "stack": "Node.js+AI", "priority": "P2", "effort": "4h", "desc": "AI genererar karakt\u00e4rsprofil (bakgrund, motivation, voice style) fr\u00e5n namn+roll", "status": "done" }, { "id": "F-008", "epic": "Films", "title": "Continuity Monitor v2 (AI-driven)", "api": "/api/films/projects/:id/continuity", "stack": "Node.js+Claude", "priority": "P2", "effort": "5h", "desc": "Djup AI-analys av scenkonsekvens: ljus, kostym, tid, karakt\u00e4rsutveckling", "status": "done" }, { "id": "F-009", "epic": "Films", "title": "Branding preset per film (font, mood, colors)", "api": "/api/films/projects/:id/branding", "stack": "Node.js", "priority": "P2", "effort": "2h", "desc": "Spara och h\u00e4mta branding-config (font, mood preset, f\u00e4rgpalett)", "status": "done" }, { "id": "F-010", "epic": "Films", "title": "Script streaming via SSE (real-time AI)", "api": "/api/films/script/stream", "stack": "Node.js+SSE", "priority": "P1", "effort": "3h", "desc": "Server-Sent Events f\u00f6r streaming manusgeneration via AMOS AI", "status": "done" }, { "id": "F-011", "epic": "Films", "title": "Scene reorder + manual edit API", "api": "/api/films/projects/:id/scenes/:id", "stack": "Node.js", "priority": "P2", "effort": "2h", "desc": "PATCH endpoint f\u00f6r att redigera scen, PATCH f\u00f6r reorder", "status": "done" }, { "id": "F-012", "epic": "Films", "title": "Intro + varning generator", "api": "/api/films/projects/:id/intro", "stack": "Node.js+AI", "priority": "P2", "effort": "3h", "desc": "AI genererar intro-sekvens (15 sek) + k\u00e4nslighetvarning baserat p\u00e5 inneh\u00e5ll", "status": "done" }, { "id": "F-013", "epic": "Films", "title": "Supabase \u2192 AMOS DB migration f\u00f6r films", "api": "-", "stack": "SQL", "priority": "P0", "effort": "2h", "desc": "Migrera Supabase-schema (projects, scenes, characters) till AMOS PostgreSQL. \u2705 Gjort", "status": "done" }, { "id": "F-014", "epic": "Films", "title": "Voice recorder + upload API", "api": "/api/films/characters/:id/voice", "stack": "Node.js", "priority": "P2", "effort": "3h", "desc": "Upload audio recording \u2192 spara som character voice sample", "status": "done" }, { "id": "F-015", "epic": "Films", "title": "Export Director Mode: full config + ffmpeg params", "api": "/api/films/projects/:id/export", "stack": "Node.js+ffmpeg", "priority": "P1", "effort": "4h", "desc": "Konvertera Director Mode settings (tempo/klippstil/musik) till ffmpeg-parametrar", "status": "done" }, { "id": "F-016", "epic": "Films", "title": "Timeline view API (scener med timestamps)", "api": "/api/films/projects/:id/timeline", "stack": "Node.js", "priority": "P2", "effort": "2h", "desc": "Returnera alla scener med kumulativa timestamps f\u00f6r preview", "status": "done" }, { "id": "F-017", "epic": "Films", "title": "AI pipeline progress SSE stream", "api": "/api/films/projects/:id/pipeline/stream", "stack": "Node.js+SSE", "priority": "P1", "effort": "3h", "desc": "Real-time pipeline progress: analyze \u2192 match \u2192 TTS \u2192 music \u2192 ready", "status": "done" }, { "id": "F-018", "epic": "Films", "title": "YouTube auto-upload efter rendering", "api": "/api/films/projects/:id/publish", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Koppla Films export \u2192 YouTube Data API v3 upload (kr\u00e4ver T-007)", "status": "blocked_external" }, { "id": "F-019", "epic": "Films", "title": "Media library f\u00f6r klipp och bilder", "api": "/api/films/media", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "CRUD f\u00f6r media assets (video/image/audio) per anv\u00e4ndare", "status": "done" }, { "id": "F-020", "epic": "Films", "title": "Films UI dashboard (iOS Native)", "api": "-", "stack": "HTML/CSS/JS", "priority": "P1", "effort": "6h", "desc": "PWA-dashboard f\u00f6r hela film pipeline. iOS 18 design. Tokens.css.", "status": "done" }, { "id": "D-001", "epic": "DISSG", "title": "Kausalgrafer API (orsaksanalys)", "api": "/api/dissg/causal", "stack": "Rust+Python", "priority": "P1", "effort": "8h", "desc": "Kausalanalys: vilket beslut ledde till vilket utfall. WorldBank + Riksdagen data.", "status": "done" }, { "id": "D-002", "epic": "DISSG", "title": "Oscilloscope view: trendanalys per indikator", "api": "/api/dissg/trends", "stack": "Python", "priority": "P1", "effort": "4h", "desc": "Tidsserie-analys f\u00f6r valfri indikator, 10-20 \u00e5r bak\u00e5t. WorldBank historiska data.", "status": "done" }, { "id": "D-003", "epic": "DISSG", "title": "Beslutstidslinje: politiska beslut med datum", "api": "/api/dissg/decisions", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Riksdagen API \u2192 lista beslut per datum, filtrerat p\u00e5 politikomr\u00e5de", "status": "done" }, { "id": "D-004", "epic": "DISSG", "title": "Landsportf\u00f6ljer: djupdykning per land", "api": "/api/dissg/portfolio/:country", "stack": "Python", "priority": "P1", "effort": "4h", "desc": "Alla WorldBank-indikatorer f\u00f6r ett land, tidsserie, trendlinje", "status": "done" }, { "id": "D-005", "epic": "DISSG", "title": "PDF export av DISSG-rapport", "api": "/api/dissg/export/pdf", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Generera PDF med alla nyckeltal, grafer, k\u00e4llh\u00e4nvisningar", "status": "done" }, { "id": "D-006", "epic": "DISSG", "title": "CSV export av dataset", "api": "/api/dissg/export/csv", "stack": "Python", "priority": "P1", "effort": "2h", "desc": "Exportera dataset som CSV f\u00f6r valfri kombination av land+indikator+\u00e5r", "status": "done" }, { "id": "D-007", "epic": "DISSG", "title": "DISSG PRO tier: subscription + rate limiting", "api": "/api/dissg/subscription", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Standard (gratis), PRO 799kr/m\u00e5n, Enterprise. Kopplat mot waitlist.", "status": "done" }, { "id": "D-008", "epic": "DISSG", "title": "DISSG login/register + auth", "api": "/api/dissg/auth", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "Frist\u00e5ende auth f\u00f6r DISSG PRO-kunder. JWT. Kopplat mot AMOS identity.", "status": "done" }, { "id": "D-009", "epic": "DISSG", "title": "Global Master Index (GMI) ber\u00e4kningsmotor", "api": "/api/dissg/gmi", "stack": "Rust", "priority": "P1", "effort": "6h", "desc": "Komposit-index av 6 kategorier per land. Viktat genomsnitt. WorldBank + OECD.", "status": "done" }, { "id": "D-010", "epic": "DISSG", "title": "Global Diagnostic Map data API", "api": "/api/dissg/gdm", "stack": "Python", "priority": "P0", "effort": "4h", "desc": "GeoJSON + scores per land f\u00f6r interaktiv v\u00e4rldskarta. Alla 190+ l\u00e4nder.", "status": "done" }, { "id": "D-011", "epic": "DISSG", "title": "Debattl\u00e4ge iOS-app (PWA, 8-sek svar)", "api": "-", "stack": "HTML/CSS/JS", "priority": "P1", "effort": "5h", "desc": "Mobiloptimerad PWA med snabb query, offline cache, r\u00f6stfr\u00e5ga.", "status": "done" }, { "id": "D-012", "epic": "DISSG", "title": "OECD API integration", "api": "/api/dissg/oecd", "stack": "Python", "priority": "P1", "effort": "4h", "desc": "OECD.stat API \u2192 h\u00e4lsa, utbildning, arbetsmarknad, milj\u00f6 per land", "status": "done" }, { "id": "D-013", "epic": "DISSG", "title": "UN Statistics API integration", "api": "/api/dissg/un", "stack": "Python", "priority": "P1", "effort": "4h", "desc": "UN Data API \u2192 SDG-indikatorer, demografi, m\u00e4nskliga r\u00e4ttigheter", "status": "done" }, { "id": "D-014", "epic": "DISSG", "title": "Freedom House demokrati-index integration", "api": "/api/dissg/democracy", "stack": "Python", "priority": "P2", "effort": "3h", "desc": "Freedom in the World data \u2192 demokratipo\u00e4ng per land", "status": "done" }, { "id": "D-015", "epic": "DISSG", "title": "Alert system: notifiera om ny relevant statistik", "api": "/api/dissg/alerts", "stack": "Node.js+cron", "priority": "P2", "effort": "4h", "desc": "Prenumeranter notifieras n\u00e4r SCB/WorldBank publicerar ny data i deras \u00e4mnesomr\u00e5den", "status": "done" }, { "id": "D-016", "epic": "DISSG", "title": "DISSG systemlogg API", "api": "/api/dissg/log", "stack": "Node.js", "priority": "P2", "effort": "2h", "desc": "Audit log \u00f6ver queries, data sources used, timestamp", "status": "done" }, { "id": "D-017", "epic": "DISSG", "title": "Budget comparison API", "api": "/api/dissg/budget", "stack": "Python", "priority": "P2", "effort": "4h", "desc": "J\u00e4mf\u00f6r statsbudgetar per land och \u00e5r. IMF + SCB data.", "status": "done" }, { "id": "D-018", "epic": "DISSG", "title": "Education deep dive (Skolverket + PISA)", "api": "/api/dissg/education", "stack": "Python", "priority": "P2", "effort": "4h", "desc": "Skolverket + PISA-data per land/kommun. Meritv\u00e4rde, l\u00e4rart\u00e4thet, resultat.", "status": "done" }, { "id": "D-019", "epic": "DISSG", "title": "DISSG API gateway med OAuth2", "api": "/api/dissg/token", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "REST API med OAuth2 f\u00f6r enterprise-kunder. Rate limiting per tier.", "status": "done" }, { "id": "D-020", "epic": "DISSG", "title": "Signal\u00f6versikt (Oscilloscope) dashboard", "api": "-", "stack": "HTML/CSS/JS", "priority": "P1", "effort": "5h", "desc": "Realtids-trendvisualisering, animerad SVG, iOS Native design", "status": "done" }, { "id": "C-001", "epic": "CRM", "title": "Company enrichment pipeline (B2B data)", "api": "/api/crm/enrichment", "stack": "Python", "priority": "P0", "effort": "6h", "desc": "Firmografisk data: org.nr \u2192 namn, VD, anst\u00e4llda, bransch, oms\u00e4ttning", "status": "done" }, { "id": "C-002", "epic": "CRM", "title": "Shopify API integration", "api": "/api/crm/shopify", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Shopify REST + GraphQL. Produkter, ordrar, kunder synkas mot CRM.", "status": "done" }, { "id": "C-003", "epic": "CRM", "title": "Physical mail API (PostNord/Mailing)", "api": "/api/crm/physical-mail", "stack": "Node.js", "priority": "P2", "effort": "4h", "desc": "Trigga fysisk post via PostNord API som komplement till digital outreach", "status": "done" }, { "id": "C-004", "epic": "CRM", "title": "Live news feed per bolag (intel-feed koppling)", "api": "/api/crm/companies/:id/news", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "H\u00e4mta senaste nyheter om ett bolag fr\u00e5n intel-feed + Google News", "status": "done" }, { "id": "C-005", "epic": "CRM", "title": "Market Pulse: branschpuls i realtid", "api": "/api/crm/market-pulse", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Aggregera nyheter + trender per bransch. Ranking av aktualitet.", "status": "done" }, { "id": "C-006", "epic": "CRM", "title": "Tech Trends Cloud: teknologi-trending per bransch", "api": "/api/crm/tech-trends", "stack": "Python+AI", "priority": "P2", "effort": "4h", "desc": "AI analyserar nyheter \u2192 tech-trend-ord per bransch visas som word cloud", "status": "done" }, { "id": "C-007", "epic": "CRM", "title": "Smart Timing Widget: b\u00e4sta kontakttid", "api": "/api/crm/timing/:company_id", "stack": "Node.js+AI", "priority": "P2", "effort": "4h", "desc": "AI analyserar bolagets aktivitetsm\u00f6nster \u2192 f\u00f6resl\u00e5r b\u00e4sta tid att kontakta", "status": "done" }, { "id": "C-008", "epic": "CRM", "title": "Pipeline Orchestrator: auto-styr leads i pipeline", "api": "/api/crm/pipeline/orchestrate", "stack": "Node.js+Rules", "priority": "P1", "effort": "6h", "desc": "Rule-based + AI: flytta leads automatiskt baserat p\u00e5 aktivitet och scoring", "status": "done" }, { "id": "C-009", "epic": "CRM", "title": "PDF outreach generation (batch)", "api": "/api/crm/outreach/batch", "stack": "Node.js+PDF", "priority": "P1", "effort": "5h", "desc": "Generera personaliserade PDF-erbjudanden f\u00f6r batch av bolag via AI", "status": "done" }, { "id": "C-010", "epic": "CRM", "title": "Industry Relevance Matrix", "api": "/api/crm/industries/matrix", "stack": "Python", "priority": "P2", "effort": "4h", "desc": "Matris: v\u00e5ra moduler vs kundens bransch \u2192 relevanspo\u00e4ng", "status": "done" }, { "id": "C-011", "epic": "CRM", "title": "Module Package Generator", "api": "/api/crm/packages/generate", "stack": "Node.js+AI", "priority": "P1", "effort": "5h", "desc": "AI genererar paketf\u00f6rslag baserat p\u00e5 bolagets profil + behov", "status": "done" }, { "id": "C-012", "epic": "CRM", "title": "Enterprise Portal: kundvy med alla moduler", "api": "/api/portal/enterprise", "stack": "Node.js", "priority": "P1", "effort": "6h", "desc": "Kundernas self-service portal: se k\u00f6pta moduler, impact, invoice, support", "status": "done" }, { "id": "C-013", "epic": "CRM", "title": "Tink PSD2 financial health analysis", "api": "/api/banking/tink-analysis", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Tink bank-data \u2192 analysera bolags ekonomiska h\u00e4lsa f\u00f6r kreditv\u00e4rdering", "status": "done" }, { "id": "C-014", "epic": "CRM", "title": "Cold cases automation", "api": "/api/crm/cold-cases", "stack": "Node.js", "priority": "P2", "effort": "3h", "desc": "Automatisk reaktivering av inaktiva leads via AI-genererade meddelanden", "status": "done" }, { "id": "C-015", "epic": "CRM", "title": "Auto-campaign orchestration", "api": "/api/crm/campaigns/auto", "stack": "Node.js+AI", "priority": "P1", "effort": "5h", "desc": "AI skapar och k\u00f6r kampanjer automatiskt baserat p\u00e5 lead-segment", "status": "done" }, { "id": "C-016", "epic": "CRM", "title": "Subscription pricing tiers", "api": "/api/crm/subscriptions", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "Paket och priser f\u00f6r AAMOS Pro + Ouroboros per bransch/storlek", "status": "done" }, { "id": "C-017", "epic": "CRM", "title": "Financial Health Card per bolag", "api": "/api/crm/companies/:id/financial-health", "stack": "Python", "priority": "P2", "effort": "4h", "desc": "Sammanfattning av bolags finansiella h\u00e4lsa: Tink + SCB + UC", "status": "done" }, { "id": "C-018", "epic": "CRM", "title": "Problem Categories Grid (discovery)", "api": "/api/crm/discovery/problems", "stack": "Node.js+AI", "priority": "P2", "effort": "4h", "desc": "AI identifierar vilka problem ett bolag troligtvis har baserat p\u00e5 bransch+storlek", "status": "done" }, { "id": "C-019", "epic": "CRM", "title": "HighEndLeads filter och scoring", "api": "/api/crm/leads/high-end", "stack": "Node.js", "priority": "P2", "effort": "4h", "desc": "Filter f\u00f6r leads med h\u00f6g potential: oms\u00e4ttning, tillv\u00e4xt, tech-mognad", "status": "done" }, { "id": "C-020", "epic": "CRM", "title": "Partner Dashboard f\u00f6r \u00e5terf\u00f6rs\u00e4ljare", "api": "/api/crm/partners/dashboard", "stack": "Node.js", "priority": "P2", "effort": "5h", "desc": "\u00c5terf\u00f6rs\u00e4ljares vy: sina kunder, provision, pipeline, support", "status": "done" }, { "id": "A-001", "epic": "AAMOS Pro", "title": "Sign in with Apple live (nycklar fr\u00e5n Johan)", "api": "/api/auth/apple", "stack": "Node.js", "priority": "P0", "effort": "0.5h", "desc": "APPLE_CLIENT_ID, TEAM_ID, KEY_ID, PRIVATE_KEY fr\u00e5n developer.apple.com", "status": "blocked_external" }, { "id": "A-002", "epic": "AAMOS Pro", "title": "MapKit JS live (Apple Maps i AAMOS UI)", "api": "/api/mapkit/token", "stack": "Node.js", "priority": "P0", "effort": "0.5h", "desc": "MAPKIT_KEY_ID \u2192 maps visas i AIR dashboard och DISSG GDM", "status": "blocked_external" }, { "id": "A-003", "epic": "AAMOS Pro", "title": "Brave Search API live", "api": "/api/search", "stack": "Node.js", "priority": "P0", "effort": "0.5h", "desc": "BRAVE_API_KEY \u2192 web_search fungerar i alla AMOS-moduler", "status": "blocked_external" }, { "id": "A-004", "epic": "AAMOS Pro", "title": "YouTube Data API v3 OAuth live", "api": "/api/youtube/auth", "stack": "Node.js", "priority": "P0", "effort": "2h", "desc": "YOUTUBE_REFRESH_TOKEN \u2192 auto-upload av films fr\u00e5n pipeline", "status": "blocked_external" }, { "id": "A-005", "epic": "AAMOS Pro", "title": "Nordea PSD2 live banking", "api": "/api/banking/nordea", "stack": "Node.js", "priority": "P0", "effort": "4h", "desc": "Erik godk\u00e4nner OAuth \u2192 Nordea transaktioner live \u2192 quiXzoom payouts", "status": "blocked_external" }, { "id": "A-006", "epic": "AAMOS Pro", "title": "AAMOS Pro billing: Stripe subscription", "api": "/api/billing/pro", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Stripe subscriptions f\u00f6r AAMOS Pro 299kr/m\u00e5n och Ouroboros per modul", "status": "done" }, { "id": "A-007", "epic": "AAMOS Pro", "title": "Policy Intelligence module (AAMOS Pro feature)", "api": "/api/dissg", "stack": "Microservices", "priority": "P1", "effort": "0.5h", "desc": "Exponera DISSG som AAMOS Pro feature. Gate bakom PRO-subscription.", "status": "done" }, { "id": "A-008", "epic": "AAMOS Pro", "title": "Films module (AAMOS Pro feature)", "api": "/api/films", "stack": "Node.js", "priority": "P1", "effort": "0.5h", "desc": "Films pipeline = AAMOS Pro feature. Gate bakom subscription.", "status": "done" }, { "id": "A-009", "epic": "AAMOS Pro", "title": "AIR v1 med BLE presence detection", "api": "/api/air/sync/ble", "stack": "Rust+Node.js", "priority": "P1", "effort": "6h", "desc": "BLE scanning \u2192 auto-detect enheter \u2192 Ownership Graph uppdateras", "status": "done" }, { "id": "A-010", "epic": "AAMOS Pro", "title": "Kvittovalvet \u2192 AIR ownership sync", "api": "/api/air/sync/kvittovalvet", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "Kvitton \u2192 match mot enhetstyp \u2192 ownership_confidence \u00f6kar automatiskt", "status": "done" }, { "id": "A-011", "epic": "AAMOS Pro", "title": "Waitlist \u2192 email onboarding funnel", "api": "/api/waitlist/onboard", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "Waitlist-anm\u00e4lan \u2192 automatisk onboarding-email via Resend", "status": "done" }, { "id": "A-012", "epic": "AAMOS Pro", "title": "AAMOS Pro dashboard (iOS Native)", "api": "-", "stack": "HTML/CSS/JS", "priority": "P1", "effort": "8h", "desc": "Komplett Pro-dashboard: alla moduler, usage, billing, settings", "status": "done" }, { "id": "A-013", "epic": "AAMOS Pro", "title": "9-modells orkester AI router (f\u00f6rb\u00e4ttring)", "api": "/api/chat", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "F\u00f6rb\u00e4ttra model-routing: Opus f\u00f6r analys, Groq f\u00f6r snabb inference, etc.", "status": "done" }, { "id": "A-014", "epic": "AAMOS Pro", "title": "AAMOS Pro onboarding wizard", "api": "/api/onboarding", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Guided onboarding: v\u00e4lj moduler, connect bank, invite team, first action", "status": "done" }, { "id": "A-015", "epic": "AAMOS Pro", "title": "ElevenLabs \u2192 Films live (API key i env)", "api": "/api/films/voices", "stack": "Node.js", "priority": "P0", "effort": "1h", "desc": "L\u00e4gg ELEVENLABS_API_KEY i amos-core.service env \u2192 voices returneras", "status": "done" }, { "id": "A-016", "epic": "AAMOS Pro", "title": "Loopia IMAP-creds fix", "api": "-", "stack": "Config", "priority": "P2", "effort": "0.5h", "desc": "R\u00e4tt l\u00f6senord f\u00f6r receipts@wavult.com \u2192 reconciler slutar krascha", "status": "done" }, { "id": "A-017", "epic": "AAMOS Pro", "title": "VYRA Cloudflare SSL fix", "api": "-", "stack": "Infra", "priority": "P2", "effort": "0.1h", "desc": "Cloudflare: SSL/TLS \u2192 Full (inte Full strict) \u2192 vyra.gg live", "status": "blocked_external" }, { "id": "A-018", "epic": "AAMOS Pro", "title": "Gitea API token generering", "api": "-", "stack": "Infra", "priority": "P0", "effort": "0.1h", "desc": "git.wavult.com \u2192 Settings \u2192 Token \u2192 GITEA_TOKEN i credentials.env", "status": "blocked_external" }, { "id": "A-019", "epic": "AAMOS Pro", "title": "iMac Tailscale + Gitea act_runner", "api": "-", "stack": "Infra", "priority": "P0", "effort": "1h", "desc": "brew install tailscale \u2192 rapportera IP \u2192 registrera CI runner", "status": "blocked_external" }, { "id": "A-020", "epic": "AAMOS Pro", "title": "Stripe reaktivering (quiXzoom payments)", "api": "/api/billing/stripe", "stack": "Node.js", "priority": "P0", "effort": "4h", "desc": "stripe-api.mjs.DECOMMISSIONED \u2192 \u00e5teraktivera \u2192 quiXzoom betalar zoomers", "status": "done" }, { "id": "L-001", "epic": "Lumina", "title": "Lumina Foundation landing page live", "api": "-", "stack": "HTML/CSS", "priority": "P0", "effort": "0.5h", "desc": "amos.wavult.com/lumina/ \u2192 Claude Opus bygger klart \u2192 sync till public", "status": "done" }, { "id": "L-002", "epic": "Lumina", "title": "Lumina admin dashboard (Ouroboros Education)", "api": "/api/ouroboros/education", "stack": "Node.js", "priority": "P1", "effort": "6h", "desc": "School registry, device fleet (AIR), student data, impact reports", "status": "done" }, { "id": "L-003", "epic": "Lumina", "title": "Lumina EDU-1 device MDM via AIR", "api": "/api/air/assets", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Registrera Lumina EDU-1 enheter i AIR Ownership Graph med skolkoppling", "status": "done" }, { "id": "L-004", "epic": "Lumina", "title": "Impact reporting dashboard", "api": "/api/analytics/lumina", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Learning outcomes, school attendance, device uptime per land/skola", "status": "done" }, { "id": "L-005", "epic": "Lumina", "title": "Partner portal (CSR/ESG-rapportering)", "api": "/api/crm/partners", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Corporate partners ser impact av sina donationer med ESG-rapport", "status": "done" }, { "id": "L-006", "epic": "Lumina", "title": "Country deployment map API", "api": "/api/lumina/map", "stack": "Node.js", "priority": "P1", "effort": "3h", "desc": "GeoJSON: 12 l\u00e4nder, 1997 skolor, 398k elever, 99.6k enheter", "status": "done" }, { "id": "L-007", "epic": "Lumina", "title": "Curriculum content management (Academy)", "api": "/api/aamos/academy", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "Ladda upp och hantera utbildningsmaterial per land/skola", "status": "done" }, { "id": "L-008", "epic": "Lumina", "title": "Teacher training portal", "api": "/api/people/training", "stack": "Node.js", "priority": "P2", "effort": "4h", "desc": "L\u00e4rare onboardas, f\u00f6ljer tr\u00e4ningsprogram, certifieras", "status": "done" }, { "id": "L-009", "epic": "Lumina", "title": "AAMOS Phone OS \u2192 Lumina EDU-1 konfig", "api": "-", "stack": "Config", "priority": "P1", "effort": "4h", "desc": "AAMOS Phone OS konfigureras f\u00f6r Lumina EDU-1: locked, offline-first, curriculum", "status": "done" }, { "id": "L-010", "epic": "Lumina", "title": "Donation tracking + fund management", "api": "/api/finance/donations", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Donationsfl\u00f6den fr\u00e5n partners \u2192 allokering per land/projekt \u2192 transparensrapport", "status": "done" }, { "id": "L-011", "epic": "Lumina", "title": "Wavult Group project template live", "api": "-", "stack": "HTML/CSS", "priority": "P1", "effort": "3h", "desc": "template/wavult-project.html \u2192 master-mall f\u00f6r alla Wavult-bolag", "status": "done" }, { "id": "L-012", "epic": "Lumina", "title": "Ouroboros Education Profile", "api": "/api/ouroboros/profiles/education", "stack": "Node.js", "priority": "P1", "effort": "4h", "desc": "F\u00f6rkonfigurerat Ouroboros-paket f\u00f6r NGO: Academy+Finance+HR+Compliance+CRM", "status": "done" }, { "id": "L-013", "epic": "Lumina", "title": "DISSG \u2192 UNESCO education benchmark", "api": "/api/dissg/education", "stack": "Python", "priority": "P2", "effort": "4h", "desc": "Lumina impact j\u00e4mf\u00f6rs mot UNESCO SDG-4 utbildningsm\u00e5l per land", "status": "done" }, { "id": "L-014", "epic": "Lumina", "title": "ESG compliance auto-rapportering", "api": "/api/compliance/esg", "stack": "Node.js", "priority": "P1", "effort": "5h", "desc": "Automatisk ESG-rapport f\u00f6r corporate partners enligt OECD-standard", "status": "done" }, { "id": "L-015", "epic": "Lumina", "title": "Board governance dashboard", "api": "/api/governance", "stack": "Node.js", "priority": "P2", "effort": "3h", "desc": "7-persons board: beslut, protokoll, audit trail, transparency", "status": "done" }, { "id": "L-016", "epic": "Lumina", "title": "Lumina EDU-1 firmware OTA API", "api": "/api/air/devices/:id/firmware", "stack": "Node.js", "priority": "P2", "effort": "4h", "desc": "Over-the-air firmware updates till Lumina-enheter via AIR", "status": "done" }, { "id": "L-017", "epic": "Lumina", "title": "Offline curriculum sync API", "api": "/api/lumina/curriculum/sync", "stack": "Node.js", "priority": "P2", "effort": "4h", "desc": "Synka curriculum-paket till enheter n\u00e4r de \u00e4r online", "status": "done" }, { "id": "L-018", "epic": "Lumina", "title": "Student progress tracking (anonymiserat)", "api": "/api/lumina/students/progress", "stack": "Node.js", "priority": "P2", "effort": "4h", "desc": "Anonymiserade l\u00e4rresultat per skola/land. GDPR-compliant.", "status": "done" }, { "id": "L-019", "epic": "Lumina", "title": "Solar charging station monitoring", "api": "/api/air/assets/:id/power", "stack": "Node.js+IoT", "priority": "P2", "effort": "5h", "desc": "MQTT fr\u00e5n solpaneler \u2192 batteristatus, laddningsstatus per station", "status": "done" }, { "id": "L-020", "epic": "Lumina", "title": "Public impact API (\u00f6ppen data)", "api": "/api/lumina/impact/public", "stack": "Node.js", "priority": "P1", "effort": "2h", "desc": "\u00d6ppen endpoint: 250k+ studenter, 12 l\u00e4nder, 1200+ skolor (ingen auth)", "status": "done" } ], "audit_started": "2026-06-05T16:20:00Z" }