Platform & product

A real table, not a paragraph of numbers

When an answer is genuinely tabular, Kav renders a real HTML table a screen reader can navigate — never a wall of numbers in a sentence.

By The Kav team Published 2 min read

Ask a language model for a table and, left alone, it will often give you a paragraph pretending to be one — numbers strung together with dashes and commas, readable if you can see them and meaningless if you're using a screen reader.

What the capability decides

A resident on a phone carrier's website asks how much data they've used this month. The answer isn't a sentence with four numbers buried in it. It's a real table: a caption, two column headers, four rows. The capability that answers this question declares its output as tabular data, with named columns — day, gigabytes used — and the widget draws exactly those columns. It doesn't infer a layout from the numbers it receives; the layout was decided when the capability was built, not guessed when the answer was rendered.

Why that distinction matters

CLAUDE.md's own accessibility rule is explicit: a data grid is a real <table> element with real headers, or it isn't accessible. A <div> styled to look like a grid fails a screen reader even when it looks perfect on screen. Because Kav's render layer works from a declared shape rather than free text, this isn't a rule a developer has to remember for each new capability — a capability declared tabular is a table, every time, in every language, correct in both left-to-right and right-to-left layouts.

What the model doesn't touch

The model writes the sentence that introduces the table and the sentence that follows it. It never writes a cell value. Every number in every row comes from the billing system through the same typed contract that keeps a property-tax balance accurate elsewhere on this platform — a phone carrier's usage numbers and a city's tax balance are rendered by the identical mechanism, because the mechanism doesn't know or care what kind of organization is asking.

The takeaway

A generic chatbot answers a tabular question with prose because prose is all it knows how to produce. Kav answers it with a table, because the capability that produced the data already told the platform what shape the answer is — and a table, correctly, is the only shape that respects it.