Files
clienthub/.planning/ROADMAP.md
T

18 KiB
Raw Blame History

Roadmap: ClientHub — v2.1 (chiuso) → v2.2 Sales Loop

Overview

v2.0 (Phases 110, 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 1117) — 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 1822, 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 R1R5 mappano su Phase 1822.

Phases

  • 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_servicesservices
  • 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
  • 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 - 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: Cleanup & Consolidamento - Rimuovi Forecast + quote builder manuale; fondi /admin/analytics nella dashboard; archivia fasi residue v2.1
  • Phase 19: Pipeline CRM Kanban - Board lead stile Pipedrive con colonne per stage + drag-drop; vinto/perso come cambio-colonna manuale
  • Phase 20: Knowledge Base Cliente - Schema additivo + UI per incollare transcript datati multipli per lead/cliente
  • Phase 21: Agente AI — generazione preventivo - Builder: admin sceglie cliente+offerta, l'AI (Claude) legge transcript + offerta e genera bozza preventivo; admin revisiona
  • Phase 22: Pagina pubblica preventivo + 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 1822 (R1R5), 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 Depends on: Phase 10 (CRM Pipeline, ultima fase v2.0) Requirements: OFFER-07, OFFER-08, OFFER-09, OFFER-10, OFFER-13 Success Criteria (what must be TRUE):

  1. L'utente edita inline ogni cella del catalogo services (click sulla cella → edit → invio salva) senza apertura di modali
  2. L'utente assegna tag multi-select a servizi/offerte, creando nuovi tag al volo senza uscire dalla tabella
  3. L'utente aggiunge un nuovo servizio tramite riga vuota in fondo alla tabella (nome + invio)
  4. L'utente filtra/cerca servizi e offerte istantaneamente (ricerca client-side, nessun reload)
  5. I dati legacy di service_catalog e offer_services sono consolidati in services senza perdita (migration additiva, audit trail migrated_from/migrated_id) Plans: 4 plans Plan list:
  • 11-01-PLAN.md
  • 11-02-PLAN.md
  • 11-03-PLAN.md
  • 11-04-PLAN.md UI hint: yes Status: Complete (2026-06-13) — migration 0007 (services.fase) applicata in prod, commit pushato su gitea/main

Phase 12: Offer Editor — Tier A/B/C, Tag & Prezzo Pubblico

Goal: L'admin crea e modifica offerte complete da una lista filtrabile: editor con 3 tier (A/B/C) composti via matrice di checkbox dai servizi del catalogo unificato services, totale servizi live per tier, prezzo pubblico manuale per tier, tag multi-dimensione (categoria/ticket/tipo/obiettivo) e promessa di trasformazione strutturata. I servizi disponibili nella matrice sono filtrati per categoria offerta (entry/signature/retainer), designazione già impostata sul servizio a livello di catalogo. Mode: ui + schema Depends on: Phase 11 (tabella services unificata + sistema tag polimorfico) Requirements: OFFER-11, OFFER-15, OFFER-16, OFFER-17, OFFER-18 Success Criteria (what must be TRUE):

  1. L'admin compone un'offerta a 3 tier (A/B/C) assegnando i servizi del catalogo services tramite matrice di checkbox; il totale servizi di ogni tier si aggiorna live
  2. Ogni offerta ha tag su 4 dimensioni (categoria, ticket, tipo, obiettivo) creabili al volo, riusando il sistema tag di Phase 11
  3. Per ogni tier l'admin imposta un "prezzo pubblico" manuale, distinto e indipendente dal totale dei servizi
  4. Ogni offerta ha una promessa di trasformazione strutturata (Cliente Ideale / Risultato / tempo / Pain / Metodo)
  5. La lista offerte è filtrabile per categoria e supporta l'archiviazione (mostra/nascondi archiviate) Note: Import CSV/Notion (ex OFFER-12) spostato a fase futura su decisione utente (2026-06-14, "per ora saltiamo") — vedi REQUIREMENTS.md Plans: 5 plans Plan list: Wave 1
  • 12-01-PLAN.md — Schema: offer_macros/offer_micros additive columns (category, ticket, is_archived, transformation promise, tier_letter, public_price) + offer_tier_services junction table, migration 0008 + idempotent push script Wave 2 (blocked on Wave 1 completion)
  • 12-02-PLAN.md — BLOCKING checkpoint: apply migration 0008 to production database (SSH+docker exec, manual) Wave 3 (blocked on Wave 2 — prod migration applied before schema-dependent code)
  • 12-03-PLAN.md — Query layer (getOfferEditorData/getOfferListCards/getOfferFieldOptions) + server actions (saveOfferEditor/toggleOfferArchived/tag CRUD/createOfferMacro) Wave 4 (blocked on Wave 3 completion)
  • 12-04-PLAN.md — Offer list page redesign: category filter chips, archive toggle, card grid, "+ Nuova Offerta" CTA
  • 12-05-PLAN.md — Offer editor detail page: tags (4 dimensions), services matrix (tier A/B/C checkboxes + live totals), prezzo pubblico, promessa di trasformazione, Salva/Annulla/Archivia UI hint: yes — riferimento mockup utente 2026-06-14 (lista card per categoria + editor con matrice servizi×tier) Status: Planned (2026-06-14) — ready for /gsd-execute-phase 12

