Rules engine

How the checker works

One rules file, one engine, used by the free checker, the API and our audits.

Pipeline

  1. 1

    Parse

    CSV or JSON rows are parsed in memory; column names are matched to the 12 fields we read.
  2. 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. 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

CreditsFEAT_FORMAT, FEAT_IN_TITLE, FEAT_IN_ARTIST, FEAT_MISMATCH, GENERIC_ARTIST
TitlesVERSION_PARENS, ALL_CAPS, EMOJI, EXCESS_PUNCT, KEYWORD_STUFFING, PROMO_TEXT, DUPLICATE_TITLE
IdentifiersISRC_FORMAT, ISRC_DUPLICATE, UPC_FORMAT
Release fieldsEXPLICIT_FLAG, LANGUAGE, GENRE_MISSING, SHORT_DURATION
AI disclosureAI_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.

Try it