← All writing
Evaluation · 5 min read · 4 Aug 2026

Building a Minimal Model Card Before Anyone Uses Your Model

A model without documentation is a liability waiting to happen. Here is the smallest set of facts you owe every future user, including your own future self.

Cover image for the article: Building a Minimal Model Card Before Anyone Uses Your Model

Why the card matters more than the metric

Most models die a quiet death not because they were badly trained, but because someone else picked them up, used them outside the conditions they were built for, and got a nasty surprise in production. A model card is the thing that prevents that surprise. It is not a marketing sheet and it is not a full research paper. It is a short, honest document that answers the questions a competent stranger would ask before trusting your model with anything real.

I say this as someone who has, more than once, gone back to my own work from a few months earlier and had no idea what preprocessing I had applied, or which split of a dataset I had actually evaluated on. If I cannot reconstruct my own decisions, a stranger has no chance. The model card is not charity towards other people; it is insurance for yourself.

The temptation is to skip this step because it feels like paperwork that delays the interesting part, which is building the next model. But the cost of skipping it is not paid immediately. It is paid three months later when someone deploys your sentiment classifier on customer support transcripts, not realising it was trained and tuned entirely on product reviews, and wonders why it is confidently wrong on every third ticket.

The four things that actually matter

A minimal card does not need twenty sections. It needs four, done properly: what the model is, what it was trained and evaluated on, how well it performs and under what conditions, and where it is known to fail. Everything else is optional polish.

What the model is sounds trivial but is often missing. State the task precisely: is this a binary classifier, a multi-label tagger, a regression model predicting a continuous score? State the input and output format exactly, including any assumptions about text length, image resolution, or feature scaling. A one-line description like 'predicts customer churn from account activity' is not enough; say whether that means churn in the next thirty days, sixty days, or an unspecified horizon, because the answer changes what the model is actually useful for.

What it was trained and evaluated on is the section people skip and regret skipping. Name the dataset, its size, its time range, and crucially, how the split was made. If you trained on data from January to June and tested on July, say so, because that tells a user the model has at least survived a temporal shift. If instead you did a random split across the whole period, say that too, because it means the reported accuracy may be optimistic if the real-world use case involves genuinely new time periods, new users, or new categories the model never saw isolated during training. This is the single most common source of leakage I see: a random split that lets near-duplicate rows or correlated records from the same entity sit on both sides of the train and test boundary, quietly inflating the score.

How well it performs and under what conditions should include the metric, the number, and the baseline it beats. A model that reports ninety-two percent accuracy sounds good until you learn the majority class is eighty-nine percent of the data, in which case a model that always predicts the majority class would score eighty-nine percent for free. Reporting the naive baseline alongside your number turns a hollow statistic into an honest one. If you have the room, break performance down by relevant subgroup: a fraud detector that performs well overall but poorly on a particular transaction type is a very different product to sell than one that is uniformly reliable.

Where it is known to fail is the section that takes the most self-honesty and provides the most value. This includes edge cases you noticed during testing, input types the model has never seen, and any known sensitivity to distribution shift. If your model was trained on English text and you have not tested it on anything else, write that down explicitly rather than leaving it to be assumed.

person writing notes at laptop desk

A worked example of what this looks like in practice

Suppose you have built a model to predict whether a support ticket needs urgent escalation, trained on eighteen months of historical tickets. A minimal card entry might read: task is binary classification of urgent versus non-urgent, trained on twelve thousand tickets from months one to fifteen, tested on three thousand tickets from months sixteen to eighteen to simulate deployment on future data. Baseline rate of urgent tickets is eleven percent; a model predicting non-urgent for everything would score eighty-nine percent accuracy, so headline accuracy is reported alongside precision and recall for the urgent class specifically, which land at seventy-one percent precision and sixty-four percent recall.

That single paragraph tells a future user far more than a bare accuracy figure ever could. It tells them the evaluation respects time, which matters enormously for anything that will be deployed going forward rather than backfilled. It tells them the class imbalance means accuracy alone would have been misleading, and it gives them the actual operating numbers for the class they presumably care about most, which is the urgent one. It also implicitly tells them what it does not cover: tickets in categories introduced after month eighteen, or written in a language other than the training data's dominant language, are untested territory.

Notice what this example does not need: no elaborate formatting, no dashboard, no automated tooling. It is four or five sentences that took perhaps fifteen minutes to write, drawing on information the author already had sitting in a notebook somewhere. The barrier to writing a minimal card is almost never knowledge; it is the habit of writing it down before moving on to the next experiment.

The practical takeaway

Write the card before you share the model, not after someone asks for it. The four questions to answer, every time, are: what exactly does this model do, what data was it trained and tested on and how was that split made, how well does it perform relative to a sensible baseline, and where does it break or remain untested. If you can answer those four honestly in under a page, you have done the essential work of a model card, and you have very likely caught at least one leakage or evaluation problem in the process of writing it down. The discipline of documenting forces the discipline of checking, and that is worth more than the document itself.

open notebook with charts and data tables
← All writing See the project case studies →