AlbertaOS
.txt
LEGGIMI
.pdf
CV.pdf
CRM-FAMA.app

CRM FAMA in produzione · v96

CRM per un polo di orientamento universitario. Prima i dati di una stessa persona vivevano in sistemi diversi che non si parlavano, quindi nessuno aveva il quadro completo di una pratica. Il CRM li tiene in un posto solo, dal modulo compilato sul sito fino all'immatricolazione confermata dall'ente, e tiene insieme più enti formativi con cataloghi e regole diverse.

rivisitazione · clicca una scheda per farla avanzare nella pipeline
Lead
Trattativa
Immatricolati

Da dove entra una richiesta

Da sette strade: il modulo di contatto del sito, il calcolatore delle rate, i test di orientamento, l'inserimento a mano, un bot Telegram, una conversazione social trasformata in richiesta, e le automazioni. Tutte e sette passano dallo stesso controllo duplicati, perché il doppione si crea sempre all'ingresso e correggerlo dopo costa dieci volte tanto.

Il controllo distingue due livelli. Codice fiscale, email e telefono dicono che è la stessa persona. Il nome invece avvisa e non blocca: gli omonimi esistono, e la stessa persona che si informa due volte a mesi di distanza su corsi diversi non è un errore da correggere.

Riconoscere che due cose sono la stessa cosa

Il pezzo più difficile di questo progetto non è il CRM, è capire quando due record sono la stessa cosa. La stessa persona arriva dal sito con un indirizzo email e dal portale dell'ente con un altro. Lo stesso corso cambia codice ogni anno accademico. La stessa pratica ha identificativi diversi a seconda di dove la si guarda. Buona parte delle release di questi mesi è esattamente quel lavoro: un caso reale alla volta, decidere quando due cose vanno unite e quando invece è giusto che restino separate.

L'estensione per il browser

Gli enti che erogano i corsi hanno ciascuno il proprio portale, e nessuno di questi offre un modo automatico per sapere com'è andata una pratica: l'unico modo è aprire la scheda e guardarla. Ho sviluppato un'estensione per Chrome che raccoglie quel dato mentre si visualizza la scheda nel portale, così che i dati arrivino nel CRM senza che nessuno li debba inserire manualmente.

La sincronizzazione automatica è volutamente limitata: aggiorna solo quello che esiste già e non crea mai niente. Aprire una scheda per curiosità non deve produrre record nuovi.

Quando una pratica si ferma

Il sistema se ne accorge da solo e avvisa chi la segue, poi allarga l'avviso a chi ha la responsabilità. Le soglie si configurano dal pannello, tranne quella dell'ultimo gradino: chi lavora una pratica non deve poter allungare da solo il tempo prima che se ne accorga qualcun altro. Il cronometro non riparte dalla creazione, ma dall'ultimo segno di vita registrato nel sistema.

Come lavoro su questo progetto

Ogni intervento nasce da un caso reale segnalato dal cliente. Prima di scriverlo lo misuro sui dati veri, e lo rilascio solo se non peggiora quello che già funziona.

Il primo esempio riguarda il misurare. Ogni anno gli enti ripubblicano gli stessi corsi con un codice nuovo, quindi il sistema deve capire da solo che il corso appena caricato è la nuova edizione di uno che c'è già. Ho scritto la funzione che li accoppia, confrontando nome, ente e tipo di corso, e prima di collegarla a qualcosa l'ho fatta girare sul catalogo vero: su sette coppie proposte, quattro erano sbagliate. Il sistema accoppiava corsi che si somigliavano nel nome ma era una regola fin troppo fragile. Ho quindi aggiunto tre controlli e alla prova successiva le coppie proposte erano tutte giuste.

Il secondo riguarda il non peggiorare. Un'altra segnalazione mi aveva portato a una regola sbagliata, e per correggerla bastava una riga. Quella riga però avrebbe creato un problema più grande di quello che risolveva: il sistema avrebbe perso il collegamento con le pratiche già archiviate e le avrebbe registrate una seconda volta. Ho corretto la regola solo dopo aver aggiunto la protezione che mantiene quel collegamento.

Cosa c'è sotto

Cinque ruoli e ventidue permessi che si accendono uno per uno, con l'override sul singolo utente che vince sempre sul ruolo. Un motore di automazioni configurabile dal pannello, ventitré eventi, con la prova a vuoto che mostra destinatari e testo senza mandare niente. Le automazioni che devono scattare una volta sola sono protette da un blocco atomico, non da un controllo che può arrivare tardi. Posta e documenti passano da Microsoft Graph, la chat da Messenger e Instagram Direct. Il calcolo delle provvigioni segue le regole configurate dal cliente, con una guardia che impedisce il doppio pagamento.

In produzione, con oltre 90 release documentate da aprile 2026. Non è consegnato e chiuso: è in manutenzione e sviluppo continui.

90+release documentate
564test automatici
51modelli di dominio
php 8.3laravel 11alpine.jsmysql 8microsoft graphmeta apichrome extension