Paolo Ronco
PORTFOLIO
The WordPress AI Chatbot that I built was born from a very concrete question:Can I turn a site into something that can be queried?
Don't look. To question.The difference is subtle but fundamental.
When someone lands on a technical website and wants to understand what you've done, they have to piece together the story by reading articles, connecting skills, and drawing on experience. It's a manual process. The chatbot takes action exactly here: it makes it possible to ask direct questions about what's been published and get answers based solely on that content.
It's not a generic helper. It's a semantic layer on top of WordPress.
Operation is divided into two completely separate moments: data preparation and querying.
There preparation phase It happens through a dedicated workflow on n8n. This workflow doesn't manage users. It doesn't answer to anyone. It only takes care of building the site's semantic index.
When run, it queries WordPress via REST API, recover the published posts, extracts the title, content, and excerpts, strips out the HTML markup, and creates a clean version of the text. This text isn't saved as is; it's broken into smaller chunks to allow for more precise searching.
Each block is transformed into a embedding through OpenAI. The result is a numeric vector representing the meaning of the text. Those vectors are then saved in a optimized database For semantic search.
Two possibilities come into play here. For lean and direct configurations can be used Qdrant. For more structured configurations, especially when you want to manage multiple separate data sets, it is used MongoDB Atlas with Vector Search.
But the really interesting part isn't the post indexing. It's the fact that the system isn't limited to posts.
Skills and profile sections aren't classic WordPress content. They're not articles. They're not narrative pages. They're structured data.
To make them interrogable, I have foreseen a different process.
The skills they come organized in file JSON And CSV structured by domain, category, level and description. These files are imported in MongoDB in dedicated collections. At that point one comes into play Node.js script included in the project.
The script reads each document, builds a unified textual representation (skill, domain, description, level), calls the embeddings API Of OpenAI, generates The vector And update the document with the field embedding. Subsequently a index of type vector search on that collection.
The result is that the skills they are not simply listed on a page. They are semantically queriable.
If someone asks, "Do you have experience in cloud security?", the system doesn't look for the exact word. It compares the meaning of the question with the meaning of the vectorized documents.
The same mechanism applies to the profile, organized into separate sections and indexed in the same way.
This way, the chatbot works on three distinct domains: posts, skills, and profile. It doesn't mix them together. It treats them as separate sets of information.
The second workflow on n8n is the one that handles requests in real time.
The request arrives via a webhook, protected by header authentication. Before even querying the database, the system must understand the type of request.
This is where an LLM-based intent router comes in. It doesn't generate responses. It classifies. It decides whether the question is about:
This step is crucial. It allows you to query only the correct database.
If the question concerns a project, a vector search is performed in the post collection. If it concerns a technology or experience level, the skills collection is queried. If it concerns a career path or role, the profile section is consulted.
The vector query returns a set of documents sorted by similarity. These documents are filtered and transformed into a controlled context. Only then does the generative model come into play, but with very clear rules: synthesize what has been retrieved, not invent.
Every interaction can be recorded on Google Cloud Storage. The user's IP address is first hashed with SHA3-256, avoiding storing any directly identifying data. Logs are saved in JSON format, organized by date, enabling subsequent analysis while maintaining privacy.
This aspect isn't an afterthought. It means treating the chatbot as a real backend component, not just a simple widget.
To connect everything to the site, a dedicated WordPress plugin was developed.
The plugin does not contain AI logic. It does not perform any calculations. It acts as a secure bridge between the n8n frontend and backend. It exposes a shortcode that allows you to embed the chatbot into your site, handles REST calls, and secures the webhook with server-side authentication.
This way no API keys are ever exposed in the browser.
This project is not a simple JSON file to import or a plugin to install and forget.It is a complete structure, designed to be understood and replicated.
Who decides to implement this WordPress AI Chatbot receives the entire architecture: the n8n workflow already configured for the indexing phase and for the management of the chatbot, the detailed guides for importing and setting credentials, the documentation to choose and configure The vector store (Qdrant for a more direct setup, MongoDB Atlas for a more advanced architecture), together with the Node.js script needed to import, normalize and vectorize skills and profile sections starting from JSON or CSV files.
Also included are concrete examples of data structure, the explanation on how to build the vector indices, how to organize the MongoDB collections, like separate i information domains (post, skill, profile) and how to connect everything to the query workflow.The WordPress plugin provided then allows to integrate The chatbot In the site securely, acting as a bridge between the frontend and the backend without exposing sensitive keys.
The goal is not to provide a “closed product,” but a complete and documented technical foundation that allows you to reconstruct the entire system step by step, understanding each component.
The project is available on:
Those who use it are not purchasing a simple chatbot, but a replicable architecture to transform a WordPress site into a truly queryable system.
The WordPress AI Chatbot isn't about making a website more spectacular.
It serves to make an information domain queryable: projects, skills, path.
It's a substantial difference.
It adds no decoration.Adds semantic structure.
And this is the part that really matters.
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Post Comment