Smart Portfolio, il mio progetto pilota nell'AI
Ultimo aggiornamento: 15 settembre 2026
Work in progress: il progetto e questo articolo sono in continua evoluzione.
Questo sito non è solo il mio portfolio: è il progetto pilota con cui mi sono formato nell'intelligenza artificiale. Ogni funzionalità è stata l'occasione per studiare un pezzo di questo mondo e metterlo alla prova su un prodotto vero, dal primo prototipo fino alla produzione. Con lui ho imparato moltissimo, e questa pagina racconta come.
Stack tecnologico
- Next.js
- React
- TypeScript
- Tailwind CSS
- Java 21
- Spring Boot
- Spring AI
- PostgreSQL
- pgvector
- Vercel
Perché un progetto pilota
Da anni lavoro su architetture enterprise in Java e Spring Boot, ma l'AI generativa volevo capirla costruendola, non solo leggendone. Mi serviva un progetto abbastanza piccolo da seguire da solo e abbastanza reale da costringermi ad affrontare i problemi veri: qualità delle risposte, costi, sicurezza e manutenzione.
Il portfolio era il candidato perfetto. Parla di me, quindi posso capire subito se l'assistente risponde bene. Ed è pubblico, quindi ogni scelta deve reggere in produzione.
L'assistente AI e la RAG
Il cuore del progetto è la chat: un assistente che risponde a domande sulle mie esperienze e competenze usando i contenuti di questo portfolio. Per costruirlo ho studiato la Retrieval-Augmented Generation. I documenti vengono divisi in chunk, trasformati in embedding e salvati in PostgreSQL con pgvector. A ogni domanda il backend recupera i passaggi più rilevanti e li passa al modello come contesto.
È qui che ho imparato di più: quanto la strategia di chunking e i metadati incidano sulla qualità delle risposte, come scrivere prompt che tengano il modello ancorato ai fatti e come gestire la memoria della conversazione.
Più provider LLM, una sola interfaccia
Il backend, scritto in Java 21 con Spring Boot e Spring AI, non dipende da un singolo modello. Un'astrazione comune permette di passare da OpenAI ad Anthropic, Gemini o OpenRouter cambiando la configurazione, così posso confrontare i modelli su costo, latenza e qualità senza toccare il codice della chat.
Area admin, sicurezza e affidabilità
La base di conoscenza si gestisce da un'area riservata: carico documenti Markdown, li aggiorno o li elimino, e il sistema li indicizza di nuovo. L'accesso avviene con GitHub OAuth e token JWT, ed è limitato agli account autorizzati.
Esporre un LLM al pubblico significa anche proteggerlo. Le richieste alla chat passano da un rate limiting per indirizzo IP, e dall'area admin posso disattivare l'assistente in pochi secondi se il provider ha problemi.
Frontend, lingue e trasparenza
Il frontend è costruito con Next.js 16, React e Tailwind CSS ed è pubblicato su Vercel. Il sito è bilingue, in italiano e inglese: la lingua viene scelta in base alle preferenze del browser e ricordata tra una visita e l'altra.
Integrare l'AI in un prodotto pubblico vuol dire anche rispettarne le regole. La chat dichiara fin dall'inizio di essere un sistema di intelligenza artificiale, come richiesto dall'AI Act, e invita a non inserire dati personali.
Sviluppo guidato dagli agenti
Smart Portfolio è stato anche il mio banco di prova per lo sviluppo assistito dall'AI. Ho lavorato con agenti di coding in ogni fase, dal brainstorming alla pianificazione, dall'implementazione alla code review, e molte idee nate qui sono confluite in agentic-feature-factory.
Cosa sto costruendo ora
Il progetto è ancora in evoluzione. Sto lavorando per migliorare la qualità del retrieval e per raccontare in queste pagine anche gli altri miei progetti. Questo articolo crescerà insieme al sito.