Rules engine
How the checker works
One rules file, one engine, used by the free checker, the API and our audits.
Pipeline
- 1
Parse
CSV or JSON rows are parsed in memory; column names are matched to the 12 fields we read. - 2
Apply rules
Each of the 21 rules in rules.json runs on every row. Batch rules (duplicate titles, duplicate ISRCs) compare rows with each other. - 3
Report
Every finding carries row, field, rule ID, severity (error, warning, info), the value and, where possible, a suggested fix. Counts roll up into a health score and grade.
The engine started as a Python reference checker; the JavaScript version running on Cloudflare is tested for parity against it.
The 21 rules
| Credits | FEAT_FORMAT, FEAT_IN_TITLE, FEAT_IN_ARTIST, FEAT_MISMATCH, GENERIC_ARTIST |
|---|---|
| Titles | VERSION_PARENS, ALL_CAPS, EMOJI, EXCESS_PUNCT, KEYWORD_STUFFING, PROMO_TEXT, DUPLICATE_TITLE |
| Identifiers | ISRC_FORMAT, ISRC_DUPLICATE, UPC_FORMAT |
| Release fields | EXPLICIT_FLAG, LANGUAGE, GENRE_MISSING, SHORT_DURATION |
| AI disclosure | AI_DISCLOSURE_MISSING, AI_SIGNAL_UNDISCLOSED |
Every rule cites its source: platform style guides, DDEX, the ISRC Handbook or GS1. See guides.
What it doesn't check
Audio, artwork, lyrics, DDEX XML files and rights ownership. It doesn't "certify" anything; a clean result means none of these 21 rules fired, not that a DSP will accept the release.