Today · Daily briefing · Linear + B2B + recent activity
The heartbeat of FanChants.

What to do today, what changed overnight, and what's stuck.

Reference numbers

web · music · catalogue
Site sessions last 7 days · GA4
Unique users last 7 days · GA4
Streaming MRR last full month
Playlists published last 7 days
Songs in catalogue active

Today's actions

stalest · most-urgent · most-actionable
  • Loading…

Operations queues · from the database

DB · … every count = a pending human decision
  • Loading…

What changed · last 24h

Linear · publishes · licensing · payouts
  • Loading…

B2B · sales pipeline

CRM · … open CRM →
Won · this month
Outstanding pipeline
To chase

Business outstanding

    To chase — stale + inbound awaiting us

      Loading outbound…

      To-dos · in priority order

      click any to open in Linear

      Mikey

      • Loading…

      Waiting on Giles

      • Loading…

      Up & down

      7-day · 30-day · auto from data sources

      Risers

      Loading…

      Fallers

      Loading…

      Achievements · last 7 days

      auto · publishes · inquiries · payouts
      • Loading…

      What the database taught us

      from the June 2026 operations discovery
      • Loading…

      Worth knowing

      curated · edits to data/intranet/this-week.md

      The dev copy of the real site is live on the Mac mini — code from GitLab, Karel's database restore (40,673 chants), site/admin/API on localhost 8800/8001/8002. All rebuild work happens there; production untouched.

      The plan is v2: priority order, no weeks — P1 newsletter, P2 website, P3 matchday social + Stan, then the checking sheets, lyric sweep, enrichment import, vlogger programme. Full list: docs/strategy/fanchants-plan-v2.md.

      This page is the Heartbeat — the end state is the business steering from here. The operations queues above come straight from the database; each count is a pending human decision. Next: one-click actions per queue.

      Overview · last 30 days FX: £1 = $1.27
      The state of FanChants — at a glance.
      Streaming MRR last full month
      Trailing 12mo all distributors USD
      Catalogue active songs
      Spotify mapped album URL coverage
      B2B pipeline open inquiries

      Effort streaks · this week

      visible push-against target

      What changed this week

      auto-digest · last 7 days

      Secondary tiles

      click to drill into source

      A · Revenue & streams overview

      All values USD, from FanChants_KPI_Master.xlsx. Tournament months (WC, EURO) flagged on the trend.

      Monthly revenue trend
      Streams & downloads
      monthly
      Platform breakdown (lifetime USD)
      Platform revenue over time
      Total revenue across distributors

      Routenote (primary, in FanChants_KPI_Master.xlsx) stacked with Sounddrop (data/finance/sounddrop-monthly.csv) and Ditto payouts (when populated). All values converted to USD; Ditto payouts are converted from GBP at the rate in config.js → finance.usd_to_gbp_rate.

      Distributor lifetime mix (USD)

      Lifetime totals from each distributor pipeline. Hover for per-distributor totals; Sounddrop and Ditto are gitignored sensitive sources bundled at build time.

      Service mix across all distributors (lifetime USD)
      Routenote · Sounddrop · SoundOn

      Where every dollar of streaming revenue actually comes from, combined across distributors. Routenote contributes its Store-Mix sheet; Sounddrop contributes per-service rows from sounddrop-by-service.csv; SoundOn from soundon-by-service.csv (GBP→USD at config rate). Ditto only reports a single lifetime payout — no service breakdown to merge.

      Top 10 albums by revenue (lifetime)
      Top 10 albums by streams (lifetime)
      Top tracks by revenue
      Top countries by revenue (lifetime)
      Premium vs free streams (proxy)

      Routenote reports a single stream count and a single net USD per row — Premium vs. free isn't broken out at source. The chart below uses the standard industry split (Spotify Premium ≈ 75% of revenue, ≈ 35% of streams) to give Mikey an estimate. Wired to be swapped when a real split becomes available.

      B · Catalogue health

      Source of truth for catalogue: scripts/enrichment/chants_by_originaltune_snapshot.csv (22,649 chants).

      Chants by country (top 15)
      Chants by type
      Copyright breakdown
      Catalogue growth (last-modified by month)
      Short-tracks risk dashboard
      2× annualisation applied — partial KPI window

      Per-album annualised earnings × Routenote $25/yr All-Access cost frames each album as Green/Yellow/Amber/Red. Green <$10/yr, Yellow $10–100, Amber $100–500, Red >$500.

      Top Spotify artists by revenue
      Artist-profile merge candidates

      Spotify artists where multiple RouteNote 'Album Artist' variants map to one profile. File requests with Routenote Support to merge.

      C · Spotify playlist programme

      Two tracks. Track 1 — @FanChants official, zero-trademark. Track 2 — Giles dev curator programme + personal accounts (trademark-fair-use).

      WC2026 playlist rollout

      cadence · coverage · personas

      Publish cadence

      status=ok across all cohorts · click a tile for URLs

      WC2026 nation coverage

      Persona slate

      Per-playlist metrics

      Programme progress vs. targets
      Daily publish log (WC2026)
      Owned @FanChants public playlists (audit buckets)

      Profile-display cap is 200 — see docs/decisions/2026-05-09-wc2026-publishing-cadence.md.

      WC2026 spec table

      D · Web analytics (Google Analytics 4)

      E · Operational pipelines

      Data Quality notes (KPI workbook)
      League update — applied moves (April 2026 sweep)

      From reports/2026-04/changes.csv (the English-pyramid CSV apply). The 2,094-row global anomalies workbook is referenced — clicking the chip below opens the file.

      Recent decisions log

      F · More numbers worth watching

      Routenote Premium upgrade ROI

      Top 100 albums by trailing-12 normalised USD. Verdict per the Premium Upgrade Analysis sheet (Strong / Watch / Skip).

      Tournament uplift — biggest beneficiaries

      Per-album, per-tournament-month USD vs. its baseline. WC = Qatar 2022. EURO = 2024.

      Fan-photo/video pipeline (Canvas content)
      Original-tunes enrichment progress
      Catalogue snapshot — leagues with most chants

      G · Social reach

      YouTube auto-pulled at build time. Other platforms read from data/social/social-metrics.csv — see the schema in that folder's README.

      Follower trend (12 months)
      Monthly views by platform
      YouTube — recent uploads

      Loading…

      Email newsletter — not yet wired

      When email-newsletter analytics start arriving, drop them at data/social/newsletter-metrics.csv with columns: month, sent, opens, open_rate, clicks, click_rate, unsubscribes, new_subscribers, total_subscribers, notes. The dashboard will surface them here as: subscriber count + Δ, last-send open-rate, click-rate trend, top-performing send.

      To wire: add newsletter_metrics: "data/social/newsletter-metrics.csv" to dashboard/config.js sources, add the path to dashboard/build.py CANONICAL_SOURCES, and a renderNewsletter() stub patterned after renderSocial. Card disappears once data is present.

      T · TikTok analysis

      TikTok is structurally different from streaming DSPs — pays per-view at ~$0.005/1000 views, but moves a huge volume. ~1.2bn plays/year per the 2026 estimate; revenue flows through SoundOn (TikTok's own distributor). Direct-deal negotiation in progress.

      TikTok revenue trend (monthly, GBP)

      Sums TikTok rows from data/finance/soundon-by-service.csv per reporting period. Lag of ~6 weeks while SoundOn waits on TikTok's monthly report.

      TikTok views vs revenue

      SoundOn views vs GBP per month. The slope is effective revenue-per-view — useful to track when the direct-deal lands.

      TikTok vs other SoundOn services (lifetime GBP)

      TikTok is the largest single SoundOn service. The rest of the SoundOn fan-out (Spotify, Facebook/Instagram story, YouTube CID, etc.) is shown for context.

      TikTok presence (CLAUDE.md baseline)
      • PLAYS/YEAR · ~1.2bn across the catalogue (2026 estimate)
      • REVENUE/YEAR · ~£600 via SoundOn — currently the only path TikTok pays out on
      • EFFECTIVE CPM · ~£0.0005 per 1000 views
      • DIRECT DEAL · negotiating — direct-deal economics would 10×+ the per-view rate
      • CONTENT ID · TikTok's Content ID matches FanChants audio against creator UGC; SoundOn collects the per-view share. This is how the bulk of those 1.2bn plays earn anything at all.
      Why TikTok deserves its own page

      TikTok is the largest single audio surface FanChants reaches by raw volume, and the lowest yielding per view. The dynamics are different from DSP streaming: volume scales superlinearly with cultural moments (cup finals, Eurovision, viral creators picking up a chant), but revenue is bounded by the CPM until the direct deal lands. Folding TikTok into a generic "Revenue" tile loses both the volume signal and the deal-pending story.

      When the direct deal closes, this page is where the new per-view rate gets plotted as a goal line on the views-vs-revenue chart.

      H · Finance

      Reads data/finance/financial-summary.csv — Giles updates it after each month-end close. Streaming USD from the KPI workbook is auto-converted at the rate in config.js when the GBP cell is left blank.

      Monthly revenue by channel (GBP)
      Net result (GBP)
      Monthly P&L (GBP)

      I · B2B licensing pipeline

      Reads data/licensing/inquiries.csv. Edit the CSV after every inquiry — the dashboard recomputes conversion rates and surfaces stale entries.

      Pipeline by status
      Inquiries by usage
      Open inquiries

      K · Releases

      Pitch + Canvas + Artist Pick + social status per release. Reads data/releases/upcoming.csv (FAN-303). The editorial pitch is the only hard deadline — it closes at release.

      Upcoming & recent releases

      L · FanCapo moderation

      Reads data/fancapo/moderation-status.json, generated from the local dev meta DB and legacy FanCapo approvals. Snapshot only: no alerts, no emails, no DB writes.

      Pending approval age
      Decisions this week
      Capo trust roster
      Problem-child flags

      Capos with two or more rejected legacy approvals. Member emails are stripped from the committed snapshot.

      J · CRM (B2B outreach)

      Reads data/crm/snapshot.json — a JSON snapshot of the Django CRM (webapp/crm/), regenerated by python manage.py export_dashboard_snapshot. Run alongside dashboard/build.py on the morning cron.

      Deal pipeline by status
      Email verification health
      Campaigns
      Bucket performance

      The B2B buckets — contacts, outreach, replies, deals, won value over the last 30 days. Which bucket is converting.

      Organizations by category

      Where the CRM's organizations sit across the B2B market map.

      Campaign health

      Per active campaign — delivery, opens, replies, deals. Click a row to open it in the CRM.

      Hot leads needing action

      Replies and hot-classified contacts where no follow-up action has been logged since the reply landed. Top 25, most-recent-first.

      Activity — last 7 days
      Gmail sync health