Credits and licences
This site is a teaching project by Prof. Giuseppe Bosi, Master's-level degree in Electronic Engineering (5-year Italian Laurea, EQF level 7) and Teacher of Computer Science and Technology. It shows, with an example you can try, how a chat assistant works inside a website: it searches the documents, works out availability, books only after the person confirms, and refuses to do what is not its job.
How they can be reused
- Texts and content of these pages (specialties, services, information pages, explanations): Creative Commons Attribution 4.0 (CC BY 4.0) licence. They can be copied, adapted and reused, commercially too, crediting «Giuseppe Bosi».
- Code of the site, the assistant and the widget: MIT licence. It can be used, modified and redistributed, keeping the copyright notice.
- The names of the clinic and the doctors and the prices are made up for the example: any resemblance to real clinics or people is coincidental.
What it is made with
All the software used is free or open source. For each piece, the link goes to the official documentation.
- Next.js and React
- the site, the pages and the booking form
- Vercel AI SDK
- chat streaming and the tools the assistant can call
- PostgreSQL with pgvector
- the database: services, shifts, bookings and the index for search by meaning
- Drizzle ORM
- the database tables and migrations
- Transformers.js (multilingual-e5-small model)
- embeddings computed on the server, with no external services
- OpenRouter
- the language model that writes the answers, through free models
- Tailwind CSS, shadcn/ui and AI Elements
- the look of the pages and of the chat
- Lucide
- the icons
- Bodoni Moda and Hanken Grotesk
- the fonts, built into the site at compile time: the browser contacts no third-party services
- Playwright
- the automated tests: booking, cancellation, widget, assistant limits
- Docker and Caddy
- deployment: two containers on a server in Europe, automatic HTTPS
Further reading
- How this demo works — what is real, what is made up, what the assistant does not do.
- Privacy — what data passes through here, where it goes and how long it stays.
- The tutorial — the code explained step by step on the twin site, and how to put the same assistant on another site.
- www.giuseppebosi.com — the author's website.