Skip to main content
Post categories: Learn

From thesis to product: what i learned while developing a RAG chatbot at Intré

3 August 2026 - 4 minutes reading

How can we make the knowledge produced by Intré’s Guilds over the years easily accessible?

This question inspired Francesco Romeo’s Master’s thesis project in Computer Science, which he developed during his internship at Intré.

The answer took the form of an integrated RAG chatbot within i3Guild, the application Intré uses to propose, organise and document its Guilds. For those unfamiliar with them, a Guild is a working group made up of people who share an interest they want to explore further—whether that means studying a new framework, developing a project, working towards a certification, or something else.

The project involved much more than simply integrating a Large Language Model. It required designing a complete system capable of retrieving reliable information from the company’s knowledge base while meeting specific security, performance and maintainability requirements.

In this article, Francesco Romeo describes the process he followed, the technological choices he made and what he learned while turning an experimental thesis into a project designed for a real-world environment. His work was supported by Marco Loregian, Yordan Asenov, Andrea Caglio and Luca Giudici.

Making Guild knowledge searchable: The Origins of the RAG chatbot

At the beginning of his internship, Francesco had a clear goal: to work on an experimental thesis that would allow him to tackle a real-world project rather than a purely academic exercise.

It all started with a simple question: “How can we make the knowledge produced by Intré’s Guilds easily searchable?”

Over the years, i3Guild has collected a wealth of information, including project descriptions, objectives, outcomes, participants, articles and technical documentation. A valuable knowledge base, but one spread across databases, written content and different types of materials, making it not always easy to explore.

The goal was therefore to build an assistant capable of answering users’ questions in natural language—a tool that would make it possible to quickly retrieve past experiences, find completed projects and make it easier to propose new Guilds.

What initially seemed like a conventional Artificial Intelligence chatbot, however, soon proved to be a far more complex design challenge.

Why an LLM alone was not enough

Large Language Models are highly effective at producing fluent and coherent responses, but they have a clear limitation when used in a business environment: they are not familiar with the organisation’s internal information.

Relying exclusively on a generative model could have produced plausible answers, but not necessarily accurate, up-to-date or verifiable ones.

For this reason, the project was developed using the Retrieval-Augmented Generation (RAG) paradigm. This approach keeps the knowledge base separate from the language model: before generating an answer, the system searches the company’s document repository for the most relevant information and uses it as context for the response.

This makes it possible to:

  • use up-to-date information;
  • reduce the risk of hallucinations;
  • trace answers back to their sources;
  • update the available knowledge without having to retrain the model.

The challenge, therefore, was not simply to generate text, but to retrieve the right information and provide it to the model as effectively as possible.

Designing an architecture integrated with i3Guild, not just a RAG chatbot

During the internship, the work went far beyond selecting a language model. The most interesting part was designing a complete architecture capable of integrating with an existing application while meeting the company’s technological requirements.

The architecture clearly separates the system’s different responsibilities:

  • PostgreSQL remains the authoritative source of data;
  • an ingestion pipeline prepares and indexes the information;
  • Qdrant handles vector search;
  • Haystack orchestrates the RAG pipeline;
  • FastAPI exposes the functionality through a microservice;
  • Ollama enables the language model to run locally;
  • JavaScript integrates the chatbot directly into the i3Guild interface.

Separating the different components makes the system easier to maintain, update and evolve. It also makes it possible to modify individual parts of the architecture without having to redesign the entire solution.

Designing around real-world constraints

Working with real-world constraints was one of the aspects that struck Francesco most during his internship at Intré.

In academia, it is easy to imagine ideal infrastructures. In a business environment, however, every decision must take into account existing systems, available resources and the requirements the solution will need to meet in everyday use.

In the specific case of the RAG chatbot for i3Guild, the system had to:

  • keep data within the company’s infrastructure;
  • operate without relying on external cloud services;
  • run on hardware with limited resources;
  • integrate with the technological ecosystem already in place.

These requirements influenced every design decision, from selecting open-weight models and exploring local inference to quantisation, which became a significant part of the thesis.

Francesco was therefore able to experience first-hand how, in software development, the best solution is almost never the one that uses the most advanced technology available. Instead, it is the one that strikes the right balance between response quality, performance, costs, reliability and ease of management.

When a thesis becomes a real-world project

Looking back on this experience, the most important outcome of the internship was not simply completing a thesis, but contributing to the development of a project designed for use in a real-world environment.

For Francesco, working at Intré meant engaging every day with software developers, software architects and other professionals. This ongoing dialogue turned the project into an opportunity for both technical development and personal growth.

Developing an experimental thesis within a company means stepping beyond a purely academic setting and tackling real-world problems, where every design decision can affect the people who will use the software.

This is perhaps the most important lesson Francesco takes away from the experience: technology is essential, but it becomes truly useful when it solves a real problem and fits naturally into people’s everyday work.

Article written by