From 10a390239aedd8611ad6a9fe1ed56152062a02b2 Mon Sep 17 00:00:00 2001 From: Simone Cavalli Date: Fri, 19 Jun 2026 11:37:08 +0200 Subject: [PATCH] docs: reset milestone v2.2 "Sales Loop" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strategic reset after articulating the real sales flow (piano in .claude/plans/glittery-sprouting-pudding.md). v2.1 delivered Offer Studio (Phase 11+12) + CRM Attio (Phase 14); residual phases re-scoped: - Phase 13 (Servizi Attivi) → frozen (touches post-sale portal, kept as-is) - Phase 15 (Dashboard Revenue) → dropped (analytics merges into dashboard) - Phase 16/17 (Proposal AI) → re-scoped into v2.2 with transcripts added New milestone v2.2 = sales loop, Phase 18→22 (R1→R5): - R1 Cleanup: remove forecast + manual quote builder, merge analytics into dashboard - R2 Pipeline CRM Kanban (Pipedrive-style) - R3 Knowledge Base (dated call transcripts per lead/client) - R4 AI agent (admin picks offer, Claude personalizes proposal from transcripts) - R5 Public /preventivo/[slug] page + email New requirements: CLEAN-01..04, PIPE-01/02, KB-01/02, AI-01/02, PUB-01/02/03. Updated ROADMAP, REQUIREMENTS, STATE, PROJECT. No code changed. Co-Authored-By: Claude Opus 4.8 --- .planning/PROJECT.md | 61 +++++++++++-------- .planning/REQUIREMENTS.md | 119 +++++++++++++++++++++++++++++--------- .planning/ROADMAP.md | 101 +++++++++++++++++++++++++++----- .planning/STATE.md | 45 +++++++------- 4 files changed, 241 insertions(+), 85 deletions(-) diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 28f6d93..2f57aa5 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -8,15 +8,20 @@ Suite operativa per un consulente di personal branding, live su hub.iamcavalli.n Il cliente apre il link e vede esattamente a che punto è il suo progetto, cosa deve ancora succedere e cosa ha già approvato — senza dover scrivere email per chiedere aggiornamenti. -## Current Milestone: v2.1 Offer Studio + Proposal AI +## Current Milestone: v2.2 Sales Loop *(reset 2026-06-19)* -**Goal:** Trasformare catalogo/offerte in una UX rapida stile Notion/Airtable (inline edit, tag, drag-to-compose), ristrutturare i tab del workspace progetto, ricostruire il CRM in stile Attio, poi chiudere con l'AI proposal builder → pagina pubblica → link pagamento. +**Contesto reset:** v2.1 ha consegnato Offer Studio (catalogo + offer editor) e il CRM Attio. Dopo aver articolato il flusso commerciale reale, le fasi residue v2.1 (13/15/16/17) sono congelate/abbandonate/ri-scopate. Piano completo: `.claude/plans/glittery-sprouting-pudding.md`. -**Target features:** -- **Catalogo & Offerte (Offer Studio)** — vista database stile Notion/Airtable per servizi e offerte: inline editing, tag multi-select con creazione al volo, quick-add, filtri/ricerca istantanei, composizione offerta via drag&drop (`@dnd-kit`) con totale live, import CSV one-shot per seed -- **Workspace progetto** — rimuovere tab "Preventivo" (UI only, `quote_items` intatto — `accepted_total` resta editabile via Payments, zero perdita funzionale verificata); nuova tab "Servizi attivi" che assorbe "Offerte" (one-shot + ricorrenti mensili, schema per tracking incassi mese-per-mese); rimuovere pagina "Forecast", statistiche revenue mensile nella Dashboard -- **CRM custom Attio-style** — tabelle/viste con inline editing, tag, filtri; assorbe i fix minori noti (FollowUpWidget IT, LeadForm types, SendQuoteModal flow) -- **Proposal AI** — preventivo builder AI (pesca cliente + offerta + info extra) → pagina pubblica HTML/CSS redesign → link pagamento (Stripe Payment Link su offerta); assorbe ex-Phase 11 (auto-provisioning al "Vinto": crea cliente+progetto+fasi+pagamenti) ed ex-Phase 12 (notifiche email Resend per invio link) +**Goal:** Chiudere il **loop di vendita** end-to-end: lead in pipeline Kanban (Pipedrive-style) → transcript datati delle call per cliente → agente AI (io scelgo l'offerta, l'AI personalizza) che genera il preventivo → pagina pubblica `/preventivo/[slug]` + invio email → vinto/perso manuale nel CRM. Il portale cliente post-vendita resta invariato. + +**Target features (Phase 18→22 / R1→R5):** +- **R1 Cleanup** — rimuovere Forecast e quote builder manuale; fondere `/admin/analytics` nella Dashboard (no doppioni) +- **R2 Pipeline Kanban** — board lead stile Pipedrive con drag-drop tra stage; vinto/perso = cambio-colonna manuale +- **R3 Knowledge Base** — schema + UI per transcript datati multipli per lead/cliente +- **R4 Agente AI** — builder: admin sceglie cliente+offerta, l'AI (Claude) legge transcript + offerta → bozza preventivo; admin revisiona +- **R5 Pagina pubblica** — `/preventivo/[slug]` HTML/CSS, accept/reject → CRM, invio link via email (Resend) + +**Backlog post-R5** (ex Proposal AI v2.1): Stripe Payment Link su offerta (PROP-03) + auto-provisioning cliente/progetto/fasi/pagamenti al "Vinto" (PROP-04). Phase 13 (Servizi attivi/ricorrenti post-vendita) congelata, ripescabile. ## Requirements @@ -43,29 +48,37 @@ Shipped in v2.0 (Phases 7–10, in produzione su hub.iamcavalli.net): - ✓ Preventivo pubblico `/quote/[token]`: stati draft→sent→viewed→accepted/rejected, `accepted_at` immutabile, raccolta email/note cliente — Phase 9 - ✓ CRM pipeline lead: stati, activity log, reminder follow-up in dashboard — Phase 10 -Validated in v2.1 (in corso): +Validated in v2.1 (consegnato, in prod): +- ✓ Catalogo `services` come vista database (inline edit, tag multi-select, quick-add, ricerca istantanea) + consolidamento legacy — Phase 11 (OFFER-07..10, OFFER-13) +- ✓ Offer Editor: lista filtrabile/archiviabile + 3 tier A/B/C via matrice checkbox, totale live, prezzo pubblico manuale, tag 4-dimensioni, promessa di trasformazione — Phase 12 (OFFER-11, OFFER-15..18). 55 servizi reali + tag offerta caricati. - ✓ CRM custom Attio-style: `/admin/leads` ridisegnata come tabella inline-edit (status, next_action, ecc.) + tag multi-select con creazione al volo; FollowUpWidget interamente in italiano; `LeadForm` tipizzato senza `useForm`; `SendQuoteModal`/`assignQuoteToLead` senza rami di codice irraggiungibili — Phase 14 (CRM-08, CRM-09, CRM-10, CRM-11, CRM-12) -### Active +### Active — v2.2 Sales Loop (reset 2026-06-19) -**Catalogo & Offerte — Offer Studio (priorità 1):** -- [ ] Vista database stile Notion/Airtable per servizi e offerte: inline editing, tag multi-select con creazione al volo, quick-add, filtri/ricerca istantanei -- [ ] Composizione offerta via drag&drop servizi dal catalogo (`@dnd-kit`) con totale live -- [ ] Import CSV one-shot per seed pacchetti esistenti (porta d'ingresso, non fonte di verità) -- [ ] Consolidamento finale `service_catalog` + `offer_services` legacy → `services` (carry-over da v2.0) +**R1 Cleanup & Consolidamento (Phase 18):** +- [ ] Rimuovere pagina Forecast (`/admin/forecast`) + voce sidebar (CLEAN-01) +- [ ] Rimuovere quote builder manuale (`/admin/quotes/new`) (CLEAN-02) +- [ ] Fondere `/admin/analytics` nella Dashboard `/admin`, eliminare la rotta duplicata (CLEAN-03) -**Workspace progetto (priorità 2):** -- [ ] Rimuovere tab "Preventivo" (solo UI — `quote_items` resta intatto, `accepted_total` già editabile via Payments) -- [ ] Nuova tab "Servizi attivi" che assorbe "Offerte": offerte one-shot + ricorrenti mensili -- [ ] Schema per tracking incassi mese-per-mese sulle offerte ricorrenti (UI può arrivare dopo) -- [ ] Rimuovere pagina "Forecast"; statistiche revenue mensile nella Dashboard (UI dopo mockup utente) +**R2 Pipeline CRM Kanban (Phase 19):** +- [ ] Board lead stile Pipedrive con colonne per stage + drag-drop (PIPE-01) +- [ ] Vinto/perso come cambio-colonna manuale (PIPE-02) -**Proposal AI (priorità 3, ultimo miglio):** -- [ ] Preventivo Builder AI: genera proposta da cliente + offerta + info extra fornite dall'utente -- [ ] Redesign pagina pubblica preventivo (HTML/CSS) con link pagamento (Stripe Payment Link su offerta) -- [ ] Auto-provisioning al "Vinto"/accettazione: crea cliente + progetto + fasi copiate + 1-4 pagamenti (ex-Phase 11) -- [ ] Notifiche email per invio link preventivo/proposta (ex-Phase 12, Resend) +**R3 Knowledge Base Cliente (Phase 20):** +- [ ] Schema additivo transcript datati multipli per lead/cliente (KB-01) +- [ ] UI per incollare/elencare transcript nel profilo (KB-02) + +**R4 Agente AI — generazione preventivo (Phase 21):** +- [ ] Builder: admin sceglie cliente+offerta, l'AI (Claude) legge transcript + offerta → bozza preventivo (AI-01) +- [ ] Admin rivede/edita la bozza prima di pubblicare (AI-02) + +**R5 Pagina pubblica `/preventivo/[slug]` + email (Phase 22):** +- [ ] Pagina pubblica HTML/CSS della proposta (PUB-01) +- [ ] Accept/reject → riflesso nel CRM (PUB-02) +- [ ] Invio link proposta via email Resend (PUB-03) + +**Backlog (post-R5):** Stripe Payment Link su offerta (PROP-03), auto-provisioning al "Vinto" (PROP-04), Servizi attivi/ricorrenti post-vendita (ex Phase 13). ### Out of Scope diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index ec11677..39d82e8 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -1,10 +1,12 @@ -# Requirements — ClientHub v2.1 Offer Studio + Proposal AI +# Requirements — ClientHub (v2.1 chiuso → v2.2 Sales Loop) -**Defined:** 2026-06-13 +**Defined:** 2026-06-13 · **Reset:** 2026-06-19 **Core Value:** Il cliente apre il link e vede esattamente a che punto è il suo progetto, cosa deve ancora succedere e cosa ha già approvato — senza dover scrivere email per chiedere aggiornamenti. v2.0 (Phases 7–10) ha consegnato catalogo unificato, offerte con fasi, preventivo pubblico e CRM pipeline (vedi MILESTONES.md, REQUIREMENTS.md archiviato in `.planning/milestones/v2.0-REQUIREMENTS.md`). v2.1 rifà la UX di catalogo/offerte in stile database-view, ristruttura il workspace progetto, ricostruisce il CRM in stile Attio e chiude il loop commerciale con un builder preventivi AI. +> **RESET 2026-06-19 — milestone v2.2 "Sales Loop".** v2.1 ha consegnato Offer Studio (Phase 11+12) e CRM Attio (Phase 14). Le fasi residue v2.1 — **13 (Servizi Attivi), 15 (Dashboard Revenue), 16/17 (Proposal AI originali)** — sono state **congelate/abbandonate/ri-scopate** dopo che l'utente ha articolato il flusso commerciale reale (vedi piano `.claude/plans/glittery-sprouting-pudding.md`). Il nuovo north-star è il **loop di vendita**: lead in pipeline Kanban → transcript call → agente AI genera preventivo → pagina pubblica `/preventivo/[slug]` → vinto/perso. Requirements attivi: sezione **v2.2** più sotto. + ## Offer Studio — Catalogo & Offerte (v1) | ID | Requirement | Status | @@ -20,15 +22,17 @@ v2.0 (Phases 7–10) ha consegnato catalogo unificato, offerte con fasi, prevent | OFFER-18 | La lista offerte è filtrabile per categoria e supporta l'archiviazione (mostra/nascondi archiviate) | Complete | | OFFER-13 | I dati legacy di `service_catalog` e `offer_services` sono consolidati in `services` senza perdita (migration additiva) | Complete | -## Workspace Progetto — Servizi Attivi (v1) +## Workspace Progetto — Servizi Attivi (ex Phase 13 — CONGELATO v2.2) + +> Congelato dal reset 2026-06-19: tocca il portale post-vendita che l'utente vuole lasciare invariato. Ripescabile in futuro se serve il tracking ricavi ricorrenti. (PROJ-10 "rimuovi Forecast" è confluito in CLEAN-01 v2.2.) | ID | Requirement | Status | |----|-------------|--------| -| PROJ-06 | La tab "Preventivo" è rimossa dal workspace progetto (solo UI — `quote_items` resta intatta, `accepted_total` resta editabile via tab Pagamenti) | Pending | -| PROJ-07 | La tab "Offerte" diventa "Servizi attivi": mostra tutte le offerte assegnate al progetto (`project_offers`) | Pending | -| PROJ-08 | L'utente marca ogni "servizio attivo" come one-shot o ricorrente mensile | Pending | -| PROJ-09 | Per i servizi ricorrenti, l'utente registra in quali mesi è stata incassata la fattura (schema nuovo, additivo — UI può essere minimale) | Pending | -| PROJ-10 | La pagina "Forecast" e la relativa voce di sidebar sono rimosse | Pending | +| PROJ-06 | La tab "Preventivo" è rimossa dal workspace progetto (solo UI — `quote_items` resta intatta, `accepted_total` resta editabile via tab Pagamenti) | Congelato (v2.2) | +| PROJ-07 | La tab "Offerte" diventa "Servizi attivi": mostra tutte le offerte assegnate al progetto (`project_offers`) | Congelato (v2.2) | +| PROJ-08 | L'utente marca ogni "servizio attivo" come one-shot o ricorrente mensile | Congelato (v2.2) | +| PROJ-09 | Per i servizi ricorrenti, l'utente registra in quali mesi è stata incassata la fattura (schema nuovo, additivo — UI può essere minimale) | Congelato (v2.2) | +| PROJ-10 | La pagina "Forecast" e la relativa voce di sidebar sono rimosse | → CLEAN-01 (v2.2) | ## CRM Custom Attio-style (v1) @@ -40,21 +44,67 @@ v2.0 (Phases 7–10) ha consegnato catalogo unificato, offerte con fasi, prevent | CRM-11 | Il form lead (`LeadForm`) valida i campi senza workaround di type-relaxation su react-hook-form | Complete | | CRM-12 | Il flusso `SendQuoteModal` (preventivo esistente vs nuovo) non contiene rami di codice irraggiungibili | Complete | -## Dashboard — Revenue Stats (v1, bloccato su mockup utente) +## Dashboard — Revenue Stats (ex Phase 15 — ABBANDONATO v2.2) + +> Abbandonato dal reset 2026-06-19: mockup mai arrivato, valore dubbio nel nuovo flusso. L'esigenza analytics è coperta da CLEAN-03 (fusione `/admin/analytics` nella dashboard, no fase dedicata). | ID | Requirement | Status | |----|-------------|--------| -| DASH-11 | La Dashboard admin mostra le statistiche di revenue mensile (ex `/admin/forecast`, calcolate da `project_offers`) | Blocked — attesa mockup dashboard utente | +| DASH-11 | La Dashboard admin mostra le statistiche di revenue mensile (ex `/admin/forecast`, calcolate da `project_offers`) | Dropped (v2.2 → CLEAN-03) | -## Proposal AI (v1) +## Proposal AI — versione v2.1 originale (SUPERSEDED da v2.2) + +> Ri-scopata dal reset 2026-06-19 nelle fasi v2.2 (PIPE/KB/AI/PUB) con il flusso chiaro + l'aggiunta dei transcript (che mancava). PROP-03 (Stripe Payment Link) e PROP-04 (auto-provisioning al "Vinto") restano backlog: non nel loop minimo, da rivalutare dopo R5. | ID | Requirement | Status | |----|-------------|--------| -| PROP-01 | L'admin avvia un builder AI che genera una proposta a partire da cliente + offerta(e) selezionata(e) + note extra fornite manualmente | Pending | -| PROP-02 | La pagina pubblica `/quote/[token]` è ridisegnata (HTML/CSS) per presentare la proposta generata | Pending | -| PROP-03 | Ogni offerta/preventivo ha un campo "link di pagamento" (Stripe Payment Link) mostrato come CTA nella pagina pubblica | Pending | -| PROP-04 | All'accettazione del preventivo, il sistema crea automaticamente cliente + progetto, copia le fasi dall'offerta e configura 1-4 pagamenti (ex-Phase 11 WIN-01..06) | Pending | -| PROP-05 | Il sistema invia via email (Resend) il link della proposta pubblica al lead (ex-Phase 12) | Pending | +| PROP-01 | L'admin avvia un builder AI che genera una proposta a partire da cliente + offerta(e) selezionata(e) + note extra fornite manualmente | Superseded → AI-01/AI-02 (v2.2) | +| PROP-02 | La pagina pubblica `/quote/[token]` è ridisegnata (HTML/CSS) per presentare la proposta generata | Superseded → PUB-01 (v2.2) | +| PROP-03 | Ogni offerta/preventivo ha un campo "link di pagamento" (Stripe Payment Link) mostrato come CTA nella pagina pubblica | Backlog (post-R5) | +| PROP-04 | All'accettazione del preventivo, il sistema crea automaticamente cliente + progetto, copia le fasi dall'offerta e configura 1-4 pagamenti (ex-Phase 11 WIN-01..06) | Backlog (post-R5) | +| PROP-05 | Il sistema invia via email (Resend) il link della proposta pubblica al lead (ex-Phase 12) | Superseded → PUB-03 (v2.2) | + +## v2.2 — Sales Loop: Lead → AI → Preventivo (ATTIVO) + +> Reset 2026-06-19. Il flusso commerciale articolato dall'utente sostituisce le fasi residue v2.1. Fasi eseguite in ordine R1→R5 (numerazione GSD continua: Phase 18→22). Le fasi 11/12/14 restano completate. + +### Cleanup & Consolidamento (Phase 18 / R1) + +| ID | Requirement | Status | +|----|-------------|--------| +| CLEAN-01 | La pagina Forecast (`/admin/forecast`) e la sua voce di sidebar sono rimosse | Pending | +| CLEAN-02 | Il quote builder manuale (`/admin/quotes/new`) e il suo entry point sono rimossi (superato dall'agente AI) | Pending | +| CLEAN-03 | Le statistiche di `/admin/analytics` sono fuse nella Dashboard `/admin` (vista unica); la rotta duplicata è eliminata | Pending | +| CLEAN-04 | Le fasi v2.1 residue (13/15/16/17) sono archiviate/ri-scopate nel planning | In corso (questo reset) | + +### Pipeline CRM Kanban (Phase 19 / R2) + +| ID | Requirement | Status | +|----|-------------|--------| +| PIPE-01 | I lead sono visualizzabili in una board Kanban stile Pipedrive con colonne per stage e drag-drop per cambiare stage | Pending | +| PIPE-02 | Spostare un lead nelle colonne "Vinto"/"Perso" è il cambio-stato manuale dell'esito | Pending | + +### Knowledge Base Cliente — Transcript (Phase 20 / R3) + +| ID | Requirement | Status | +|----|-------------|--------| +| KB-01 | Schema additivo per memorizzare transcript datati e multipli per lead/cliente | Pending | +| KB-02 | L'admin incolla ed elenca i transcript (storico ordinato per data) nel dettaglio lead/cliente | Pending | + +### Agente AI — Generazione preventivo (Phase 21 / R4) + +| ID | Requirement | Status | +|----|-------------|--------| +| AI-01 | L'admin seleziona cliente + offerta; l'agente AI (Claude) legge i transcript + i dati dell'offerta e genera una bozza di preventivo personalizzata | Pending | +| AI-02 | L'admin rivede ed edita la bozza generata prima di pubblicarla | Pending | + +### Pagina pubblica preventivo + email (Phase 22 / R5) + +| ID | Requirement | Status | +|----|-------------|--------| +| PUB-01 | La proposta generata è pubblicata come pagina pubblica HTML/CSS a `/preventivo/[slug]` (evolve la meccanica di `/quote/[token]`) | Pending | +| PUB-02 | Il cliente accetta/rifiuta dalla pagina; l'esito si riflette nel CRM (conferma vinto/perso manuale lato admin) | Pending | +| PUB-03 | Il link della proposta viene inviato al lead via email (Resend) | Pending | ## v2 Requirements (Deferred) @@ -101,23 +151,36 @@ Popolata dal roadmapper durante la creazione della roadmap. | OFFER-17 | Phase 12 | Complete | | OFFER-18 | Phase 12 | Complete | | OFFER-12 | Deferred (v2) | Rimandato 2026-06-14 | -| PROJ-06 | Phase 13 | Pending | -| PROJ-07 | Phase 13 | Pending | -| PROJ-08 | Phase 13 | Pending | -| PROJ-09 | Phase 13 | Pending | -| PROJ-10 | Phase 13 | Pending | +| PROJ-06 | Phase 13 | Congelato (v2.2) | +| PROJ-07 | Phase 13 | Congelato (v2.2) | +| PROJ-08 | Phase 13 | Congelato (v2.2) | +| PROJ-09 | Phase 13 | Congelato (v2.2) | +| PROJ-10 | Phase 13 | → CLEAN-01 | | CRM-08 | Phase 14 | Complete | | CRM-09 | Phase 14 | Complete | | CRM-10 | Phase 14 | Complete | | CRM-11 | Phase 14 | Complete | | CRM-12 | Phase 14 | Complete | -| DASH-11 | Phase 15 | Blocked | -| PROP-03 | Phase 16 | Pending | -| PROP-04 | Phase 16 | Pending | -| PROP-01 | Phase 17 | Pending | -| PROP-02 | Phase 17 | Pending | -| PROP-05 | Phase 17 | Pending | +| DASH-11 | Phase 15 | Dropped (→ CLEAN-03) | +| PROP-03 | Phase 16 | Backlog (post-R5) | +| PROP-04 | Phase 16 | Backlog (post-R5) | +| PROP-01 | Phase 17 | Superseded → AI-01/02 | +| PROP-02 | Phase 17 | Superseded → PUB-01 | +| PROP-05 | Phase 17 | Superseded → PUB-03 | +| CLEAN-01 | Phase 18 (R1) | Pending | +| CLEAN-02 | Phase 18 (R1) | Pending | +| CLEAN-03 | Phase 18 (R1) | Pending | +| CLEAN-04 | Phase 18 (R1) | In corso | +| PIPE-01 | Phase 19 (R2) | Pending | +| PIPE-02 | Phase 19 (R2) | Pending | +| KB-01 | Phase 20 (R3) | Pending | +| KB-02 | Phase 20 (R3) | Pending | +| AI-01 | Phase 21 (R4) | Pending | +| AI-02 | Phase 21 (R4) | Pending | +| PUB-01 | Phase 22 (R5) | Pending | +| PUB-02 | Phase 22 (R5) | Pending | +| PUB-03 | Phase 22 (R5) | Pending | --- *Requirements defined: 2026-06-13* -*Last updated: 2026-06-18 — Phase 12 complete: OFFER-11, OFFER-15, OFFER-16, OFFER-17, OFFER-18 → Complete* +*Last updated: 2026-06-19 — RESET v2.2 "Sales Loop": Phase 13 congelata, 15 abbandonata, 16/17 ri-scopate; nuovi requirements CLEAN/PIPE/KB/AI/PUB (Phase 18→22)* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index bfe85d3..e28af03 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -1,23 +1,32 @@ -# Roadmap: ClientHub v2.1 Offer Studio + Proposal AI +# Roadmap: ClientHub — v2.1 (chiuso) → v2.2 Sales Loop ## Overview **v2.0 (Phases 1–10, Complete)**: ClientHub è una suite operativa completa — catalogo servizi unificato, offerte con fasi, preventivo pubblico (`/quote/[token]`), CRM pipeline lead con activity log. Archiviato in `.planning/milestones/v2.0-ROADMAP.md`. -**v2.1 (Phases 11–17, Planning)**: Rifare la UX di catalogo/offerte in stile database-view (Notion-like), ristrutturare il workspace progetto (Preventivo → Servizi Attivi, rimozione Forecast), ricostruire il CRM in stile Attio/Pipedrive (inline edit, tag, fix bug residui), e chiudere il loop commerciale con un builder preventivi AI + invio email + auto-provisioning. Numerazione fasi: v2.0 ha chiuso a Phase 10; v2.1 parte da Phase 11. +**v2.1 (Phases 11–17) — PARZIALE / CHIUSO dal reset 2026-06-19**: ha consegnato Offer Studio (Phase 11 catalogo database-view + Phase 12 offer editor tier A/B/C) e CRM Attio-style (Phase 14). Le fasi residue **13/15/16/17 sono congelate/abbandonate/ri-scopate** (vedi sotto). + +**v2.2 (Phases 18–22, Sales Loop) — ATTIVO**: dopo che l'utente ha articolato il flusso commerciale reale (piano `.claude/plans/glittery-sprouting-pudding.md`), il focus diventa il **loop di vendita**: cleanup dei doppioni → pipeline CRM Kanban (Pipedrive-style) → knowledge base transcript per cliente → agente AI che genera il preventivo → pagina pubblica `/preventivo/[slug]` + email. Numerazione GSD continua: v2.2 parte da Phase 18. Le fasi R1–R5 mappano su Phase 18–22. ## Phases - [x] **Phase 11: Catalog Database-View UX & Legacy Consolidation** - Catalogo `services` come tabella con inline edit, tag multi-select, quick-add, ricerca istantanea; consolidamento `service_catalog`/`offer_services` → `services` -- [x] **Phase 12: Offer Editor — Tier A/B/C, Tag & Prezzo Pubblico** - Editor offerte completo: lista filtrabile + 3 tier (A/B/C) via matrice checkbox sui servizi `services`, totale live per tier, prezzo pubblico manuale, tag multi-dimensione, promessa di trasformazione (import CSV/Notion rimandato) (completed 2026-06-15) -- [ ] **Phase 13: Workspace — Servizi Attivi** - Tab "Preventivo" rimossa (UI-only), "Offerte" → "Servizi attivi" (one-shot/ricorrenti + tracking incassi mensili), rimozione pagina Forecast +- [x] **Phase 12: Offer Editor — Tier A/B/C, Tag & Prezzo Pubblico** - Editor offerte completo: lista filtrabile + 3 tier (A/B/C) via matrice checkbox sui servizi `services`, totale live per tier, prezzo pubblico manuale, tag multi-dimensione, promessa di trasformazione (completed 2026-06-18) +- [~] **Phase 13: Workspace — Servizi Attivi** - ❌ CONGELATA (reset 2026-06-19): tocca il post-vendita lasciato invariato; ripescabile in futuro - [x] **Phase 14: CRM Attio-style & Fix** - Redesign `/admin/leads` stile Attio/Pipedrive (inline edit + tag), fix FollowUpWidget IT / LeadForm types / SendQuoteModal rami irraggiungibili (completed 2026-06-14) -- [ ] **Phase 15: Dashboard Revenue Stats** - Dashboard admin mostra statistiche revenue mensile (ex `/admin/forecast`) da `project_offers` — **BLOCCATA**, attesa mockup utente -- [ ] **Phase 16: Proposal AI — Data Foundations & Auto-Provisioning** - Campo Stripe Payment Link su offerte/preventivi + auto-provisioning (client+progetto+fasi+pagamenti) all'accettazione -- [ ] **Phase 17: Proposal AI — Builder, Pagina Pubblica & Email** - Builder AI proposta da cliente+offerta+note, redesign `/quote/[token]`, invio email Resend con link proposta +- [~] **Phase 15: Dashboard Revenue Stats** - ❌ ABBANDONATA (reset 2026-06-19): mockup mai arrivato; analytics confluisce nella dashboard via CLEAN-03 +- [~] **Phase 16: Proposal AI — Data Foundations & Auto-Provisioning** - ❌ RI-SCOPATA in v2.2; Stripe Payment Link + auto-provisioning → backlog post-R5 +- [~] **Phase 17: Proposal AI — Builder, Pagina Pubblica & Email** - ❌ RI-SCOPATA in v2.2 (Phase 21/22 con transcript + flusso chiaro) +- [ ] **Phase 18 (R1): Cleanup & Consolidamento** - Rimuovi Forecast + quote builder manuale; fondi `/admin/analytics` nella dashboard; archivia fasi residue v2.1 +- [ ] **Phase 19 (R2): Pipeline CRM Kanban** - Board lead stile Pipedrive con colonne per stage + drag-drop; vinto/perso come cambio-colonna manuale +- [ ] **Phase 20 (R3): Knowledge Base Cliente (transcript)** - Schema additivo + UI per incollare transcript datati multipli per lead/cliente +- [ ] **Phase 21 (R4): Agente AI — generazione preventivo** - Builder: admin sceglie cliente+offerta, l'AI (Claude) legge transcript + offerta e genera bozza preventivo; admin revisiona +- [ ] **Phase 22 (R5): Pagina pubblica `/preventivo/[slug]` + email** - Pagina pubblica HTML/CSS, accept/reject → CRM, invio link via email (Resend) ## Phase Details +> **Reset 2026-06-19**: i dettagli delle fasi 13/15/16/17 sotto sono conservati per storico ma quelle fasi sono **cancellate/congelate** (vedi checklist Phases sopra e Progress sotto). Le fasi attive sono **18–22 (R1–R5)**, in fondo a questa sezione. + ### Phase 11: Catalog Database-View UX & Legacy Consolidation **Goal**: L'utente vede ed edita il catalogo servizi come una tabella stile database (Notion-like) — inline editing, tag multi-select, quick-add, ricerca istantanea — su un'unica tabella `services` consolidata senza perdita di dati legacy **Mode:** migration + ui @@ -137,14 +146,80 @@ Plans: **UI hint**: yes **Status**: Pending planning +--- + +## v2.2 — Sales Loop (fasi attive) + +### Phase 18 (R1): Cleanup & Consolidamento +**Goal**: Sgomberare il campo dai doppioni e dal peso morto prima di costruire il loop di vendita, senza perdere dati. +**Mode:** ui (solo rimozioni/rotte, nessun drop di tabelle) +**Depends on**: nessuna (può partire subito) +**Requirements**: CLEAN-01, CLEAN-02, CLEAN-03, CLEAN-04 +**Success Criteria** (what must be TRUE): + 1. La pagina Forecast (`/admin/forecast`) e la sua voce di sidebar non esistono più + 2. Il quote builder manuale (`/admin/quotes/new`) e il suo entry point non esistono più + 3. Le statistiche annuali di `/admin/analytics` sono visibili nella Dashboard `/admin` come vista unica; la rotta `/admin/analytics` è eliminata (nessun doppione) + 4. Le fasi v2.1 residue (13/15/16/17) sono marcate cancellate/congelate nel planning +**Status**: Pending planning — `/gsd-plan-phase 18` + +### Phase 19 (R2): Pipeline CRM Kanban +**Goal**: I lead si gestiscono in una board Kanban stile Pipedrive con drag-drop tra gli stage; vinto/perso è un cambio-colonna manuale. +**Mode:** ui +**Depends on**: Phase 14 (CRM lead esistente). Riusa `@dnd-kit` (pattern KanbanBoard progetti). +**Requirements**: PIPE-01, PIPE-02 +**Success Criteria** (what must be TRUE): + 1. I lead sono mostrati in colonne per stage (contacted → qualified → proposal_sent → negotiating → won/lost) con drag-drop che aggiorna `leads.status` + 2. La tabella inline-edit esistente resta disponibile come vista alternativa + 3. Spostare un lead su "Vinto"/"Perso" è l'azione manuale che ne registra l'esito +**Status**: Pending planning — `/gsd-plan-phase 19` + +### Phase 20 (R3): Knowledge Base Cliente (transcript) +**Goal**: Memorizzare i transcript datati delle call (multipli per lead/cliente) e mostrarli nel profilo, pronti per essere dati in pasto all'AI. +**Mode:** schema + ui +**Depends on**: Phase 14 (lead) / clienti. Migration a prod via SSH PRIMA del codice dipendente. +**Requirements**: KB-01, KB-02 +**Success Criteria** (what must be TRUE): + 1. Esiste uno schema additivo `client_transcripts` (lead_id/client_id, testo, data, titolo/tipo, created_at) + 2. L'admin incolla un transcript con data dal dettaglio lead/cliente + 3. I transcript sono elencati in ordine cronologico nel profilo +**Status**: Pending planning — `/gsd-plan-phase 20` + +### Phase 21 (R4): Agente AI — generazione preventivo +**Goal**: L'admin seleziona cliente + offerta; l'agente AI (Claude) legge i transcript + i dati dell'offerta e genera una bozza di preventivo personalizzata, che l'admin può rivedere ed editare. +**Mode:** ai + ui +**Depends on**: Phase 20 (transcript) + DB Offerte (Phase 11/12, fatto) +**Requirements**: AI-01, AI-02 +**Success Criteria** (what must be TRUE): + 1. Dal builder l'admin sceglie cliente + offerta e lancia la generazione + 2. L'AI produce una bozza di preventivo che riflette i transcript del cliente e i contenuti dell'offerta + 3. L'admin rivede/edita la bozza prima di pubblicarla +**Note**: decisioni di design AI (modello Claude, prompt, storage output) in fase di planning dedicata +**Status**: Pending planning — `/gsd-plan-phase 21` + +### Phase 22 (R5): Pagina pubblica `/preventivo/[slug]` + email +**Goal**: Pubblicare la proposta come pagina pubblica a `/preventivo/[slug]`, con accept/reject che si riflette nel CRM, e inviare il link via email. +**Mode:** ui +**Depends on**: Phase 21 (modello dati proposta). Evolve la meccanica di `/quote/[token]`. +**Requirements**: PUB-01, PUB-02, PUB-03 +**Success Criteria** (what must be TRUE): + 1. La proposta generata è visibile come pagina pubblica HTML/CSS a `/preventivo/[slug]` + 2. Il cliente accetta/rifiuta dalla pagina; l'esito è disponibile lato admin per la conferma vinto/perso nel CRM + 3. Il link della proposta viene inviato al lead via email (Resend) +**Status**: Pending planning — `/gsd-plan-phase 22` + ## Progress | Phase | Plans | Status | Completed | |-------|-------|--------|-----------| | 11. Catalog Database-View UX & Legacy Consolidation | 4/4 | ✅ Done | 2026-06-13 | -| 12. Offer Editor — Tier A/B/C, Tag & Prezzo Pubblico | 5/5 | Complete | 2026-06-18 | -| 13. Workspace — Servizi Attivi | — | Pending planning | — | -| 14. CRM Attio-style & Fix | 3/3 | Complete | 2026-06-14 | -| 15. Dashboard Revenue Stats | — | Blocked (mockup utente) | — | -| 16. Proposal AI — Data Foundations & Auto-Provisioning | — | Pending planning | — | -| 17. Proposal AI — Builder, Pagina Pubblica & Email | — | Pending planning | — | +| 12. Offer Editor — Tier A/B/C, Tag & Prezzo Pubblico | 5/5 | ✅ Done | 2026-06-18 | +| 13. Workspace — Servizi Attivi | — | ❌ Congelata (v2.2) | — | +| 14. CRM Attio-style & Fix | 3/3 | ✅ Done | 2026-06-14 | +| 15. Dashboard Revenue Stats | — | ❌ Abbandonata (v2.2) | — | +| 16. Proposal AI — Data Foundations & Auto-Provisioning | — | ❌ Ri-scopata (v2.2) | — | +| 17. Proposal AI — Builder, Pagina Pubblica & Email | — | ❌ Ri-scopata (v2.2) | — | +| 18 (R1). Cleanup & Consolidamento | — | Pending planning | — | +| 19 (R2). Pipeline CRM Kanban | — | Pending planning | — | +| 20 (R3). Knowledge Base Cliente (transcript) | — | Pending planning | — | +| 21 (R4). Agente AI — generazione preventivo | — | Pending planning | — | +| 22 (R5). Pagina pubblica preventivo + email | — | Pending planning | — | diff --git a/.planning/STATE.md b/.planning/STATE.md index ac47300..51e547b 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,17 +1,17 @@ --- gsd_state_version: 1.0 -milestone: v2.1 -milestone_name: milestone -status: completed -stopped_at: "Phase 12 complete — Offer Editor (Tier A/B/C, Tag & Prezzo Pubblico) eseguita e verificata. Prossima: Phase 13 (Workspace Servizi Attivi) o Phase 14 (CRM)." -last_updated: "2026-06-18T15:23:00.000Z" -last_activity: 2026-06-18 -- Phase 12 execution complete (5/5 piani, build gate passed, OFFER-11/15/16/17/18 verified) +milestone: v2.2 +milestone_name: Sales Loop +status: planning +stopped_at: "RESET 2026-06-19 → milestone v2.2 'Sales Loop'. v2.1 chiuso (Offer Studio Phase 11+12, CRM Phase 14 fatti; 13/15/16/17 congelate/abbandonate/ri-scopate). Prossima: Phase 18 (R1) Cleanup." +last_updated: "2026-06-19T11:30:00.000Z" +last_activity: 2026-06-19 -- Reset strategico v2.2 (piano approvato + planning docs aggiornati). Pronto per /gsd-plan-phase 18 progress: - total_phases: 7 - completed_phases: 3 - total_plans: 12 - completed_plans: 12 - percent: 100 + total_phases: 5 + completed_phases: 0 + total_plans: 0 + completed_plans: 0 + percent: 0 --- # Project State @@ -22,16 +22,19 @@ See: .planning/PROJECT.md (updated 2026-06-13) **Core value:** Il cliente apre il link e vede esattamente a che punto è il suo progetto, cosa deve ancora succedere e cosa ha già approvato — senza dover scrivere email per chiedere aggiornamenti. -**Current focus:** Phase 13 (Workspace Servizi Attivi) o Phase 14 (CRM Attio-style) — entrambe eseguibili. Phase 15 resta bloccata su mockup utente. Phase 12 (Offer Editor) completata e verificata. +**Current focus:** Milestone **v2.2 "Sales Loop"** (reset 2026-06-19). North-star: lead in pipeline Kanban → transcript call → agente AI genera preventivo → pagina pubblica `/preventivo/[slug]` → vinto/perso. Piano: `.claude/plans/glittery-sprouting-pudding.md`. Prossimo passo: pianificare Phase 18 (R1) Cleanup. ## Current Position -Phase: 13 (next) — ready to plan/execute +Phase: 18 (R1) Cleanup & Consolidamento — ready to plan Plan: — -Status: Phase 12 complete. Pronto per /gsd-execute-phase 13 o /gsd-execute-phase 14. -Last activity: 2026-06-18 -- Phase 12 execution complete (OFFER-11/15/16/17/18 all verified PASS) +Status: Reset v2.2 enacted nei planning docs. Pronto per `/gsd-plan-phase 18`. +Last activity: 2026-06-19 -- Reset strategico v2.2: ROADMAP/REQUIREMENTS/STATE aggiornati; fasi 13/15/16/17 chiuse, nuove 18–22 (R1–R5) -Progress: [██████████] 100% +Progress (v2.2): [░░░░░░░░░░] 0% — 0/5 fasi + +### Fasi completate (v2.1, storico) +Phase 11 (catalogo), Phase 12 (offer editor), Phase 14 (CRM Attio) — consegnate e in prod. 55 servizi reali + tag offerta caricati. ## Performance Metrics @@ -66,7 +69,8 @@ Progress: [██████████] 100% Decisions are logged in PROJECT.md Key Decisions table. Recent decisions affecting current work: -- v2.1 roadmap: Offer Studio (Phases 11-15) sequenced before Proposal AI (Phases 16-17) — clean/fast data UX before the AI builder +- **[RESET 2026-06-19] Milestone v2.2 "Sales Loop"** sostituisce le fasi residue v2.1. Decisioni bloccate: (1) URL preventivo = `/preventivo/[slug]` pubblico; (2) tagliare Forecast + quote builder manuale + Phase 15, fondere `/admin/analytics` nella dashboard; (3) portale post-vendita resta core, non si tocca (Phase 13 congelata); (4) agente AI = "io scelgo l'offerta, l'AI personalizza" leggendo i transcript, provider Claude. Piano: `.claude/plans/glittery-sprouting-pudding.md` +- [SUPERSEDED dal reset] v2.1 roadmap: Offer Studio (Phases 11-15) sequenced before Proposal AI (Phases 16-17) — clean/fast data UX before the AI builder - Phase 11 bundles catalog database-view UX (OFFER-07..10) with legacy consolidation (OFFER-13) since the new UX should be built on a single unified `services` table, not on top of legacy `service_catalog`/`offer_services` - Phase 13 (Workspace — Servizi Attivi) is independent of Phases 11/12 — can execute in parallel order if useful, but numbered after for narrative flow - Phase 15 (Dashboard Revenue Stats / DASH-11) is isolated and BLOCKED on user-provided mockup; no other phase depends on it — can be deferred/skipped without blocking Phase 16/17 @@ -84,9 +88,10 @@ None yet. ### Blockers/Concerns -- **Phase 15 (DASH-11)**: Blocked pending dashboard mockup from user. Do not start until mockup provided; safe to skip in execution order without impacting Phase 16/17. -- **Migrations**: Per CLAUDE.md, every phase touching schema (11 legacy consolidation, 13 recurring-revenue tracking, 16 payment link + provisioning) MUST have its migration applied to prod via SSH+docker exec BEFORE pushing dependent code. -- Phase 11 Plan 1 (11-01): DB-execution steps blocked — DATABASE_URL (178.104.27.55:54321) firewalled, reachable only via SSH+docker exec on the production host (out of scope for this agent's authorization). Required before OFFER-13/D-02 are satisfied: run scripts/push-11-tags-migration.ts, scripts/migrate-services.ts, scripts/validate-services-migration.ts, scripts/migrate-tags.ts, scripts/validate-tags-migration.ts via an SSH-accessible session (see 11-01-SUMMARY.md 'Issues Encountered' for exact commands). OFFER-13 requirement NOT yet marked complete. +- **Migrations (sempre valido)**: ogni fase con schema (es. Phase 20 transcript) DEVE avere la migration applicata a prod via tunnel SSH (`ssh -L 54321:localhost:54321 root@178.104.27.55`, `DATABASE_URL` riscritto a `127.0.0.1:54321`) PRIMA di pushare il codice dipendente. `drizzle-kit generate` rotto → SQL a mano. +- **Phase 21 (AI)**: nessuna integrazione AI ancora nel codice. Servirà chiave Anthropic API in env (Coolify) + decisioni modello/prompt in fase di planning. +- **Debito tecnico (non bloccante)**: tabelle legacy `service_catalog`/`offer_services`/`offer_micro_services` restano come deadweight; `createService`/`serviceSchema` dead code in `catalog/actions.ts`. Script di validazione consolidamento Phase 11 (migrate/validate) mai eseguiti ma OFFER-13 è di fatto soddisfatto (catalogo `services` in uso, 55 servizi reali caricati). +- **[RISOLTO]** ~~Phase 15 bloccata su mockup~~ → fase abbandonata dal reset 2026-06-19. ## Deferred Items