← Tutte le idee Studio e formazione

job-ops

Cercare lavoro con metodo: una pipeline per tracciare e analizzare le candidature

Cosa fa

Un sistema da installare sul proprio server per tracciare, analizzare e farsi aiutare nelle candidature di lavoro, con lo stesso metodo che si usa per gestire i progetti.

Come guadagna

Progetto open source su GitHub con oltre 4.000 stelle, che non dichiara incassi. Ha licenza non chiara: prendi spunto dall'idea, ma non riusare il codice senza chiedere agli autori. Idee nostre per guadagnare: versione online in abbonamento per chi cerca lavoro.

Rendilo tuo

  • Statistiche che motivano: quante candidature servono per un colloquio nel tuo settore.
  • Per i centri per l'impiego e le scuole di formazione.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Ricerca come un Progetto": tratta la ricerca di lavoro come un progetto di vendita: candidature come trattative, fonti tracciate, tassi di conversione a ogni fase, e numeri chiari su cosa funziona. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con il metodo e il prezzo
2. Pipeline: candidature a colonne per fase
3. Fonti: da dove arrivano le opportunità (portali, contatti, candidature spontanee)
4. Numeri: tassi di conversione per fase e per fonte
5. Attività della settimana: obiettivi e promemoria

Stile: da cruscotto di vendita: sfondo bianco, indaco #4338CA, verde #16A34A, grigio per le chiuse, carattere "Inter", grafico a imbuto in evidenza. Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "candidature": azienda, ruolo, fonte, fase attuale, retribuzione indicata, note
- "passaggi": ogni cambio di fase con data, per calcolare tempi e conversioni
- "obiettivi": candidature e contatti da fare a settimana

Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi dati
- il piano non si modifica dal browser

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. L'imbuto delle candidature

Ogni candidatura passa per le fasi: inviata → risposta → primo colloquio → secondo colloquio → offerta → accettata (oppure "chiusa" in qualsiasi momento, con il motivo). Ogni passaggio si registra con la data.

Dai passaggi si calcola l'imbuto (codice nei Dettagli tecnici): su 100 candidature, quante hanno risposta, quante arrivano al colloquio, quante a un'offerta; e lo stesso per ogni fonte. Così si vede, per esempio, che le candidature tramite contatti personali hanno il 30% di colloqui e quelle dai portali il 4%.

Tempo medio tra una fase e l'altra, per sapere quando sollecitare.

4. Obiettivi della settimana

L'utente si dà obiettivi settimanali di attività (candidature mirate, messaggi a contatti, eventi): il sito mostra l'avanzamento e un riepilogo il venerdì.

Esportazione dei dati in CSV e promemoria per i solleciti dopo 7 giorni senza risposta.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 5 € al mese. Gratis l'utente ha: 20 candidature e niente statistiche per fonte. Con il piano Pro sblocca: candidature illimitate, imbuto per fonte, tempi tra le fasi, obiettivi e promemoria.

A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Numeri: inserisci 10 candidature di prova con fasi diverse e controlla a mano le percentuali dell'imbuto.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Imbuto per fonte

Per ogni fonte conta quante candidature hanno raggiunto ogni fase almeno una volta, e calcola la percentuale rispetto alle inviate.

create table candidature (
  id uuid primary key default gen_random_uuid(),
  utente_id uuid not null references auth.users(id) on delete cascade,
  azienda text not null,
  ruolo text not null,
  fonte text not null,                  -- es. 'portale', 'contatto', 'spontanea', 'recruiter'
  fase text not null default 'inviata'
);

create table passaggi (
  candidatura_id uuid not null references candidature(id) on delete cascade,
  utente_id uuid not null references auth.users(id) on delete cascade,
  fase text not null check (fase in ('inviata', 'risposta', 'colloquio_1', 'colloquio_2', 'offerta', 'accettata', 'chiusa')),
  data timestamptz not null default now(),
  primary key (candidatura_id, fase)
);

alter table candidature enable row level security;
create policy "le mie righe" on candidature
  for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);

alter table passaggi enable row level security;
create policy "le mie righe" on passaggi
  for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);

select c.fonte,
       count(distinct c.id) as inviate,
       round(100.0 * count(distinct p.candidatura_id) filter (where p.fase = 'risposta') / count(distinct c.id), 1) as perc_risposta,
       round(100.0 * count(distinct p.candidatura_id) filter (where p.fase = 'colloquio_1') / count(distinct c.id), 1) as perc_colloquio,
       round(100.0 * count(distinct p.candidatura_id) filter (where p.fase = 'offerta') / count(distinct c.id), 1) as perc_offerta
from candidature c left join passaggi p on p.candidatura_id = c.id
where c.utente_id = auth.uid()
group by c.fonte
order by perc_colloquio desc;

Pezzi comuni a tutti i progetti

Glossario

CSV
Un file di testo con i dati separati da virgole, che si apre con Excel.
Imbuto (funnel)
Lo schema delle fasi da attraversare: a ogni fase qualcuno si ferma, e si misura quanti passano.
Tasso di conversione
La percentuale di candidature che passa da una fase alla successiva.