# Phase 1: Core Generation Pipeline - Context **Gathered:** 2026-03-08 **Status:** Ready for planning ## Phase Boundary Pipeline end-to-end che genera 13 caroselli Instagram con distribuzione Persuasion Nurturing + livelli Schwartz, e produce CSV per Canva Bulk Create. Include Web UI con form di generazione, progress indicator, anteprima output con navigazione slide, e download CSV. Deployata su VPS come single container FastAPI + React SPA su `https://lab.mlhub.it/postgenerator/`. ## Implementation Decisions ### Struttura carosello Canva - Numero slide variabile per tipo post (non fisso) — il numero cambia in base al tipo Persuasion Nurturing (es. valore puo' avere piu' slide di promo) - Claude sceglie i nomi placeholder Canva Bulk Create — l'utente creera' il template Canva dopo, basandosi sullo schema CSV prodotto - Claude decide la struttura immagini per slide (quali slide hanno campo immagine) in base a best practice Instagram carousels - Il CSV include una colonna caption Instagram con testo post + hashtag, generata dall'LLM insieme al contenuto slide ### Form di generazione - Input guidato con default intelligenti: obiettivo campagna + settimane obbligatori, opzionalmente nicchia, tono di voce, nome brand - Campi opzionali hanno default ragionevoli se non compilati - Claude API key configurata una volta nella pagina Impostazioni, non nel form di generazione - Pulsante "Genera" disabilitato se API key non configurata, con messaggio che rimanda a Impostazioni ### Anteprima e review output - Layout griglia di card per i 13 post generati - Ogni card mostra badge colorati con tipo Persuasion Nurturing (es. "Valore", "Storytelling") e livello Schwartz - Click su card per espandere e vedere le slide - Navigazione slide con frecce laterali (stile Instagram stories preview) - Caption Instagram visibile sotto le slide nell'espansione - Edit inline del testo: click su testo slide per modificarlo, le modifiche si riflettono nel CSV scaricato ### Gestione errori e risultati parziali - Post falliti mostrati come card errore con icona, messaggio breve, e pulsante "Riprova" per rigenerare quel singolo post - CSV scaricato esclude i post falliti — solo post generati con successo (se 2 su 13 falliscono, CSV ha 11 righe) - Per-item error isolation: un fallimento API non blocca il batch ### Claude's Discretion - Nomi esatti dei placeholder Canva (colonne CSV) - Numero slide specifico per ogni tipo Persuasion Nurturing - Quali slide hanno campo immagine e quali no - Numero di post: fisso 13 o configurabile — Claude sceglie l'approccio piu' pragmatico per MVP - Form "Genera Singolo Post": form separato o azione dal calendario — Claude sceglie il flusso piu' naturale - Design UI generale (colori, spacing, tipografia) - Loading skeleton e progress indicator design - Struttura file-based storage ## Specific Ideas - Griglia card con badge strategici colorati — l'utente vuole vedere a colpo d'occhio la distribuzione PN e Schwartz - Navigazione slide stile Instagram stories (frecce laterali) — familiare per chi lavora con Instagram - Edit inline prima del download — l'utente vuole poter correggere piccoli dettagli senza rigenerare - Caption Instagram nel CSV e nell'anteprima — il workflow e' "genera tutto, rivedi, scarica, importa in Canva, posta" ## Deferred Ideas None — discussion stayed within phase scope --- *Phase: 01-core-generation-pipeline* *Context gathered: 2026-03-08*