Skip to main content
Back to CLI docs
Engine: TabPFN-v2 · Nature 2025Surface: solid predict

The GPT moment, but for spreadsheets.

Every Solid# tenant gets production-grade predictions the day they sign up — no data scientist, no per-tenant training, no 3-month "wait for enough history" cold start. This is the part nobody else has yet.

0
per-tenant training runs
~1–3s
per prediction
Day 1
works on every new tenant

What changed in 2025

For 20 years, machine learning on tabular data (spreadsheets, database tables) meant this loop: load the data, hand-engineer features, tune XGBoost / LightGBM / CatBoost per dataset, retrain whenever the dataset moves. A data scientist, weeks per problem.

Tabular Foundation Models (TFMs) flip that. Pretrain a single model once on millions of synthetic tables, then drop it onto any new table zero-shot — no per-dataset training, no hyperparameter sweep, no feature engineering ritual.

The old way
  • ·Hire a data scientist
  • ·Wait 3 months for enough deal history
  • ·Engineer features by hand
  • ·Tune XGBoost per dataset
  • ·Retrain when the data drifts
  • ·Cold-start every new tenant
With TBFN
  • ·Zero training pipeline
  • ·Day-1 predictions on tiny histories
  • ·No feature engineering needed
  • ·Same pretrained weights for every tenant
  • ·Drift is just new context rows
  • ·Devon adds a new predict target overnight

The in-context-learning trick

TabPFN-v2 does to spreadsheets what GPT does to text. You don't fine-tune GPT to summarize in a new style — you put a few examples in the prompt. TabPFN puts your tenant's labelled rows in the prompt:

# This DOES NOT train. It stages the tenant's history as context.
clf = TabPFNClassifier(model="v2")
clf.fit(X_train, y_train)        # ← attention buffer, not a weight update

# Forward pass attends to the labelled rows + the test row.
# Pretrained weights stay frozen forever.
clf.predict_proba(X_test)

Practical consequence: 20 closed deals is enough to start predicting the 21st. Every prediction is a fresh in-context pass. That's why solid predict works on day-1 tenants and why Devon can spin up a brand-new predict target overnight without a training pipeline, an artifact store, or a hyperparameter search.

Why this is the cool part

No cold start, ever

Other platforms wait 3+ months to collect enough history before predictions even turn on. With TBFN, a tenant gets predictions on day 1 — heuristic fallback below 20 rows, real TBFN above. The 'we'll be ready soon' anti-pattern is gone.

No per-tenant training

One pretrained model serves every tenant. No training pipeline, no artifact store, no per-customer GPU bill, no hyperparameter sweeps. Add a new predict target by writing one Python file — Devon auto-discovers candidates overnight.

Seconds, not hours

~1–3 seconds for tables up to 10,000 rows. The Nature 2025 paper shows TabPFN-v2 ties or beats hand-tuned XGBoost / CatBoost / LightGBM on the majority of small-to-medium tabular tasks — in seconds instead of weeks of tuning.

Tenant-isolated by design

Predictions never cross tenants. Each call passes only that tenant's labelled history as context. The pretrained weights are tenant-agnostic — they don't memorize anyone's data. RLS-protected at the DB level (446 tables, 100% coverage).

Honest confidence + fallback

Every prediction returns a confidence score (sharpened distance from 0.5). Under 20 labelled rows, the wrapper switches to a domain heuristic and admits low confidence explicitly. No fake certainty.

Plug-replaceable backend

`TabularPredictor` is an interface. If a tenant grows past 10K rows, that specific target can swap to XGBoost or TabPFN Enterprise behind the same API — zero CLI change, zero MCP change.

From the terminal

Every TBFN-backed prediction has a CLI verb. AI agents (Claude, Cursor, your own ChatGPT plugin) drive these directly with --json envelopes.

solid predict deal-close <deal_id>Probability the deal closes — hot/warm/cold tier + recommendation.
solid predict no-show <appointment_id>Probability the customer no-shows — high/medium/low risk.
solid predict payment-late <invoice_id>Probability the invoice is paid after due date.
solid predict targets --status proposedWhat Devon proposed overnight, awaiting your decision.
solid predict approve <target_id>Approve a Devon-proposed target — it becomes callable.
solid predict discoverTrigger Devon's discovery sweep on demand.

What TBFN doesn't do (yet)

Honesty matters — here's what TabPFN-v2 is not built for today:

  • · Tables larger than ~10,000 rows × 500 features per call. Larger tenants stratified-sample or swap backend.
  • · Streaming / real-time updates. Each call is a fresh forward pass; we batch.
  • · Time-series forecasting with autoregressive structure. Use the time-series wrapper, not TBFN directly.
  • · Forensic-grade explainability (SHAP). Cheap mean-difference top-features ranking only; full SHAP can land if a customer needs it.
  • · Unstructured data (text, images). LLMs handle text; vision models handle images. TBFN is for the cells of your database.

Provenance

Try it from the terminal

Install the CLI, log in, and run any solid predict verb against a real deal, appointment, or invoice in your tenant.

npm i -g @solidnumber/cli
Predictions — Solid# (TBFN, the engine under solid predict) | SolidNumber