Predictive ML Runtime

Your data already knows
who's about to churn.

Train models on the tables you already have, or bring your own ONNX. Version them, activate them, score them inside any flow in milliseconds, watch them for drift, and explain every prediction — all under the same governance as everything else in FlowClick.

How It Works

From a table to a score in four steps

No notebooks, no separate ML platform, no data leaving the tenant. The model runtime is part of the workflow engine and the job queue you already run on.

1

Describe the features

A feature spec names the columns, aggregates, and time windows — or start from a template for churn, propensity, lifetime value, or next best offer.

2

Train durably

model_train assembles a point-in-time-correct population, runs the leakage guard, trains on the job queue, and checkpoints so a restart resumes rather than restarts.

3

Review and activate

Metrics, calibration, and a feature schema are recorded on the candidate version. A person activates it — never the platform, never automatically.

4

Score anywhere

The score step returns a prediction in-process in a few milliseconds; score_batch scores a whole population. Use the result in the very next step.

The Registry

Models are platform nodes, not files

A Model lives inside an application like a table or a flow. Each ModelVersion is immutable once active and carries its artefact, checksum, metrics, feature schema, and calibration — and every state change writes an audit row with a from-state.

  • Enforced state machine — candidate → active → deprecated / retrain-required; at most one active version per model
  • Bring your own ONNX — import a model trained anywhere; it is versioned, scored, and governed exactly like a platform-trained one
  • Platform learners — gradient-boosted trees, logistic regression, and survival (time-to-event) models with hyperparameters you can pin
  • Feature-schema enforcement — a mismatched feature vector fails loudly and returns no score, ever
  • Portable — a model round-trips into another account and scores identically; models are a Marketplace listing type
  • Under your keys — artefacts are stored under the tenant key ring; shred renders them unreadable, legal hold blocks the shred
// score step config { "stepType": "score", "modelRef": "churn-90d", // resolves the active version "features": { "tenure_days": "{{steps.customer.tenure}}", "tickets_30d": "{{steps.stats.tickets}}", "plan": "{{steps.customer.plan}}" }, "onError": "fail" } // schema mismatch = no score // next step can use {{steps.risk.score}}
Honest Models

Built to stop you fooling yourself

Most business ML fails quietly — a leaked feature, an uncalibrated score, a model that drifted six months ago. The runtime guards against each of these by construction.

Leakage guard

Training assembles features as of the label time, never after, and rejects a feature that predicts the label too well to be real. A leaking fixture is refused; a clean one passes.

Calibration, or an honest exemption

Classifier scores are Platt-calibrated on a held-out split and the Brier improvement is recorded. A survival risk score is not a probability, and the version says so rather than pretending.

No vanity metrics

Binary classifiers report AUC-ROC, PR-AUC, lift by decile, and positive rate. "Accuracy" appears on no user-facing surface, because on an imbalanced population it means nothing.

Drift alerts that fire once

Feature drift, coverage drop, and score staleness are measured against the training-time baseline, not a rolling window, and alert edge-triggered — one notification per breach, then resolution.

Champion / challenger

Route a share of traffic to a challenger version and compare realised performance as outcomes arrive. Routing never changes which version is active — promotion stays a human decision.

Explain every score

explain_score returns per-feature attributions for any prediction, so a support rep, an auditor, or a customer can be told why — not just what.

Templates & Retraining

Start from a proven shape

Model templates bind a known problem to your schema: pick the customer table, the outcome column, and the horizon, and the template generates the feature spec and a candidate model — no weights, no assumptions about your data.

  • Churn, propensity, customer lifetime value, and next best offer templates out of the box
  • Scheduled retraining on the platform job queue, with the new version landing as a candidate for review
  • Realised performance — predictions are kept so later outcomes can be joined back and true accuracy measured over time
  • Train on an Atom — training can run on a hybrid runtime behind your firewall and register the artefact centrally, so sensitive data never leaves the premises
  • Predictions feed segments, journeys, and decisions in the same flow — a score is just another step output
 Template: churn → Customers
🗄️ Subject: Customers · outcome: cancelled_atBound
↓ generates feature spec (14 features)
🏋️ model_train · 5,000 subjects · 10 slicesRunning
📋 v1 candidate · AUC 0.95 · lift@decile 8.4Awaiting review

Score your first model this week

Bring a customer table and an outcome. We'll train a candidate from a template, walk through its metrics, and score it live inside a flow.

Start Free Trial Schedule a Demo