For Bizintellis, we built an agent that answers questions about years of fragrance consumer research in plain language. It works the numbers out from the database, draws the chart, cites its sources and keeps a record of how it got each answer.
Bizintellis is a business intelligence firm. It builds research platforms that put large consumer surveys in front of brand and product teams.
The data spans many markets, several yearly survey waves, hundreds of fragrance ingredients and dozens of audience segments. Dashboards answered the questions someone had planned for. Anything else waited for an analyst.
An AI agent inside the research platform. People ask in their own words and follow up the way they would with a colleague.
Numbers come from database queries, not from the model's memory. When the data cannot answer a question, the agent says so and suggests what it can do instead.
Each question is planned, routed and answered by a set of steps working together, with a record of every step kept for review.
The agent decides whether a question needs the survey data, the web or both. Follow ups like "and the year before?" keep their context, and a question that could mean two things gets a short clarifying question first.
The agent writes and runs the database query behind every figure. Semantic search finds the right ingredient or measure when people use their own words, and each answer says which market, year and audience it covers.
Charts are drawn from the same figures as the answer. Tables and charts export, and a conversation can become a PowerPoint deck in the client's own template.
When a question needs outside context, the agent searches the web and lists its sources with links, so web findings are never mixed up with survey figures.
The agent opens inside the research platform and knows which chart the user is looking at. "What leads here?" is answered for that chart, and the answer says so.
Answers in English, Chinese, Spanish and Japanese, user accounts and an admin dashboard, and a saved trace of every answer: the route taken, the query run and the data returned.
Each question passes through a graph of specialised steps. These are the parts that make it accurate, fast and explainable.
Every question is sent down one of four paths: the survey data, the web, both, or a polite decline for anything off topic. A rule based router matches products, measures, markets, years and audiences against a cached index, with fuzzy matching for typos, and answers in milliseconds. Only when its confidence is low does a language model make the call. Questions with several parts are split up and run in parallel, or in order when one part depends on another.
People rarely use the survey's exact labels. Every fragrance ingredient and survey measure is embedded and stored in PostgreSQL with pgvector, behind an HNSW index, so a question in everyday words still finds the right entries. This is retrieval augmented generation applied to structured data: retrieval decides what to look up, the database supplies the figures. The agent also tells apart a definition, a ranking, a "why" question and a full profile, and plans each one differently.
Once the entities are resolved, the agent builds the database query with exact filters for market, survey wave and audience, and runs aggregations, rankings, standard deviations and z scores in the database. If a query comes back empty, the graph loops back to try a related measure or the nearest available year before it reports that the data does not exist, and it says which substitute it used.
For brands, products, prices and trends the survey cannot know, the agent runs a live web search. A synthesis step lines the web findings up against the survey figures, and web findings come with their source links and link previews. When a market has no survey data, the agent offers a web search instead of a dead end.
A context resolver rewrites each follow up into a complete question using the conversation so far, so "and the year before?" or "how does that compare with the men?" means exactly what the user meant. Conversations and their traces are stored in PostgreSQL and cached in Redis.
When a question is genuinely ambiguous, the run pauses at a checkpoint and asks one short question, then resumes on the same path, even after a server restart. Answers stream word by word over server sent events, with each step shown live as it happens and the charts arriving alongside the text.
Most of the work was not the model. It was making sure the agent answers the question that was actually asked, from the right slice of data.
Each survey wave labelled markets and segments a little differently. A dictionary of concepts lets one filter find every year's spelling, so no wave is silently left out.
The agent may take the measure from the chart on screen, and it says when it does. It never quietly assumes the audience, because answering for the wrong group looks right and is wrong.
Automated tests cover routing, queries, follow ups and streaming, so a fix for one kind of question does not break another.
The agent is in daily use on the research platform, and the engagement is ongoing. We keep extending the agent as Bizintellis and its users ask for more.
Tell us what you want to ask of it. A senior member of the team replies within one business day.
Book a discovery call →