Wireframe UX — Schermate Principali
Da 14 fogli a 5 moduli. Ogni schermata è progettata per massimizzare chiarezza e minimizzare click. L'utente vede solo quello che gli serve.
📊 Dashboard Principale
Modulo 2
Setter + Closer
Setter vede solo i propri KPI in alto. Closer vede il proprio in basso. Il direttore vede tutto con filtro per commerciale. Zero input manuale.
🔄 CRM Pipeline
Modulo 1
Inbound / Outbound
3 azioni quotidiane: sposta lead → aggiungi nota → controlla budget. Drag & drop per cambiare stage. I KPI si aggiornano da soli.
👤 Scheda Cliente
Modulo 1
Anagrafica + Pagamenti
€ 14.000 / € 42.000
Prossima scadenza: 15 Maggio 2026
Scheda pulita: nome, canale, prodotto, stage visibili subito. Pagamenti in sezione espandibile. Alert automatici su ritardi. Timeline completa.
📞 KPI Setter
Modulo 2
Auto-aggiornamento
→
Il setter NON compila KPI. Ogni azione nel CRM (spostare lead in "non in target", "appuntamento fissato") aggiorna i contatori automaticamente.
🎯 Budget & Obiettivi
Modulo 3
Semaforo
Configurazione una volta per prodotto. Il sistema calcola il funnel inverso: da vendite → call necessarie. Semaforo verde/giallo/rosso per stato budget.
⚙️ Admin Configurazione
Modulo 5
Multi-tenant
Commerciale, Prodotti, Canali, Aliquote. Ogni azienda ha il proprio spazio isolato. Questo è il modulo che rende il software multi-tenant.
🗺️ Mappa Flusso Utente per Ruolo
UX Flow
Lead Ingresso
→
Qualifica (Call/Chat)
→
Non in Target
/
Appuntamento Fissato
⚡ Ogni spostamento stage → KPI si aggiorna automaticamente
Discovery Prevista
→
Presenza Disco
→
Demo Fissata
→
Contratto Firmato
📊 Conversione Setter→Closer tracciata automaticamente (win rate per canale)
Vista Team
→
Filtro Commerciale
→
Budget vs Reale
→
Analytics Canale
👁️ Alert coaching automatico quando venditore esce dai parametri (AI Call Analysis)
Struttura Database — 5 Moduli Core
Architettura relazionale semplificata. 12 tabelle principali con relazioni chiare, indici ottimizzati e supporto multi-tenant nativo.
CRM & Pipeline
4 Tabelle
Campo
Tipo
Descrizione
leads
id PK
UUID
ID univoco lead
company_id FK
UUID
Tenant (azienda)
nome
VARCHAR
Nome e cognome
email
VARCHAR
Email cliente
telefono
VARCHAR
Numero telefono
canale_id FK
UUID
Canale acquisizione
stage
ENUM
Stato pipeline IDX
setter_id FK
UUID
Commerciale setter
closer_id FK
UUID
Commerciale closer
created_at
TIMESTAMP
Data creazione
lead_stage_history
id PK
UUID
ID storico
lead_id FK
UUID
Lead riferimento
from_stage
ENUM
Stage precedente
to_stage
ENUM
Stage nuovo
changed_at
TIMESTAMP
Data cambio
changed_by FK
UUID
Utente che ha cambiato
payments
id PK
UUID
ID pagamento
lead_id FK
UUID
Lead riferimento
rata_numero
INT
Numero rata (1-12)
importo
DECIMAL
Importo rata
data_scadenza
DATE
Data scadenza IDX
stato
ENUM
pagato/in_attesa/ritardo
data_pagamento
DATE
Data effettiva pagamento
notes
id PK
UUID
ID nota
lead_id FK
UUID
Lead riferimento
contenuto
TEXT
Testo nota
created_by FK
UUID
Autore nota
created_at
TIMESTAMP
Data creazione
Dashboard KPI
2 Tabelle
Campo
Tipo
Descrizione
kpi_setter (VIEW)
company_id
UUID
Tenant
setter_id
UUID
Commerciale
mese
INT
Mese riferimento
call_chat
INT
Contatti totali (auto)
non_in_target
INT
Lead scartati (auto)
demo_fissate
INT
Demo programmate (auto)
presenze_demo
INT
Demo presenti (auto)
kpi_closer (VIEW)
company_id
UUID
Tenant
closer_id
UUID
Commerciale
mese
INT
Mese riferimento
discovery_previste
INT
Disco programmate
contratti_firmati
INT
Vendite chiuse (auto)
win_rate
DECIMAL
% chiusura (calcolato)
fatturato_mese
DECIMAL
€ fatturato (calcolato)
Budget & Obiettivi
2 Tabelle
Campo
Tipo
Descrizione
budget_targets
id PK
UUID
ID target
company_id FK
UUID
Tenant
prodotto_id FK
UUID
Prodotto
mese
INT
Mese (1-12) IDX
anno
INT
Anno IDX
vendite_target
INT
Vendite obiettivo
scontrino_medio
DECIMAL
Valore medio vendita
fatturato_target
DECIMAL
€ target (vendite × sc.)
conversion_rates
company_id FK
UUID
Tenant
canale_id FK
UUID
Canale
stage_from → stage_to
DECIMAL
% conversione storica
Modulo Finanziario
2 Tabelle
Campo
Tipo
Descrizione
costs
id PK
UUID
ID costo
company_id FK
UUID
Tenant
lead_id FK
UUID
Progetto (se diretto)
tipo
ENUM
diretto / indiretto
categoria
VARCHAR
Categoria costo
importo
DECIMAL
Importo €
data
DATE
Data costo
indirect_costs_allocation
mese
INT
Mese ripartizione
costo_indiretto_tot
DECIMAL
Totale costi indiretti
progetti_attivi
INT
N. progetti del mese
quota_per_progetto
DECIMAL
Costo_ind / progetti
Configurazione Admin
2 Tabelle
Campo
Tipo
Descrizione
companies
id PK
UUID
ID azienda (tenant)
nome
VARCHAR
Nome azienda
piva
VARCHAR
Partita IVA
is_active
BOOLEAN
Stato attivazione
users / products / channels
users
—
commerciale, setter, closer, admin
products
—
nome, prezzo, costo_base
channels
—
Instagram, TikTok, Referral, Sito...
pipeline_stages
—
config. custom per azienda
🔗 Relazioni tra Tabelle
companies
id (PK)
nome
piva
nome
piva
→
leads
id (PK)
company_id (FK)
stage
canale_id (FK)
company_id (FK)
stage
canale_id (FK)
→
kpi_views
(auto-calcolate)
da lead_stage_history
raggruppate per mese
da lead_stage_history
raggruppate per mese
→
budget
vs reale
conversion_rates
semaforo
conversion_rates
semaforo
→
costi
diretti → lead_id
indiretti → ripartiti
marginalità = auto
indiretti → ripartiti
marginalità = auto
Automazioni Fase A — Sprint 0-4
Ogni automazione è trigger-driven: un'azione nel CRM produce un aggiornamento o una notifica automatica. Zero input manuale sui KPI.
🔄 Auto-aggiornamento KPI al cambio stage
CRITICA
Lead cambia stage nel CRM
→
Contatore KPI si aggiorna in tempo reale
Trigger:
INSERT su lead_stage_history (from_stage → to_stage)
Azione:
Aggiorna kpi_setter o kpi_closer VIEW con nuovo conteggio
Metriche:
Call/chat, non in target, demo fissate, presenze demo, contratti
Sprint:
Sprint 2 — KPI Engine
📊 Dashboard Budget vs Reale auto-calcolata
CRITICA
Contratto firmato (stage → chiuso)
→
Dashboard aggiorna fatturato vs budget con semaforo
Trigger:
to_stage = 'contratto_firmato' su qualsiasi lead
Azione:
Aggiorna fatturato_mese → confronta con budget_targets → calcola semaforo (🟢≥90%, 🟡70-89%, 🔴<70%)
Filtro:
Per prodotto, per mese, per commerciale (vista team o personale)
Sprint:
Sprint 2 — KPI Engine
📧 Brevo API — Email al cambio stage
MEDIA
Lead → stage "appuntamento fissato"
→
Email di conferma inviata via Brevo al cliente
Trigger:
to_stage IN ('demo_fissata', 'discovery_fissata', 'appuntamento_fissato')
Azione:
POST /contacts a Brevo con template appropriato (conferma appuntamento)
Template:
3 template: conferma disco, conferma demo, follow-up post chiamata
Sprint:
Sprint 4 — Automazioni Base
💬 WhatsApp template al cambio stage
MEDIA
Lead → stage specifico
→
WhatsApp template inviato (via Brevo/API WhatsApp)
Trigger:
Stage cambio con flag "invia_whatsapp" = true nella configurazione
Azione:
Invio messaggio WhatsApp con template preconfigurato (ricorda appuntamento, follow-up)
Nota:
Richiede WhatsApp Business API o integrazione Brevo WhatsApp
Sprint:
Sprint 4 — Automazioni Base
⏰ Alert pagamento in ritardo
CRITICA
data_scadenza superato + stato ≠ 'pagato'
→
Alert nella dashboard + notifica commerciale
Trigger:
Cron job giornaliero: SELECT payments WHERE data_scadenza < NOW() AND stato = 'in_attesa'
Azione:
Aggiorna stato → 'ritardo', mostra alert rosso in scheda cliente, notifica al closer
Visibilità:
Scheda cliente (sezione espandibile), Dashboard (widget pagamenti in ritardo)
Sprint:
Sprint 3 — Financial Module
💰 Calcolo marginalità automatica
CRITICA
Costo diretto assegnato a lead
→
Marginalità = (Importo - Costi Diretti - Quota Indiretta) ricalcolata
Trigger:
INSERT/UPDATE su costs WHERE lead_id IS NOT NULL
Azione:
Marginalità = Importo_totale - SUM(costi_diretti) - (costi_indiretti_mese / n_progetti_attivi)
Indiretti:
Ripartizione automatica su tutti i progetti attivi del mese
Sprint:
Sprint 3 — Financial Module
📈 Conversione Setter → Closer tracciata
MEDIA
Lead passa da stage setter a stage closer
→
Funnel end-to-end visibile con % conversione per percorso
Trigger:
to_stage IN ('discovery', 'demo') dopo che setter ha qualificato
Azione:
Traccia percorso: setter_id → closer_id, calcola win rate, pipeline velocity per canale
Output:
Report "KPI Aziendali" — quale canale porta soldi, non solo lead
Sprint:
Sprint 2 — KPI Engine
📋 Email recap giornaliero
BASSA
Fine giornata (cron 20:00)
→
Email riepilogo attività giornaliere a setter/closer/direttore
Trigger:
Cron job giornaliero alle 20:00
Setter riceve:
N. call/chat, appuntamenti fissati, non in target, numeri falsi del giorno
Closer riceve:
Disco fatte, demo fatte, contratti chiusi, incassi del giorno
Sprint:
Sprint 4 — Automazioni Base
⚠️ Alert campione non significativo
BASSA
Calcolo win rate con < X contratti
→
Flag "non statisticamente affidabile" invece di numero fuorviante
Trigger:
Query win rate WHERE COUNT(contratti) < soglia_minima (es. 5)
Azione:
Mostra "⚠️ Campione insufficiente" invece di percentuale non affidabile
Perché:
Pipeline velocity di €619K con 1 contratto non è statisticamente significativa
Sprint:
Sprint 2 — KPI Engine
🔔 Alert coaching AI (Fase B)
MEDIA
AI Call Analysis: venditore esce dai parametri
→
Alert al direttore commerciale + raccomandazione coaching
Trigger:
AI score venditore < soglia O obiezioni non gestite correttamente
Azione:
Notifica al direttore, flag nella scheda cliente, raccomandazione automatica su cosa migliorare
Nota:
Questa è la feature differenziante (Fase B, Sprint 7) — richiede Recall.ai + AssemblyAI + Claude API
Sprint:
Sprint 7 — Fase B: AI Call Analysis