Project Thumbnail

VEXPA - AI Knowledge Bot

As in many companies, in ours the most relevant information is spread across many different sources: internal documentation, technical articles, databases, external websites, and more. This dispersion turns simple tasks — like finding a precise technical answer — into slow and inefficient processes.

In the specific case of the Technical Support Service, this meant a significant waste of time searching for information that already existed but was poorly organized. There was a clear need: to access relevant answers quickly, without having to browse through multiple systems or rely on informal knowledge shared by colleagues.


The idea behind VEXPA was simple but powerful: to build a tool based on large language models (LLMs) that could answer natural language questions using both internal and external sources — going beyond the data the model was originally trained on.

In essence, the goal was to expand the capabilities of ChatGPT so it could interact with information not included in its training: internal documents, specific technical articles, and support websites. This would allow anyone on the team to get quick, relevant, and context-aware answers — in any language.


The tool was developed in Python, using several key components:

LLM Model: The language engine is a large language model instance, set up to respond in a conversational way.

LlamaIndex: Used to connect the LLM with external data sources, indexing content and building semantic structures for reasoning.

Requests + Beautiful Soup: Used to scrape content from our partner’s support website and our internal Knowledge Center, extracting both structured and unstructured data.

Streamlit: Chosen to quickly build a simple internal web interface, allowing any team member to use VEXPA without technical knowledge.


General Architecture

Extraction of external and internal sources (HTML, PDFs, etc.).

Content indexing with LlamaIndex.

User interface built with Streamlit.

Conversational back-end powered by the LLM, responding based on the indexed context.


Technical Challenges

Hallucination control: We added traceability mechanisms to provide links to the sources, allowing users to verify the accuracy of the system’s answers.

Real-time performance: The indexing was optimized to return results in just a few seconds, even with multiple sources.

Multilingual support: The tool was tested in several languages to ensure consistent answers beyond Spanish.


Results or Impact

Although still in beta, VEXPA has proven useful from day one:

Time savings: Technicians now get answers in seconds, without having to manually search through dozens of documents or websites.

Smarter access to internal knowledge: The tool gives new life to existing documentation, making it easier to reuse.

Multilingual support: Team members can ask questions in their native language, improving accessibility.

Foundation for future improvements: By logging questions and answers, the system helps identify gaps in current documentation and opportunities for improvement.


Lessons Learned

Technically:

I learned how to connect LLMs with external data using LlamaIndex, which introduced me to the world of Retrieval-Augmented Generation (RAG).

I also improved my skills in web scraping with Python and in semantic content indexing.


Professionally:

This project showed me how important it is to build solutions with the end user in mind, not just to meet technical goals.

Collecting ongoing feedback from the team was essential for quick iterations and early error detection.


Personally:

Managing the project from start to finish helped me improve my planning, task prioritization, and technical decision-making.

I also confirmed that a project can be useful even in an early stage, as long as you launch quickly and listen to your users.

Recent Projects

About Me

about-me-user-img

Francesco Esposito

Data Scientist

Data enthusiast turning messy information into meaningful insights. I mix creativity, code, and curiosity to make data work.