Guide

Never Recorded Is Not Expired — The Third State Every Training Matrix Needs

Most training spreadsheets have two states: has it, or does not. That collapses three different problems into one column, and the one it hides is the one an auditor opens with. The case for a matrix that distinguishes lapsed from never-done from does-not-apply.

Written Aug 22, 2026 · 5 min read

An auditor asks three questions about training, and they are not the same question.

Has this person's certificate expired? Did they ever hold one? And does this competency even apply to them?

A spreadsheet with a tick box answers none of them. A spreadsheet with an expiry date answers the first, badly. What the first two have in common is that the honest answer to "no" is different in each case, and the software usually only has one "no".

The collapse

The natural design is a column per competency, holding a date. Empty means no, filled means yes, and if the date is in the past somebody notices eventually.

That model has three failures baked in.

An empty cell is ambiguous. It might mean the person never did the training. It might mean the person did it and nobody typed it in. It might mean the training does not apply to their job at all. All three look identical, and only the third one is fine.

A past date is only visible if somebody is looking. Nothing surfaces it. The cell sits there being wrong.

And "does not apply" gets recorded by leaving the row blank, which is indistinguishable from a gap.

The result is a register that cannot tell you what is missing, which is the only thing you needed it for.

Four states, because there are four situations

Trainora colors every cell as one of four things:

Try the Trainora demo ↗Live, on sample data, no sign-up.

Valid — a record exists and its expiry is in the future.

Expiring — valid today, inside the warning window you set.

Expired — a record exists and its expiry has passed. Somebody held this, and does not now.

Never recorded — no record at all. Not lapsed. Nothing was ever filed.

And a fifth rendering that is not a state at all: hatched, where a competency does not apply to that person. Front-of-house does not need the forklift ticket, and the grid says so rather than showing an accusing blank.

The difference between expired and never recorded is not cosmetic. They are different failures with different fixes. Expired means a renewal was missed by someone who knows the job. Never recorded means a person is doing work they were never signed off for, or that your record-keeping has a hole in it. An auditor treats those very differently, and so should the screen.

You can have the third state in the spreadsheet you already own

None of this requires buying anything, and it is worth saying so before the part where we sell you something. The collapse described above is a consequence of one habit — using an empty cell to mean no — and a spreadsheet can stop doing that this afternoon.

Put two columns behind each competency rather than one: the date achieved, and a short code for why there is no date. Three codes are enough — N/A for does not apply, NEVER for never held it, and nothing at all for the case you are still chasing. Now an empty cell means exactly one thing: nobody has answered this yet, which is a to-do rather than a state. Conditional formatting on the date column gives you expiring and expired, and the two columns together give you the four answers an auditor asks for.

Where that stops working is scale and memory, not capability: someone has to keep applying the convention, every new starter and every new competency, and the day a second person edits the file the convention is only as good as their reading of it. Software earns its place by making the state unrepresentable-wrong rather than merely conventional — but if you have twelve staff and one person maintaining the sheet, the two columns genuinely are the answer, and you should take them and go.

Expiry is computed, not stored

There is a second rule underneath, and it is the one that keeps the four states honest.

Nothing stores "is expired". The expiry date is derived from the date the training was achieved plus the validity period you set for that competency. Whether it has passed is decided when the page renders, against today.

The alternative — a flag written by a nightly job — has a specific failure mode that is worse than being wrong. It is being confidently wrong. The job does not run one night, and the grid shows green for something that lapsed at midnight. Nobody sees an error, because there is no error. There is just a screen saying everything is fine.

A derived value cannot go stale, because there is nothing to go stale. That is the whole argument for it.

What changing the rules does, and does not do

If you shorten a competency's validity from three years to two, records already on file keep the expiry they were issued with. A certificate does not become shorter-lived because you changed a setting afterward.

This is a deliberate limit and worth stating plainly, because the opposite behavior is easy to build and feels tidier. It is also wrong: it silently rewrites history, and the person whose certificate just turned red never did anything.

What the grid is for

The matrix is the home screen because it is the only view that answers all three of the auditor's questions at once. Everyone down the side, every competency across the top, every cell one of four colors.

On the demo seed it reads 48% of the 41 things that apply are in date · 3 expired · 18 never recorded. Those three numbers are the entire state of the register, and the third is the one a two-state spreadsheet cannot produce at all.

Clicking a cell records a completion without leaving the grid, because the moment you notice a gap is the moment you want to close it.

What it is not

Trainora is not a learning platform. No courses, no content, no quizzes, no SCORM. It records that training happened; it does not deliver it. It does not issue certificates either — it holds the one you were given as evidence.

A competency applies to everyone or to one group tag. That is the whole targeting model, deliberately: anything more expressive becomes a rules engine nobody can audit, and an unauditable rule in a compliance register is worse than a coarse one.

Those limits are on the product page, not buried in a FAQ. Trainora is $79, once; the demo is open without a sign-up, and it is one of the five registers in the Workforce Suite. The certificate a person is given is a different object from the record that they hold it — who owns your certificates? is that side.

The point

You can keep training records in a spreadsheet. Plenty of organizations do, and it works right up until somebody asks what is missing.

The reason it fails at that question is not effort. It is that the sheet has one kind of "no", and the question needs three.

Comparisons for the tools in this guide: iSpring Learn alternative · Skills Base alternative · TalentLMS alternative

Stop renting your own business.
Every tool in the store is a one-time purchase: install it on your own server, keep your own data, and never see a renewal invoice.
Open the Trainora demo Browse the tools More guides