AI-Canvas

This was an internal prototype tool developed for a startup in the data visualisation and analytics space.

A conversational data analysis product at Hublsoft, a startup in the data visualisation and analytics space. It started as an internal prototype and is now being productised, with an alpha run in production by trusted internal users on real customer data and APIs being hardened for a beta rollout to end users. It lets non-data-scientists chat with an LLM, safely query a connected database, and build up evidence from the results.

At its core is a data query layer powered by Tabliq, the open-source SQL parsing and rewriting engine I built. It succeeds an earlier, more restricted custom query dialect I designed for the platform, and removes the need to anticipate every query shape up front. The LLM writes raw SQL, but that SQL is never executed as written. It is parsed and validated, restricted to SELECT-style queries so destructive or write operations are impossible, and rewritten before execution. This gives much finer control than database permissions alone, and supports virtual tables that swap simple table references for more complex subqueries, so row-level permissions are injected transparently to the caller. The result is one general-purpose way to reach data in whatever shape a question needs, rather than bespoke data APIs for each case. The whole application is built on this layer, and it has stayed stable through several product changes.

Alpha feedback showed users couldn’t verify where figures came from, so I drove the move from standalone dashboards to inline charts and data within the conversation, each with access to the underlying query for provenance. This lets users confirm results and guards against the LLM misreporting figures. The product has since added workboards for capturing evidence ahead of later reporting, separating data exploration from presentation. I remain the lead on the backend, while a larger front-end team builds the UI-heavy features on top of it.

The system is designed to be locked down for a multi-tenant hosted platform, preventing the LLM from running unsafe queries or producing arbitrary rendering code.

Nifty tech tag lists from Wouter Beeftink