Phase 13: Workspace — Servizi Attivi

Goal: Il workspace progetto sostituisce le tab "Preventivo"/"Offerte"/"Forecast" con un'unica tab "Servizi attivi" che traccia servizi one-shot e ricorrenti con incassi mensili, senza perdere accepted_total/quote_items Mode: ui + schema Depends on: Phase 5 (project_offers), Phase 9 (flusso accepted_total via quote) Requirements: PROJ-06, PROJ-07, PROJ-08, PROJ-09, PROJ-10 Success Criteria (what must be TRUE):

  1. La tab "Preventivo" è rimossa dal workspace progetto (solo UI — quote_items resta intatta, accepted_total resta editabile via tab Pagamenti)
  2. La tab "Offerte" diventa "Servizi attivi" e mostra tutte le offerte assegnate al progetto (project_offers)
  3. L'utente marca ogni "servizio attivo" come one-shot o ricorrente mensile
  4. Per i servizi ricorrenti, l'utente registra in quali mesi è stata incassata la fattura (schema nuovo, additivo)
  5. La pagina "Forecast" e la relativa voce di sidebar sono rimosse Plans: TBD UI hint: yes Status: Pending planning

Phase 14: CRM Attio-style & Fix

Goal: La tabella lead (/admin/leads) è ridisegnata in stile Attio/Pipedrive — inline editing dei campi principali e tag multi-select — e i bug residui del modulo CRM (FollowUpWidget non in italiano, LeadForm con type-relaxation, SendQuoteModal con rami irraggiungibili) sono risolti Mode: ui Depends on: Phase 10 (CRM Pipeline base) Requirements: CRM-08, CRM-09, CRM-10, CRM-11, CRM-12 Success Criteria (what must be TRUE):

  1. La tabella lead supporta inline editing dei campi principali (status, next_action, ecc.) senza apertura di modale
  2. L'utente assegna tag multi-select ai lead, creando nuovi tag al volo
  3. Il FollowUpWidget è interamente in italiano, coerente col resto dell'app
  4. Il form lead (LeadForm) valida i campi senza workaround di type-relaxation su react-hook-form
  5. Il flusso SendQuoteModal (preventivo esistente vs nuovo) non contiene rami di codice irraggiungibili Plans: 5/5 plans complete Plans: Wave 1
  • 14-01-PLAN.md — Data-layer foundation: getLeadsWithTags/getLeadFieldOptions query helpers + updateLeadField/addLeadTag/removeLeadTag/renameLeadTag server actions (requireAdmin-guarded)
  • 14-03-PLAN.md — Bug fixes: FollowUpWidget Italian translation (CRM-10), LeadForm typed useForm (CRM-11), SendQuoteModal dead branch removal (CRM-12)

