01Plates

Survey plates

Interface captures from the running site, with more frames reserved.

The SongSuey home page: a dark hero explaining the authorship score, live catalog stats, and the top of the scored artist grid
Plate 01 · Home page · live catalog stats
The SongSuey artist index: a filterable directory of artists scored by songwriting credits
Plate 02 · Artist index · scored and filterable
A SongSuey artist page: Elton John, photo and all, scored at 97 percent authorship
Plate 03 · Artist page · authorship score
A SongSuey artist page: Santana scored at 59 percent authorship in the collaborator tier
Plate 04 · Artist page · the collaborator end of the scale
A SongSuey album page: the Thriller header with cover art, production credits, and a 44 percent album authorship score, Michael Jackson holding a writing credit on 4 of 9 tracks
Plate 05 · Album page · authorship, per album
A SongSuey album page: the Dark Side of the Moon header with cover art and a 100 percent album authorship score, all 10 tracks written by Pink Floyd
Plate 06 · Album page · written by the band

02The problem

Does this artist write their own songs?

Songwriting credits are public record, but try actually using them. The polished databases (Muso.AI, Jaxsta) keep track-level credits behind a paywall. The free ones stop at the album level, where twelve tracks of names blur into one liner note. And the crowd-sourced ones take whatever gets typed in, with no verification pass behind it.

So the simplest question a fan can ask goes unanswered: does this artist write their own songs?

SongSuey answers it with a number. Every artist gets an authorship score: the percentage of their studio catalog where the artist, or a member of the band, holds a lyricist or composer credit. It's computed per track from verified credits. Never estimated, never hand-waved.

03The data model

One JSON file per artist. No database.

There's no database and no CMS. The whole catalog is flat files, one JSON file per artist. 170+ files, over a million lines between them. Every track carries a credits object with five role groups: lyricists, composers, producers, mixers, and performers, with performers carrying roles like "Lead Vocals." That flat-file, build-time architecture is the same frontend and JAMstack work I do for clients.

Albums carry their paper trail with them: a sources[] array of citations, a verified flag, and a lastVerified date. At the latest survey, 99% of albums are verified against primary sources.

  • 170+ artist files
  • 1M+ lines of JSON
  • 5 credit role groups
  • 99% of albums verified
Data specimen · one track, as it ships
{
  "number": 1,
  "title": "...",
  "credits": {
    "lyricists": [
      { "name": "Billie Eilish" },
      { "name": "Finneas O'Connell" }
    ],
    "composers": [...],
    "producers": [...],
    "performers": [
      { "name": "Billie Eilish", "roles": ["Lead Vocals"] }
    ]
  }
}

04Build pipeline

Everything on the page is derived

The Eleventy config runs 1,214 lines and defines roughly 80 custom filters. Between them, they compute every piece of page content from the raw track credits at build time. Nothing is typed twice.

Track credits feed ~80 Eleventy filters produce Every score, chart & label

  • Authorship score & tier

    Six tiers, from Complete Artist down to Singer/Performer.

  • Writing breakdowns

    Sole-written, co-written, and outside-written splits.

  • Authorship trajectory

    Per-album charts tracing how authorship shifts across a career.

  • Decade heatmaps

    Output and authorship mapped decade by decade.

  • Era ribbons

    Career phases charted as ribbons along the timeline.

  • Collaborator networks

    Who works with whom, plus top-collaborator lists.

Survey noteBecause everything derives from track data, a chart can never disagree with the credits underneath it.

05Guardrails

The build defends itself

SongSuey publishes from CI, so the data has to hold its own line. Two layers of checks stand between an edit and the live site.

Preflight · blocking

validate:data runs before every build

If any check fails, nothing deploys.

  • Every artist id matches its filename.
  • Every date parses in the expected format.
  • Every credit object matches the five-role shape.
  • Every award entry is well-formed; a malformed one once crashed a deploy.
  • AllMusic citation URLs get flagged; that site blocks bots, and unverifiable links shipped once.

Postbuild · sweep

The rendered site gets audited too

After Eleventy writes HTML, a second pass checks the output, not the input.

  • Re-scans the rendered HTML page by page.
  • Audits the content that actually shipped.
  • Validates the schema end to end.

Survey noteThe validator comments read like a postmortem log: every rule exists because something once went wrong.

06Nice touches

Details that don't announce themselves

The systems around the content: each one small, each one built so the site runs itself.

  • autoLink filter

    Scans prose and internally links any mention of a known artist, member, alias, or album. Longest match wins, it refuses to self-link, and everything is HTML-escaped on the way out.

  • Scheduled releases

    Artists go live by publishDate, gated at build time, with a full editorial schedule dashboard for running the queue.

  • Enriched % score

    A weighted completeness score per album (FAQs weigh 3, insight 2), so editorial progress is measurable instead of a feeling.

  • Build-time OG cards

    Per-page Open Graph cards rendered at build time with resvg and bundled fonts. No screenshot service in the loop.

  • Self-hosted Lighthouse badges

    Performance badges generated in-house and served from the site itself.

  • LQIP cover placeholders

    Blurred low-quality placeholders generated with sharp, so album covers never pop in late.

Third-party image & badge services in production · 0

Stack

  • Eleventy 3
  • Nunjucks
  • Node.js
  • Playwright
  • sharp
  • resvg
  • GitHub Actionsdeploys toGitHub Pages

By the numbers

  • 170+ artists
  • 1,700+ albums
  • 22,000+ tracks
  • 99% verified against sources
  • ~80 custom Eleventy filters

07Transmission

Have a data-heavy site that needs to stay trustworthy?

SongSuey is what happens when a frontend developer treats data integrity as part of the design. If your team, in Chicago or anywhere, runs a site that lives or dies on accuracy, I'd love to hear about it.