Dashboard · <%= current_project.name %>

Cosa devo fare oggi per trasformare i prospect in clienti?

<%= link_to "Apri pagina Oggi →", today_path, class: "#{btn_primary} w-full sm:w-auto" %>
<% if @goal %>
<%= @goal.name %>
<%= @goal.current_value.to_i %> / <%= @goal.target_value.to_i %>
<%= @goal.metric_label %> · <%= format_date(@goal.start_date) %> – <%= format_date(@goal.end_date) %>
<%= progress_bar(@goal.progress_percentage, color: "bg-emerald-400") %>
<% end %>

Cosa devo fare oggi

In ritardo (<%= @overdue_tasks.size %>)

<%= render "shared/task_list", tasks: @overdue_tasks %>

Da fare oggi (<%= @today_tasks.size %>)

<%= render "shared/task_list", tasks: @today_tasks %>

Prossimi (<%= @upcoming_tasks.size %>)

<%= render "shared/task_list", tasks: @upcoming_tasks %>
<% [ ["Prospect totali", @metrics.prospect_count], ["Contattati", @stage_counts["contacted"]], ["Risposte", @stage_counts["replied"]], ["Interessati", @stage_counts["interested"]], ["Demo/Trial", @stage_counts["demo_trial"]], ["Primo utilizzo", @stage_counts["first_use"]], ["Proposte", @stage_counts["proposal"]], ["Clienti acquisiti", @stage_counts["won"]], ["Persi", @stage_counts["lost"]], ["Valore WON", format_money(@metrics.won_value)], ["Pipeline aperta", format_money(@metrics.open_pipeline_value)], ["Task scaduti", @metrics.overdue_tasks_count] ].each do |label, value| %>
<%= label %>
<%= value %>
<% end %>

Funnel commerciale

<% @funnel.each_with_index do |step, idx| %> <% if step[:rate] %>
↓ <%= step[:rate] %>%
<% end %>
<%= step[:label].upcase %> <%= step[:count] %>
<% end %>

KPI processo

Giorni medi contatto → WON
<%= @metrics.avg_days_to_won || "—" %>
Giorni medi dall'ultima attività
<%= @metrics.avg_days_since_last_activity || "—" %>
Prospect senza attività > 7gg
<%= @metrics.prospects_without_activity_over_7_days %>
Opp. senza next action
<%= @metrics.opportunities_without_next_action %>
Demo/Trial → WON
<%= @metrics.demo_to_won_conversion %>%
First Use → WON
<%= @metrics.first_use_to_won_conversion %>%
ARPA (WON)
<%= format_money(@metrics.arpa) %>
Pipeline value
<%= format_money(@metrics.open_pipeline_value) %>

Cosa sbloccare adesso

Non è un errore. Sono i buchi che bloccano la vendita: un contatto da chiamare, un’email da mandare, un follow-up mancante. Se una lista è vuota, su quel punto sei a posto.

<% if @attention[:to_send_count].to_i.positive? %>

Campagna lancio · email da inviare (<%= @attention[:to_send_count] %>)

Le società sono censite e in stato Da contattare. Il passo successivo è mandare le email del test A/B (10–15 al giorno, A e B insieme). Non serve ancora mettere un prezzo o creare un follow-up: quelli arrivano dopo la risposta.

<%= link_to "Apri la lista da inviare →", organizations_path, class: "font-medium text-zinc-900 underline dark:text-amber-50" %>

<% end %>

Interessati senza follow-up

Hanno detto sì in linea: manca la prossima chiamata/email in agenda.

<%= render "dashboard/attention_list", items: @attention[:interested_without_followup], empty: "Nessuno: nessun interessato scoperto." %>

Opportunità ferme da oltre 7 giorni

Lo stage non si è mosso: va rilanciato o chiuso come perso.

<%= render "dashboard/attention_list", items: @attention[:stalled_opportunities], empty: "Nessuna: nessuna trattativa ferma." do |opp| %> <%= link_to "#{opp.organization.name} (#{opp.days_in_current_stage}gg)", opp.organization, class: "hover:underline" %> <% end %>

Task scaduti

Promemoria già passati: completarli o ripianificarli.

<%= render "dashboard/attention_list", items: @attention[:overdue_tasks], empty: "Nessuno: nessun task in ritardo." do |task| %> <%= link_to "#{task.organization.name}: #{task.title}", task.organization, class: "hover:underline" %> <% end %>

Senza contatto

Manca una persona a cui scrivere o telefonare.

<%= render "dashboard/attention_list", items: @attention[:organizations_without_contacts], empty: "Nessuna: tutte hanno un contatto." do |org| %> <%= link_to org.name, org, class: "hover:underline" %> <% end %>

Senza valore (già in trattativa)

Dopo il primo contatto serve un importo stimato (Light/Full…) per la pipeline.

<%= render "dashboard/attention_list", items: @attention[:opportunities_without_value], empty: "Nessuna in trattativa senza valore." %>

Senza prossima azione (già in trattativa)

Dopo l’invio o la risposta manca un task in agenda: la trattativa si ferma.

<%= render "dashboard/attention_list", items: @attention[:opportunities_without_next_action], empty: "Nessuna in trattativa senza next action." %>