Özer Cem KELAHMETKELAHMET
Articles · Concepts

One pass, one bundle: what a table model returns

A single pass over your tables returns the same kinds of output every time. That consistency is the point: you can build on it without guessing the shape of the answer.

json
{
  "sector": { "top1": "retail", "confidence": 0.94 },
  "column_profile": [{ "name": "email", "role": "email", "missing_pct": 0.0 }],
  "cross_table_map": null,
  "imputation": { "filled": 12 },
  "prediction": { "target": "churned", "results": [] },
  "held_out": null
}

1. Sector

The industry sector of each table, inferred from cell values alone, with a top-1 and top-5 guess and a confidence on each. It still works when headers are stripped or coded.

2. Column profile

For every column: its role (email, phone, name, date, address, identifier, measure, category, currency, geo, and so on), its type, how much of it is missing, and whether it holds personal information. Columns flagged as personal are never filled in later.

3. Cross-table map

Which columns and which rows across two or more tables describe the same thing, even with no shared key. There is a full article on this.

4. Missing-value imputation

Numeric and categorical gaps are both filled, and confidence is reported per row. Categorical fills are class labels.

5. Predictions

Classification, regression, and anomaly detection, all in context on labelled rows already present. Nothing is trained. Rows with a missing target are counted and dropped, never turned into a label. Anomaly detection needs no target and only runs when asked.

6. Held-out block

For persistent endpoints only, a score measured on rows the model never saw. More on why this matters.

Design rules worth copying

  • Return the full bundle or fail. A partial answer is worse than an honest error.
  • Return null, do not omit. A slice that does not apply is present and empty, so clients never guess.
  • Ignore unknown fields. New fields can appear at any time; renames and removals belong in a new API version.
Type to search.
    ↑↓ navigate↵ open