Learn → The quality score explained
Prism gives every file a score out of 100 and a list of what dragged it down. A score on its own would be useless — what matters is that every point deducted traces back to specific rows you can open and look at. This page documents all 13 checks and the arithmetic behind the number.
The score and full drill-down are free — no licence requiredThe score starts at 100 and deducts for each issue found. Two things decide how much an issue costs:
An issue's deduction is severity × impact, and the impact term has a floor of 5%. That floor is deliberate: one duplicated invoice number in a file of fifty thousand rows should still cost something. Without it, rare-but-serious defects would round away to nothing and the score would only ever reflect widespread sloppiness, which is the less dangerous problem.
Deductions accumulate across all issues and the result is floored at zero. So a file can reach 0/100, and a file with a single high-severity issue affecting a handful of rows typically lands in the low 90s rather than the high 90s.
Every check can be switched off individually, which matters more than it sounds — a file where 98% of the Purchase Order column is legitimately blank should not be penalised for it every month. Turning checks off is a Pro feature; seeing everything they find is free.
These are the ones that change a number you would report, or mean two records got confused for each other.
| Check | What it catches | Why it matters |
|---|---|---|
| Exact duplicate rows | Rows where every single column value is identical to another row | Usually a double-import or a copy-paste during consolidation. Every total in the file is overstated by the duplicate. |
| Duplicate identifier values | Repeated values in a column classed as Identifier — invoice number, employee ID, SKU | The classic duplicate-invoice case. The rest of the row may differ, so it survives a duplicate-row check while still being the same transaction entered twice. |
| Date order errors | Rows where an end or close date falls before its start date | Almost always a typo in a year or a swapped pair of cells. Silently corrupts any duration or ageing calculation built on those columns. |
Things that are usually a mistake and always worth a look, but which may be legitimate in a given file.
| Check | What it catches | Why it matters |
|---|---|---|
| Duplicate contact details | The same email address or phone number appearing on multiple records | Two records for one person or supplier. Worth confirming before you send anything, pay anything, or count anyone twice. |
| Missing values in key columns | Empty cells in identifier, date, number and currency columns | Blanks in the columns that anchor a record. A missing amount silently reads as zero in most downstream arithmetic. |
| Statistical outliers | Numeric values more than three standard deviations from the column mean | Catches the misplaced decimal point and the extra zero. Some outliers are simply a large genuine transaction — the point is that you looked. |
| Future date anomalies | Dates far in the future, or future values in columns that should hold past dates | Nearly always a mistyped year. A transaction dated next year drops out of this period's figures without any error appearing. |
| Expired records | Rows where an expiry, due or end date has already passed | Overdue invoices, lapsed certifications, contracts past their end date — things whose importance is that nobody noticed them. |
| Empty or near-empty columns | Columns that are at least 98% empty | Usually a field the source system exports but nobody fills in. Sometimes a mapping that broke and is quietly dropping data. |
| Whitespace padding | Identifier and category values with leading or trailing spaces | "INV-100 " and "INV-100" are different strings to every lookup, pivot and matching routine — including the one you are about to run. |
| Inconsistent capitalisation | Category values differing only by case, such as Active and active |
Splits one category into two everywhere it is grouped, so a total that should read 400 shows as 250 and 150 in two rows of a report. |
Signals rather than errors. They rarely mean the file is wrong; they often mean it is not saying what you think.
| Check | What it catches | Why it matters |
|---|---|---|
| Dominant value warning | A single category value accounting for 92% or more of all rows | A column carrying almost no information. Grouping by it produces a chart that looks fine and says nothing — or the field stopped being maintained. |
| Mixed letter casing | Text columns containing both ALL CAPS and all lowercase values | A reliable fingerprint of two data sources merged into one file, which is worth knowing before you reconcile it. |
The score is the entry point, not the output. Each issue lists the rows it affects, and opening one takes you straight into the data with a filter already applied — so "12 duplicate identifier values" becomes those twelve rows, side by side, in one click. The flagged column is revealed even if you had hidden it.
Uploading a file of any size, the score, every issue, and the full drill-down into the affected rows.
Turning individual checks off for a file, editing the offending cells, tagging rows as you review them, and exporting a corrected copy or a branded report.
Once you have the checks configured to suit a particular file — the right roles, the noisy checks disabled — save it as a recipe. Next month's export gets the same setup applied in one click, so the score you see is comparable to last month's rather than reflecting a fresh set of guesses.
Load a file and see its score. Nothing is uploaded, and there is no account to create.
Open Prism →