A self-improving model system for operational decisions
Vertiq combines a local language model that reads any operational dataset with decision models trained on real outcomes. Both improve through recursive self-improvement: each generation trains its successor, and a generation reaches production only after it outperforms the current one on held-out data.
Synthetic benchmarks with known ground truth, 5 runs each, and one public dataset. See benchmark methodology.
Each generation trains the next. Only better generations ship.
Vertiq improves its models through recursive self-improvement (RSI) under evaluation control. In each round a teacher model generates additional training examples, and every example is validated against its own data before it is used. The student model is trained and evaluated on held-out records; it is promoted only if it outperforms the production model, and the promoted model becomes the starting point for the next round. Its incorrect outputs are retained as negative examples for the following round, and new outcome data is added at every cycle. No iteration reaches production without passing the evaluation gate.
Applied to table mapping, this process raised the exact-match accuracy of a 4-billion-parameter model from 3.5% to 52.6% on the same held-out set.
Vertiq LM
A 4-billion-parameter language model fine-tuned locally to map any source table to Vertiq's data contract. It runs on Apple Silicon, so source data does not leave the machine.
Decision engine
Event prediction, value prediction, uplift, affinity, tested insights and rule-based monitoring, trained on an organisation's own outcomes and embedded directly in its applications.
RSI loop
Teacher generation, validation, training, evaluation and error feedback. Each promoted generation becomes the starting point for the next, and every generation passes the evaluation gate.
A specialised model system for decisions
Vertiq is a specialised model system, not a general-purpose assistant. Where foundation models generate text, Vertiq makes and verifies operational decisions: its local model maps source data to a common contract, deterministic validation checks the mapping, and each new generation of its decision models is promoted only when it measurably outperforms the generation in production.
No dependency footprint
The decision engine uses only the Python standard library, so it can be vendored into an existing service, run on a server or embedded in an edge device without adding packages to the environment.
Local schema mapping
Vertiq LM runs on Apple Silicon and maps source tables without sending data to an external API. Its output is validated against the rows before it is used.
Promotion control
The evaluation gate compares every candidate with a rule-based baseline and the production model on held-out entities, with an optional minimum margin (min_gain).
Measured outcomes
Uplift is estimated against randomised control groups, so reported effects reflect the intervention rather than pre-existing behaviour.
Common obstacles to reliable decision models
Schema onboarding
Each source system exports data in a different structure. Mapping it to an internal model is manual work, repeated for every new source.
Vertiq LM proposes a column mapping from the header and sample rows. Column names, value types and the date format are then validated against the data before use.
Attribution bias
Comparing contacted and non-contacted customers credits an intervention with outcomes that would have occurred without it.
Uplift models are trained against randomised hold-out groups and rank entities by the expected change an intervention produces.
Unvalidated retraining
Scheduled retraining can promote a model that performs worse than the model already in production.
Each candidate is evaluated on held-out entities against a rule-based baseline and the production model, and is promoted only if it performs better.
False discoveries
Testing many segments surfaces patterns that occur by chance.
Candidate insights are reported only after Benjamini–Hochberg false-discovery-rate control.
Domain knowledge
Engineers, clinicians and analysts hold knowledge that is not recorded in event data.
Feature and rule plugins encode that knowledge without modifying the decision engine. The evaluation gate measures their contribution.
Data residency
Regulated data often cannot be sent to external services, and full ML platforms are heavy to deploy at the edge.
The decision engine has no third-party dependencies and makes no network calls. Vertiq LM runs locally on Apple Silicon.
Supported analyses
All analyses operate on one data contract of entities, events and actions, so the same system serves every industry.
Event prediction
Probability that an event occurs for an entity within a time window, such as customer return, equipment failure, readmission or late payment.
tasks.predict_event
Value prediction
Expected value of the next event, such as order value, repair cost, length of stay or renewal amount.
tasks.predict_value
Intervention effects
Effect of any recorded action, such as a maintenance programme, outreach call or carrier change, estimated against a control group, with the entities it helps most.
tasks.predict_uplift
Effects without a control group
Matched-cohort and doubly robust estimates when an intervention was not randomised, with balance and overlap diagnostics and an interval.
causal
Time to next event
Probability of the next event within a window given the time elapsed, personalised to each entity's rhythm.
survival
Affinity and sequences
Co-purchase associations, the next likely product, replenishment intervals and tested A-then-B patterns with their typical lag.
affinity · sequences
Tested insights
Segment-level patterns reported only after false-discovery-rate control.
insights
Monitoring
Input and score drift, accuracy on new outcomes, and sequential tests of one rate or two live arms that can be checked after every observation.
drift · sequential
Pattern search
Finds patterns without being told where to look: every attribute, group, weekday, part of day and item group is compared with the value and with every other feature, under false-discovery control, and written as sentences.
patterns
One-command report
From exported tables (CSV or Excel, read by content rather than file name, header found below titles) to a written report: Vertiq proposes the mapping, recognises line-item and one-row-per-entity tables, joins tables by shared keys, checks everything, and runs every analysis that applies.
report · tables
Several possible outcomes
Which of several events comes next (a repair, a replacement or nothing; an upgrade or a cancellation), with a probability for each.
category.predict_category
Planning under a budget
Who should receive which action, given each action's measured effect, its cost and the value of the outcome, within a budget.
plan
Checks on proposed actions
Allow, hold or block an action proposed by an agent or a person, from the measured effect of that action and rule flags; unmeasured actions are held for a person.
guard
Why a number changed
Splits a change between two periods into groups whose own rate moved and groups whose share moved, with false-discovery control.
diagnose
What happened
The last period against the one before: counts, values, active, new and quiet entities and the groups that moved, as figures and sentences.
summary · narrate
Automatic tuning
Proposes candidate features from a fixed menu (counts, recency and shares by event type and attribute value), tries them and learner settings one change at a time, keeps those that improve validation folds of training entities consistently, and lets the gate decide on held-out entities.
autotune · menu
Rule-based checks
Repeat events, overdue tasks, consumption above specification and incomplete records.
rules
Plain-language descriptions
Predictions, gate decisions and effect estimates written as sentences from the result's own fields; an optional local model can rewrite them, and a rewrite with any number not in the description is rejected.
narrate
Structural intelligence, causal measurement, defensive deployment
Each principle is implemented in a specific module and can be inspected and configured.
Structural intelligence
Language-model output is constrained by verification against the data.
- Local schema resolution. Vertiq LM, a 4-billion-parameter model fine-tuned with LoRA, proposes a mapping from the column headers and sample rows. It runs on the user's machine; source data is not sent to an external service.
- Deterministic validation. vertiq.mapping.repair checks the proposal against the rows: names are matched to existing columns, roles are checked against value types and the date format is inferred. It never introduces a column that does not exist.
- Bounded data contract. Every record is expressed as an entity, a timestamp, an event type, a value and attributes. Rows that fail validation are reported to the caller, so models train only on records that loaded.
Causal measurement
Intervention effects are estimated against control groups rather than inferred from correlation.
- Control-group uplift. vertiq.uplift compares treated entities with a randomly held-out group over the same window and ranks entities by estimated incremental effect. In the benchmark it estimated a planted −20% offer effect at -20.2%.
- Configurable horizons. window_days sets the prediction horizon, cutoffs the number of historical training points and history the event types used as inputs, so each task matches the operating cycle of the industry.
- Small footprint. The decision engine has no third-party dependencies and no network layer. It runs wherever Python 3.10 runs; the full benchmark suite completes in 196 seconds on a laptop using 4 cores.
Defensive deployment
A candidate model is treated as unproven until it has been evaluated.
- Held-out evaluation. Candidates are scored on entities excluded from training, using features built only from events recorded before each cutoff.
- Champion–challenger gate. A candidate must outperform the rule-based baseline and the production model, and its gain over the baseline must be clear at 90% confidence by default. min_gain sets a required margin: an AUC margin for event tasks and a relative error reduction for value tasks.
- Explicit rejection. A rejected candidate returns status "kept" with the reason, such as the AUC it reached against the required threshold. The production model remains in service.
| Principle | Mechanism | Configuration | Operational value |
|---|---|---|---|
| Structural intelligence | Local mapping proposal, validated against the rows | Fine-tune Vertiq LM on your naming conventions (lm/); vertiq.mapping.repair | Source data stays on premises; new sources are onboarded without hand-written mappings |
| Causal measurement | Control-group uplift and point-in-time tasks | window_days, cutoffs and history in vertiq.tasks; a hold-out share on every campaign | Intervention effects are measured rather than assumed; horizons match each industry's cycle |
| Defensive deployment | Entity-level holdout with champion–challenger comparison | min_gain in vertiq.tasks and vertiq.harness | Weaker or unstable candidates are not promoted; the production model stays in service |
Domain logic through plugins
Feature functions, validation rules, custom learners and industry profiles are registered under a named pack. Feature functions receive only events recorded before each training cutoff, which prevents look-ahead bias, and the evaluation gate measures whether a plugin improves performance. In the equipment benchmark, one maintenance feature raised AUC from 0.735 to 0.767.
@plugins.feature(pack): domain features@plugins.rule(pack),vertiq.rules: validation rulesplugins.register_learner(name, cls): external estimators such as gradient boostingverticals.register(...): industry windows and terminology- Teacher endpoints: any OpenAI-compatible server
from datetime import timedelta
from vertiq import plugins
from vertiq.tasks import predict_event
@plugins.feature("plants")
def skipped_maintenance(entity, before, cut):
# `before` contains only events recorded before the training cutoff
return {"skipped_pm_60": sum(1 for e in before
if e.type == "pm" and e.attrs.get("PM Done") == "no"
and e.at >= cut - timedelta(days=60))}
task = predict_event(ds, target="breakdown", window_days=30, pack="plants")
Controls built into the system
Local execution
The decision engine performs no network or file I/O. Data is passed in by the host application, which retains control of storage and access.
Point-in-time correctness
Features, including plugin features, are computed only from events recorded before each cutoff.
Explainability
Each prediction lists the factors that raised and lowered it. Each rule flag includes its supporting evidence.
Reproducibility
Benchmarks, documentation and the README are generated from committed results. Continuous integration fails if they diverge.
Implementation guides by industry
Each guide documents the data mapping, supported analyses, recommended plugins, validation rules and test coverage for one industry.
Install Vertiq
Python 3.10 or later; no third-party dependencies.
pip install git+https://github.com/BiswajitBiswa/vertiq