Veezoo

Improving Answer Accuracy

The levers you can pull to give Veezoo's AI better context and get more accurate answers, from clear naming to ground truths and measures.

When Veezoo answers a question, the AI agent reasons over your Knowledge Graph: the classes, attributes, measures, relationships, descriptions and notes that describe your business data. The Knowledge Graph is the context the AI works with - the better that context, the better the answers.

This page walks through the levers you can pull to improve answer accuracy, roughly in order of impact. Most of them are small, incremental changes: you don't need to remodel everything up front. When an answer is off, find the missing context, add it, and every future question benefits.

Give the AI better context

Clear names and descriptions

The single most effective improvement is making sure every concept has a clear business name and a good description. If your customer table shows up as "Dim Customer", give it the name "Customer". Use display_name when the name shown in answers should differ from how the concept is referred to. And add a description to any concept whose meaning isn't obvious from its name - descriptions are shown to users and read by the AI when it decides which concept fits a question.

Notes for unstructured business context

Some knowledge doesn't fit into names and descriptions: fiscal year conventions, internal jargon like "whales" for large customers, data quality caveats. Capture it in Notes - free-form text that is always included in the AI's context. See Adding Unstructured Context with Notes.

Ground Truths: teach correct query patterns

When Veezoo answers a question with the wrong query, you can teach it the right one. A Ground Truth is a question paired with the correct VQL query; Veezoo uses it as an authoritative example when answering similar questions. Creators can save one directly from an answer with the Teach button - see Teaching Veezoo - or manage them as VKL in Studio via the Ground Truths reference.

Synonyms for your company lingo

If your organization says "NYC" instead of "New York City", or "rep" instead of "Sales Agent", add a synonym. Synonyms help the agent resolve your business terms to the right concepts and entities.

Sensible defaults

Defaults resolve the ambiguity in everyday questions the way your business expects:

  • default_date: "orders in 2024" should mean the order date in 2024, not the delivery date.
  • default_order: "top 10 orders" should mean top 10 by profit.
  • default_filter: questions about orders should exclude cancelled ones unless asked otherwise.
  • default_aggregation: "temperature per year" should be the average, not the sum.

Measures for official KPI definitions

If your company has an official definition of revenue, margin or churn, define it once as a measure. Everyone asking about that KPI then gets the same, correct calculation - instead of the AI deriving it ad hoc from raw columns.

Semantic types

Telling Veezoo what a column means - not just its data type - unlocks smarter behavior:

  • Ontology types like onto.Person let users ask "who ..." and get customers back; there are similar types for locations, birthdates and more.
  • onto.ID marks identifier columns so they are treated as labels rather than numbers to sum.
  • creation_date enables questions about the age of things ("customers older than 2 years").
  • quantity_of makes "number of products" sum a quantity column instead of counting rows.
  • is_snapshot_date makes Veezoo handle historized (snapshot) tables correctly.

Shape how answers are displayed

Accuracy also includes showing results the way people expect to read them:

  • display_with: always show extra context alongside an entity, e.g. the nationality next to each customer.
  • unit: display currencies and units with your KPIs.
  • onto.URL: make values clickable, e.g. jump from a customer name straight to your CRM.
  • Hierarchies: let users click through levels like region -> country -> city in a visualization.
  • Ordinals: keep ordered categories like age groups in their natural order.
  • Maps: display geographic answers on a map.

Transform data and simplify the Knowledge Graph

Sometimes the best fix is reshaping the data the AI sees, without touching your database:

  • Attribute types let you derive new attributes with SQL expressions: a custom boolean ("quantity > 100 means big order"), a parsed date from a string column, or a converted number (e.g. prices in another currency).
  • relationship: connect two tables that have no foreign keys defined in the database.
  • join: hide junction tables from users, join over an intermediate table with multi-joins, or express advanced join conditions.
  • Normalizing your KG: if the same column (e.g. Status) appears in many tables, model it once as a shared class.
  • Bucketizing numeric columns: turn a numeric column into ranges like "1 - 10", "10 - 100" and "100+".
  • virtual_table: define a view directly in Veezoo instead of changing the database.
  • function: register SQL functions of your database that Veezoo doesn't know yet, e.g. percentile_cont.