Back to home
Project

Smart Portfolio, my pilot project in AI

Last updated: September 15, 2026

Work in progress: both the project and this article keep evolving.

This site is not just my portfolio: it is the pilot project I used to train myself in artificial intelligence. Every feature was a chance to study a piece of this field and put it to the test on a real product, from the first prototype all the way to production. It taught me a great deal, and this page tells how.

Tech stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Java 21
  • Spring Boot
  • Spring AI
  • PostgreSQL
  • pgvector
  • Vercel

Why a pilot project

I have been working on enterprise architectures in Java and Spring Boot for years, but I wanted to understand generative AI by building with it, not just by reading about it. I needed a project small enough to run on my own and real enough to force me to face the actual problems: answer quality, cost, security and maintenance.

The portfolio was the perfect candidate. It is about me, so I can tell right away whether the assistant answers well. And it is public, so every decision has to hold up in production.

The AI assistant and RAG

The heart of the project is the chat: an assistant that answers questions about my experience and skills using the content of this portfolio. To build it I studied Retrieval-Augmented Generation. Documents are split into chunks, turned into embeddings and stored in PostgreSQL with pgvector. For every question the backend retrieves the most relevant passages and hands them to the model as context.

This is where I learned the most: how much the chunking strategy and metadata affect answer quality, how to write prompts that keep the model grounded in facts, and how to manage conversation memory.

Many LLM providers, one interface

The backend, written in Java 21 with Spring Boot and Spring AI, is not tied to a single model. A shared abstraction lets me switch between OpenAI, Anthropic, Gemini and OpenRouter through configuration, so I can compare models on cost, latency and quality without touching the chat code.

Admin area, security and reliability

The knowledge base is managed from a restricted area: I upload Markdown documents, update or delete them, and the system indexes them again. Access goes through GitHub OAuth and JWT tokens, and is limited to authorized accounts.

Exposing an LLM to the public also means protecting it. Chat requests go through per-IP rate limiting, and from the admin area I can switch the assistant off within seconds if the provider has issues.

Frontend, languages and transparency

The frontend is built with Next.js 16, React and Tailwind CSS, and deployed on Vercel. The site is bilingual, in Italian and English: the language is picked from your browser preferences and remembered between visits.

Bringing AI into a public product also means following its rules. The chat states from the start that it is an artificial intelligence system, as the AI Act requires, and asks visitors not to enter personal data.

Agent-driven development

Smart Portfolio was also my testing ground for AI-assisted development. I worked with coding agents at every stage, from brainstorming and planning to implementation and code review, and many of the ideas born here found their way into agentic-feature-factory.

What I am building now

The project is still evolving. I am working on improving retrieval quality and on using these pages to tell the story of my other projects too. This article will grow along with the site.