Wave 2 (blocked on Wave 1 completion)

  • 14-02-PLAN.md — LeadTable raw-table rewrite (inline edit + status dropdown + tag multi-select), LeadsSearch instant filter, page wiring, LeadDetail tags UI hint: yes — riferimento design Pipedrive/Attio (confermato dall'utente 2026-06-13) Status: Complete (2026-06-14) — 5/5 success criteria verified, code review 0 critical/6 warnings/3 info

Phase 15: Dashboard Revenue Stats

Goal: La Dashboard admin mostra le statistiche di revenue mensile (ex /admin/forecast), calcolate da project_offers Mode: ui Depends on: Phase 13 (modello dati Servizi attivi) Requirements: DASH-11 Success Criteria (what must be TRUE):

  1. La Dashboard admin mostra un breakdown di revenue mensile calcolato da project_offers Plans: TBD UI hint: yes Status: Blocked — attesa mockup dashboard dall'utente (isolata/skippabile, non blocca Phase 16/17)

Phase 16: Proposal AI — Data Foundations & Auto-Provisioning

Goal: Ogni offerta/preventivo ha un campo link di pagamento Stripe mostrato come CTA pubblica, e all'accettazione del preventivo il sistema crea automaticamente cliente + progetto, copia le fasi dall'offerta e configura 1-4 pagamenti Mode: schema + automation Depends on: Phase 9 (flusso accettazione preventivo), Phase 13 (Servizi attivi come target del provisioning) Requirements: PROP-03, PROP-04 Success Criteria (what must be TRUE):

  1. Ogni offerta/preventivo ha un campo "link di pagamento" (Stripe Payment Link) mostrato come CTA nella pagina pubblica
  2. All'accettazione del preventivo, il sistema crea automaticamente cliente + progetto, copia le fasi dall'offerta e configura 1-4 pagamenti Plans: TBD UI hint: yes Status: Pending planning

Phase 17: Proposal AI — Builder, Pagina Pubblica & Email

Goal: Un builder AI genera una proposta a partire da cliente + offerta(e) selezionata(e) + note extra; la pagina pubblica /quote/[token] è ridisegnata; il link della proposta viene inviato via email (Resend) al lead Mode: ai + ui Depends on: Phase 16 Requirements: PROP-01, PROP-02, PROP-05 Success Criteria (what must be TRUE):

  1. L'admin avvia un builder AI che genera una proposta a partire da cliente + offerta(e) selezionata(e) + note extra fornite manualmente
  2. La pagina pubblica /quote/[token] è ridisegnata (HTML/CSS) per presentare la proposta generata
  3. Il sistema invia via email (Resend) il link della proposta pubblica al lead Plans: TBD UI hint: yes Status: Pending planning

v2.2 — Sales Loop (fasi attive)

Phase 18: 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 Plans: 3 plans Plan list:
  • 18-01-PLAN.md — Rimozione Forecast + Quote Builder manuale (CLEAN-01, CLEAN-02)
  • 18-02-PLAN.md — Fusione analytics nella Dashboard, eliminazione rotta /admin/analytics (CLEAN-03)
  • 18-03-PLAN.md — Verifica CLEAN-04 planning docs + build check + checkpoint visuale Status: Complete (2026-06-19) — CLEAN-01..04 verificati, build verde

Phase 19: 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 Plans: 1 plan Plan list:
  • 19-01-PLAN.md — LeadsKanbanBoard + LeadsViewToggle + page wiring (PIPE-01, PIPE-02) Status: Complete (2026-06-19) — board 6 colonne, drag-drop persistente, toggle Lista/Kanban, search integrata

Phase 20: Knowledge Base Cliente

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: 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: Pagina pubblica preventivo + 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 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 3/3 Done 2026-06-19
19 (R2). Pipeline CRM Kanban 1/1 Done 2026-06-19
20 (R3). Knowledge Base Cliente (transcript) Pending planning
21 (R4). Agente AI — generazione preventivo Pending planning
22 (R5). Pagina pubblica preventivo + email Pending planning