Statistik
Auswertung all deiner Bewerbungen — Verlauf, Erfolgsquote und Verteilungen.
<%= total %> Bewerbungen
Noch keine Bewerbungen erfasst
Sobald du Bewerbungen anlegst, erscheint hier deine komplette Auswertung.
<%= total %>
Bewerbungen gesamt
<%= kpis.gesendet %>
Versendet
<%= kpis.eingestellt %>
Einstellungen
<%= kpis.erfolgsquote %>% Erfolgsquote
<%= kpis.gespraech %>
Vorstellungsgespräche
<%= kpis.absagen %>
Absagen
<%= kpis.antwortquote %>% Antwortquote
<%= kpis.avgProMonat %>
Ø pro Monat
über <%= kpis.monateAktiv %> Monate
Bewerbungen pro Monat
Wie viele Bewerbungen in jedem Monat erstellt wurden.
<% const maxM = Math.max(1, ...byMonth.map(m => m.count)); const VB = 1000, BH = 320; // viewBox dimensions const padL = 28, padR = 10, padB = 26, padT = 10; const innerW = VB - padL - padR; const innerH = BH - padT - padB; const slot = byMonth.length ? innerW / byMonth.length : innerW; const bw = Math.min(slot * .62, 40); const monthName = (ym) => { const [, mo] = ym.split('-'); return ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'][Number(mo)-1] || ''; }; const yearOf = (ym) => ym.split('-')[0]; let prevYear = ''; %>Verteilung nach Status
Aktueller Status jeder Bewerbung.
<% if (byStatus.length) { const maxS = Math.max(...byStatus.map(s => s.count)); const statusColor = (s) => ({ 'Entwurf':'#94a3b8','Gesendet':'#3b82f6','Eingangsbestätigung':'#0ea5e9','In Bearbeitung':'#6366f1', 'Interessiert':'#8b5cf6','Telefonat':'#f472b6','Warten auf Rückmeldung':'#a3a3a3','Warten auf meine Antwort':'#a3a3a3', 'Vorstellungsgespräch':'#10b981','Vertragsverhandlung':'#84cc16','Absage':'#f43f5e','Absage von meiner Seite':'#f97316', 'Einstellung':'#059669','Keine Rückmeldung':'#cbd5e1' }[s] || '#2563eb'); %> <% byStatus.forEach(s => { const pct = Math.round((s.count / maxS) * 100); %> <% }); %> <% } else { %>Keine Daten
<% } %>
Verteilung nach Bewerbungsart
Über welchen Kanal die Bewerbung lief.
<% if (byArt.length) { const maxA = Math.max(...byArt.map(a => a.count)); const artColor = ['#2563eb','#0ea5e9','#10b981','#8b5cf6','#f59e0b','#f43f5e','#6366f1','#ec4899','#14b8a6']; %> <% byArt.forEach((a, i) => { const pct = Math.round((a.count / maxA) * 100); %> <% }); %> <% } else { %>Keine Daten
<% } %>
Bewerbungs-Funnel
Wie viele Bewerbungen jede Stufe je erreicht haben.
<% const topF = Math.max(1, funnel[0].count); const fColor = ['#2563eb','#3b82f6','#0ea5e9','#10b981','#059669']; funnel.forEach((f, i) => { const pct = Math.round((f.count / topF) * 100); const conv = i === 0 ? '' : ' · ' + Math.round((f.count / Math.max(1, funnel[0].count) * 100)) + '%'; %>
<%= f.label %>
<%= f.count %>
Top Standorte
Wo du dich am häufigsten bewirbst.
<% if (byOrt.length) { const maxO = Math.max(...byOrt.map(o => o.count)); const ortColor = ['#6366f1','#0ea5e9','#10b981','#f59e0b','#f43f5e','#8b5cf6','#14b8a6','#ec4899','#3b82f6','#a3a3a3']; %> <% byOrt.forEach((o, i) => { const pct = Math.round((o.count / maxO) * 100); %> <% }); %> <% } else { %>Keine Standorte erfasst
<% } %>
Letzte Aktivität
Die jüngsten Statusänderungen und E-Mails deiner Bewerbungen. Alle
<% if (aktivitaet.length) { const statusColor = (s) => ({ 'Entwurf':'#94a3b8','Gesendet':'#3b82f6','Eingangsbestätigung':'#0ea5e9','In Bearbeitung':'#6366f1', 'Interessiert':'#8b5cf6','Telefonat':'#f472b6','Warten auf Rückmeldung':'#a3a3a3','Warten auf meine Antwort':'#a3a3a3', 'Vorstellungsgespräch':'#10b981','Vertragsverhandlung':'#84cc16','Absage':'#f43f5e','Absage von meiner Seite':'#f97316', 'Einstellung':'#059669','Keine Rückmeldung':'#cbd5e1' }[s] || '#2563eb'); const emailColor = (a) => a.direction === 'out' ? '#0ea5e9' : '#3b82f6'; %>
<% aktivitaet.forEach(a => {
const accent = a.typ === 'email' ? emailColor(a) : statusColor(a.status);
let titel = '', titelSub = '';
if (a.bewerbung_id) { titel = a.firma || '(ohne Firma)'; titelSub = a.stelle || ''; }
else if (a.typ === 'email') { titel = a.direction === 'out' ? ('An: ' + (a.to_addr || '?')) : (a.from_addr || a.subject || 'E-Mail'); }
else { titel = 'Gelöschte Bewerbung'; }
%>
<% }); %>
<% } else { %>
<% if (a.bewerbung_id) { %>
<%= titel %>
<% if (titelSub) { %>· <%= titelSub %><% } %>
<% } else { %>
<%= titel %>
<% } %>
<%= a.status %>
<% if (a.datum) { %>· <%= a.datum %><% } %>
<% if (a.kommentar) { %>· <%= a.kommentar %><% } %>
Noch keine Aktivitäten — Statusänderungen und E-Mails erscheinen hier.
<% } %>