Sightly
Ask a question about products, orders, and customers in plain English; get an answer computed against live data, pinned as a dashboard tile, and turned into a shareable report. Third generation of the product.
The engineering problem in conversational analytics isn't generating prose — it's that the model sits between a user and their real business data, and must never be able to change any of it. Sightly enforces read-only in depth: the agent's tool surface, each provider's catalogue, the system prompt, and the backend invoke proxies are four independently-owned layers, so a bug in one is caught by another.
- 01Natural-language questions over connected sources
- 02Answers pinned as dashboard tiles
- 03Reports generated from the same answers
- 04Read-only enforced at four layers
- 05MCP tool surface with audit logging
- 06Shopify OAuth and Stripe subscriptions
How a question becomes an answer
A FastAPI service wraps a LangGraph agent and reverse-proxies the LangGraph HTTP API, keeping the graph runtime an implementation detail. Tools call back into the Express backend forwarding the user's own token, so the agent can never reach data the user couldn't.
- Question→
- ReAct agent→
- Tool selection→
- Express API with the user's JWT→
- Provider or MCP source→
- Result→
- Tile or report
Read-only, four times over
Each outbound request passes through several independently-owned layers, ordered furthest from the socket to closest.
- Only read tools registered
- list_sources, describe_source, query_data
- No delete, no update-source
- Each catalogue lists read tools only
- A small explicit list, so review catches additions
- System prompt states the surface is read-only
- Backend invoke proxies enforce it again
Connected sources
- Shopify, via OAuth and a mirrored Postgres
- Stripe, Klaviyo, Recharge, and Meta
- Everstream streams over MCP
- Per-user custom MCP data connections