# Callsign-generator ##1. Syfte Skapa en webbaserad tj??nst som genererar CB-handles/callsigns med hj??lp av en LLM. Anv??ndaren ska kunna ge grundparametrar och eventuellt f??rfina dessa via f??ljdfr??gor innan generering. ##2. M??lbild Tj??nsten ska: - generera ett realistiskt callsign baserat p?? anv??ndarens input - ge en kort motivering till varf??r callsignet passar - vara konsekvent, f??ruts??gbar och snabb att anv??nda - k??nnas ???dialogisk??? genom adaptiva f??ljdfr??gor ##3. Anv??ndarfl??de (MVP) ### Steg 1 - Initial input via UI Anv??ndaren besvarar initiala val s??som: - Stil (t.ex. Milit??r / Humor / Klassisk CB / Annan ??? fritext) - Ton (t.ex. Seri??s / Aggressiv / Lekfull) - Fritextbeskrivning (valfritt) ### Steg 2 - Val Efter initiala svar finns tv?? knappar: ``` [ Generera ] [ Fler fr??gor ] ``` ### Steg 3A - Generera - Backend skickar sammanst??lld prompt till LLM - LLM returnerar JSON med: - callsign - motivering ### Steg 3B - Fler fr??gor - Backend skickar prompt till LLM som genererar 1???3 relevanta f??ljdfr??gor - Anv??ndaren besvarar fr??gorna - Svaren lagras i state - Anv??ndaren kan d??refter v??lja "Generera" eller "Fler fr??gor" igen ## 4. Funktionella krav ### 4.1 Input - Systemet ska st??dja: - val via dropdown/radioknappar - fritext - ??terkommande f??ljdfr??gor ### 4.2 Output Systemet ska returnera JSON i stabilt format: ``` { "callsign": "", "reason": "" } ``` ### 4.3 F??ljdfr??gor F??ljdfr??gorna ska: - baseras p?? anv??ndarens tidigare svar - vara relevanta och korta - komma i 1???3 fr??gor ??t g??ngen - returneras som JSON: ``` { "questions": [ "fr??ga 1", "fr??ga 2" ] } ``` ### 4.4 State Management Frontend ska lagra: ``` answers = { initial_params: {...}, follow_up_answers: {...} } ``` ### 4.5 Spr??k MVP riktas mot svenska men ska kunna ut??kas till andra spr??k. ## 5. Icke-funktionella krav - LLM-styrning: Stabilt via templade prompts och JSON-utdata - Prestanda: Svar inom < 2 sekunder f??r majoriteten av anrop (exkl. cold start) - Skalbarhet: Designad s?? backend kan distribueras vid behov - Robusthet: Systemet ska inte ???balla ur??? med l??nga poetiska svar - Utbyggbarhet: Framtida logotyp-/TTS-/fonetikmoduler m??jliga - Kostnadskontroll: Kan inf??ras via rate-limit + begr??nsad iteration ## 6. Systemarkitektur ### Frontend - Visar formul??r + resultat - Renderar f??ljdfr??gor - H??ller state med anv??ndarsvar - Anropar backend via REST/HTTPS ### Backend - API som hanterar tv?? endpointtyper: ``` POST /questions Input: answers Output: JSON med f??ljdfr??gor POST /generate Input: answers Output: JSON med callsign + motivering ``` - Backend ansvarar f??r: - promptkonstruktion - validering - OpenRouter-anrop - eventuella caches ### LLM (via OpenRouter) - Backend anropar LLM - LLM returnerar JSON enligt definierad struktur ## 7. S??kerhets- och ??tkomstkrav - API-nyckel f??r OpenRouter f??r inte exponeras i frontend - Backend signerar samtliga anrop internt - M??jlighet till rate-limit per IP ## 8. Implementationsteknik (rekommenderad) ### Frontend: - SvelteKit / React / Vue (valfritt) ### Backend: - Python (FastAPI) eller Node (Fastify) ### Host-varianter: - docker med docker-compose ### LLM: - OpenRouter, valfri modell (t.ex. GPT-4, Claude etc)