Files
boc/tickets/tickets-master.json
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

1107 lines
33 KiB
JSON

{
"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"
}