The validator exists so that the person supplying data finds out immediately whether what they supplied is adequate — not days later when an analysis quietly produces nothing, or worse, produces a number built on a column that didn't parse. You drop a file; within the same second you get a verdict, the specific rows and cells behind that verdict, and a list of which analyses the data as supplied can and cannot feed.
Everything runs inside your browser. Files are read locally, parsed locally and judged locally. No upload occurs during validation.
| verdict | meaning | what to do |
|---|---|---|
| READY | Every enabled check passed. The file can feed any analysis that wants its type. | Nothing. Supply the next document. |
| ISSUES | No fatal problems, but warnings exist — ambiguous type, duplicate rows, unrecognized tier labels, mixed periods. Analyses will run; some members or rows may be skipped or mis-joined. | Read the findings table. Fix what matters, or accept the warnings knowingly. |
| INADEQUATE | At least one enabled error-severity check failed — a required field is missing, no rows parsed, dates or amounts are unreadable, or the file's own totals do not tie. | The file cannot be used as supplied. Each finding names the row, the column and the value. |
A verdict is always relative to the enabled checks. Disable a check and its findings stop counting; the verdict recomputes instantly.
final_v2 (3).xlsx affects nothing.If the identifier picks the wrong type — or the margin warning asks you to confirm — the type selector on the file card overrides it, and every check re-runs against the corrected type.
Eleven document types are recognized. Required fields are the fields the type cannot work without — each row below lists the accepted spellings, since every payroll and carrier system names columns differently; any one spelling in a group satisfies it. Optional fields enrich the analyses but their absence never blocks intake.
| format | detected by | notes |
|---|---|---|
| CSV | comma-delimited header | quoted fields and embedded commas handled; leading # comment lines skipped |
| TSV | tabs in the header line | same handling as CSV |
| XLSX | zip signature | first worksheet is read; a title or banner row above the header is skipped automatically |
| JSON | object/array structure | record arrays (employees, records, remittance) become rows; nested objects are flattened; structured documents without arrays (a rate schedule, a contribution model, an org tree) become one row per section or node |
| NDJSON | one JSON object per line | each line becomes a row |
| Fixed-width | HDR/DTL records, or a payroll register title line | carrier remittance extracts and deduction registers; group, period and employer are read from the header record |
| Statement text | "Statement of Account" prose | subscriber lines of the form Name is enrolled at $amount become rows; group and coverage period are read from the letterhead |
Each check is one checkbox in the validator. Severity decides what a finding does to the verdict: an error makes the file INADEQUATE, a warning makes it ISSUES, an info finding changes nothing. The how to fix column is addressed to the person who exported the file.
Validation strictness is a decision, not a constant. Two controls exist:
Every check can be switched off individually. The live count next to each checkbox shows how many findings that check is currently producing across all dropped files, so you can see before toggling exactly what you are about to silence or surface. Verdicts recompute the moment a box changes.
The Required fields only switch narrows the value-level checks — blanks, unreadable dates, malformed amounts, unrecognized tiers — to the columns the document type is required to carry. A census with a messy optional location column stops failing on it; a census with a blank tier still fails, because the tier is load-bearing.
Use it when onboarding a new data supplier: first get the required fields clean and the file to READY, then switch it off and work through the optional-column warnings at leisure. The two views are the same engine with a different scope, so nothing is hidden — only deferred.
Single files can be individually perfect and still describe different worlds. The set-level checks run automatically once two or more documents are present:
Each analysis needs specific document types. The validator's analysis strip lights up as adequate files arrive; this is the same table.
The two files below unlock the core work. Everything else widens it.
YYYY-MM-DD, MM/DD/YYYY or YYYYMMDD;
amounts as plain numbers with at most two decimals.| symptom | cause | remedy |
|---|---|---|
| "no data rows parsed" | header-only export, an empty worksheet, or a format the detector could not read | open the file yourself; if it has rows, check for a nonstandard layout and send the system's native export instead |
| type identified wrongly | columns genuinely match another type better, or the file mixes two extracts | use the type selector on the file card; split mixed extracts into one file per document |
| "content matches X and Y nearly equally" | ambiguous column set | confirm the type by hand once; the override sticks for that file |
| every amount flagged | currency symbols with stray characters, or amounts exported as text with trailing spaces | re-export with plain number formatting |
| "ends before it begins" | termination or end date earlier than the effective date | usually a swapped column pair in the export mapping |
| detail does not tie to stated total | rows were filtered or edited after export, or the file mixes original and adjusted runs | send the unmodified export |
| file is READY but an analysis stays dark | the analysis needs a document type not yet supplied, or a companion file is INADEQUATE | hover the analysis chip — it names what is missing or blocking |
Reference tables on this page are generated at load time
from the validation engine itself, so they cannot drift from what the validator actually enforces.
Engine: tbv-engine.1794517536.js.