Spotify reporting,
on autopilot.

Artist marketingSpotifyMCP toolsClaude skillsDeterministic scriptsOne sprint
// the challenge

The numbers were there.
Collecting them didn't scale.

A company that manages and promotes a roster of artists wanted sharper tracking of how their advertising was actually performing on Spotify. The performance data existed, artist by artist, inside the Spotify for Artists view. Getting it out, into one place they could actually report on, was the hard part.

Every month, someone opened the platform and worked through it by hand, one artist at a time: navigate to the right screen, read the figures, copy them into a spreadsheet, move to the next artist, repeat. Across a full roster, hours disappeared before any analysis even began. And because it was manual, it was inconsistent and easy to skip, which made trending anything reliably over time close to impossible.

That was the real cost. Advertising decisions were being made on numbers that were partial, out of date, or slightly different depending on who collected them that month. When the goal is to see which promotion moved streams, saves and listeners, the data underneath has to be complete and consistent first. It wasn't.

// the goal

One source of truth,
trended over time.

What a good outcome looked like was simple to describe and tedious to do by hand: every artist's Spotify numbers landing in one database automatically, in the same shape, on a schedule. With that in place, the team could line up advertising spend against streams, saves and listeners, compare artists, and watch the trend move month over month, across the whole roster, without anyone touching a cell.

So the brief was not a dashboard to look at. It was a dependable pipeline that fills their own database with clean Spotify data they can report on however they like, and keeps filling it, on its own.

// how we built it

Guided, then skilled,
then deterministic.

We didn't jump straight to code. We hardened the workflow in three deliberate stages, each one taking more of the human out of the loop, until what was left ran on its own and ran the same way every time.

01

Guided with MCP tools

We drove it by hand first. Using MCP tools, we guided the AI step by step through a live browser: open Spotify, go to the right place, read the figures for one artist. Slow on purpose. This is where we nailed down the exact steps the workflow actually needs, the ones a script can later run without thinking.

02

Captured as skills

Once the steps were proven, we wrote them up as skills, so Claude, or any capable LLM platform, could run the whole sequence on its own by following the skill instead of being walked through it each time. The person stopped clicking. The AI followed the recipe, end to end, across every artist on the roster.

03

Compiled into scripts

After the skilled workflow ran clean, we converted the skill steps into local scripts, real software. Now it runs 100% deterministically: the same inputs give the same output on every run, with no AI improvising in the hot path. That is the difference between a demo and something you can report on.

Here's the path we took, from clicking by hand to a script that runs itself:

// how we hardened it · from guided clicks to a deterministic script
flowchart TD
  A["Stage 1: guided with MCP tools, a person drives the browser step by step"] --> B["We learn the exact steps the workflow needs"]
  B --> C["Stage 2: capture the steps as skills, an LLM runs the whole sequence on its own"]
  C --> D["Verify the workflow runs clean, end to end"]
  D --> E["Stage 3: compile the skills into local scripts, deterministic software you own"]

Why bother with all three stages? Because each one buys something the next needs. Guiding by hand finds the real steps, not the ones you assume. Skills prove those steps run without a human babysitting them. Scripts make the whole thing repeatable and cheap to run forever. Skip a stage and you either ship something brittle, or you spend far longer getting to something you can trust.

// how it runs now

One command,
the whole roster.

The three stages above are how we built it, not three things running side by side. Each version replaced the one before it, so what runs day to day is just the last one: the script. A non-technical person just asks Claude to run it. From there it's hands-off: the scripts collect each artist's data from Spotify across the whole roster, put the numbers into one consistent shape, and write them straight into the company's database, ready for reporting and statistical tracking.

// how it runs now · one command, the whole roster
flowchart TD
  A["Ask Claude to run the scripts"] --> B["Scripts collect the data from Spotify, artist by artist across the roster"]
  B --> C["Normalize the numbers into one consistent shape"]
  C --> D["Write straight into the company's database"]
  D --> E["Reporting and statistical tracking, trended month over month"]

Because the collection is deterministic, the reports finally sit on data that's complete, consistent, and current, not a hand-copied sample that changes with whoever did it that month. Run it this month, run it next month, and the only thing that differs is the numbers themselves.

// built with
Claude ↗ MCP tools Claude skills Browser automation Deterministic scripts Your database
// what it unlocks

Reporting the old way
couldn't reach.

Once the data lands in one database on a schedule, the questions the team can answer change. The same numbers that used to take an afternoon to gather now sit ready to query, so reporting moves from "what did we manage to collect" to "what is actually happening". They can now ask:

  • how each artist is performing on Spotify, month over month, without waiting on a manual pull;
  • which advertising and promotion actually moved streams, saves and listeners, and which didn't;
  • how the whole roster compares at a glance, on the same consistent numbers;
  • where the advertising budget is working hardest, so the next spend goes where it pays;
  • and how a campaign's effect holds up over time, not just in the week it launched.

None of that is new data. It was always there in Spotify. What changed is that it now arrives complete, consistent, and on time, which is the difference between a hunch and a report.

// the outcome

Hours a month,
back in the diary.

5-10
hours of manual collection saved every month
100%
deterministic, the same result every run
1
sprint, from first guided click to owned software

The team stopped repeating the same afternoon every month. Collection runs across every artist and lands in their database on its own, so ad-performance tracking sits on numbers that are actually trustworthy. And because it's scripts they own, they run it whenever they want, and extend it themselves when they add an artist or start tracking a new metric. No black box, no lock-in, no waiting on us.

// questions

Common questions.

Can you automate collecting data from Spotify for Artists?

Yes, we did exactly that. We guided the collection by hand with MCP tools to learn the precise steps, captured those steps as Claude skills so an LLM could run the whole sequence, then compiled the skills into local scripts. The scripts now collect each artist's Spotify figures across the roster and write them into the company's database, with no one copying a cell.

Is the automation reliable, or does the AI change its answers?

It's reliable because there's no language model in the live path. The workflow was designed and proven with AI, then compiled into ordinary deterministic scripts. The same inputs produce the same output on every run, which is what makes the reporting safe to act on.

Do you need a technical person to run it?

No. A non-technical team member just asks Claude to run the scripts. The data is collected across the roster, normalized into one shape, and lands in the database ready for reporting, hands-off.

How long did it take to build?

One sprint. We went from guiding the first clicks by hand to a deterministic script the team runs themselves, inside a single sprint.

Do we own it, or is it locked to you?

You own it. The scripts are yours to run and extend. Add an artist to the roster or track a new metric, and you change the scripts yourself, with no vendor in the loop.

How much time does it save?

About 5 to 10 hours of manual collection every month across the whole roster, plus the consistency of numbers that no longer depend on who did the copying, or whether anyone remembered to.

Got a manual afternoon
worth automating?

Bring the workflow you keep doing by hand to a Sprint. We'll harden it into deterministic software you own, together, and you'll leave running it yourself.

Run a Sprint with me → See more projects