
The first hour of the workday is almost always the same block. Coffee, inbox, a few dashboards, maybe a document to skim before a 10am call. It is low creative load and high focus, and the wrong audio wrecks it. Sports talk radio will not do it. A podcast will not do it. What that hour needs is smooth jazz and lo-fi with no heavy bass and no big vocals, refreshed often enough that you are not hearing the same twelve songs every week.
So I stopped building that playlist by hand and gave the job to an agent. I have been running a Spotify DJ agent for months now, well past 700 consecutive cron runs without a failure, and this is the newest job on it. Every weekday at 7:30am, before I am even at the desk, a scheduled job digs through Spotify, pulls 20 fresh tracks split between smooth jazz and chill lo-fi, adds them to a private playlist called Slow Mornings, and logs every track so it never repeats itself. By the time the coffee is done, the playlist is done.
This runs on GLM 5.3 Flash through my Z.ai Coding Subscription or GPT 5.6 Luna through my Codex subscription, though any flash tier model handles it fine. Here is exactly how the build goes, and more importantly, why the planning pass before the build is the part that actually matters.
Core Concepts
- Giving one agent profile a single job so its context and history stay clean.
- Writing a playlist brief instead of a prompt, and why that changes the output.
- Forcing a plan first pass so the agent proposes scope before it builds anything.
- Turning a one time playlist into a repeating scheduled job on weekday mornings.
- Running the whole thing on a flash model so it barely touches your usage.
- Building a feedback loop that learns from the songs you delete.
- The one prerequisite, Spotify API access, which takes about ten minutes.
Who does this apply to
Anyone whose morning starts with a focus block they want to protect. It is also a very low stakes way to learn how scheduled agent jobs work. Music is forgiving. If the job returns a bad track you delete it and move on, which makes it a much better first automation than anything touching client data or your calendar.
Why the Morning Inbox Block Deserves Its Own Playlist
Most people already have a music setup that works for the rest of the day. I have a daily discovery job that curates a wide mix of indie rock and everything adjacent to it, and that playlist is great at 2pm. It is completely wrong at 7:30am when I am triaging an inbox and checking analytics before a meeting.
The morning block has different requirements. It needs to fill the room and drown out the lawnmowers and garbage trucks without pulling attention. That means no vocals loud enough to read along with, no bass that makes you nod (or gives you a headache) instead of think, and enough variation that your brain does not start predicting the next track. Smooth jazz and dreamy lo-fi hit that target almost perfectly.
The reason to automate this rather than save a playlist once is staleness. A static playlist stops working after about two weeks because you have memorized it. A playlist that adds 20 new tracks every weekday morning never gets there.
Start With a Profile That Only Does Music
This build sits inside a dedicated Spotify DJ profile whose only job is finding music. That isolation is the whole reason it works well over time. None of this needs a terminal anymore either, since the desktop app handles profiles, jobs, and models in a window. The profile carries its own model, its own Spotify authentication, its own memory, and its own history of every session, so when it goes looking for a new artist it is drawing on months of context about what I actually kept.
If you have not set up a music agent before, I walked through the full foundation in how to build a Spotify DJ agent with Hermes, including the custom skills that turn a basic music bot into something that actually finds new artists. The profile setup itself is covered in creating a new profile and SOUL.md in Hermes Desktop.
Mine was already running a few jobs before this one, which is worth seeing because it shows the range.
| Existing job | What it does |
|---|---|
| Springsteen backfill | Every time it hears a new Bruce Springsteen track, it adds it to the dedicated playlist |
| Bob Dylan backfill | Same pattern, different artist, running on its own schedule |
| Daily discovery | A wide net across genres, run at 9am, more indie rock than anything |
| Slow Mornings | The new one. Smooth jazz and lo-fi only, weekday mornings at 7:30 |
The artist backfill pattern is the easiest one to copy. Pick a favorite artist, tell the agent to add anything new it encounters from them as you listen, and let it run. The new job here is a spin off of daily discovery, narrowed down to one mood and one time slot.
Write a Brief, Not a Prompt
This is the part that separates a playlist you keep from a playlist you abandon in a week. You can absolutely type “make me a chill morning playlist” and get something. It will be fine. It will also be generic, because you handed the agent every decision.
Instead, seed it and constrain it. I gave it one smooth jazz artist I already love as the anchor for the sound, described the target as smooth, chill, lo-fi, with no heavy bass, and then told it to go find more in those categories. Two constraints did most of the heavy lifting on quality:
- Do not limit it to Spotify curated playlists. Community built playlists are where the good morning sets actually live.
- Smaller artists are welcome. Without that line you get the same rotation of algorithmically safe names every single day.
Then the important instruction: respond first, before building. That single sentence turns the agent into a collaborator instead of a vending machine. It went digging, came back with candidate artists and playlists, and I got to react to real options before anything was committed.
That first haul confirmed the seed artist had a deep enough catalog to build on, roughly 295 tracks with a real community of morning playlists around it, and surfaced names I would not have found on my own. Sleepy Fish came back as a dreamy, floaty chill hop match, alongside a few piano driven artists in the same lane. It also came back with a bunch of generic lo-fi coffee shop material, which I cut on the spot. That correction took one sentence, and it happened before a single track was added to a playlist.
The planning pass is not overhead, it is the build. Ten minutes of shaping scope up front is what makes the difference between a job you keep for a year and one you turn off in a week.
The Playlist Brief I Actually Locked In
After the back and forth, here is the spec we agreed on. Every one of these lines came out of the planning conversation rather than a form.
| Setting | What I chose | Why |
|---|---|---|
| Playlist name | Slow Mornings | Named for the use case, not the genre, so the purpose stays obvious |
| Destination | A new private playlist | Kept separate from daily discovery so the moods never bleed together |
| Tracks per run | 20 | Long enough to cover a full inbox block without repeating |
| Genre split | Half lo-fi, half smooth jazz | Prevents it from drifting heavy in either direction |
| Lo-fi definition | Dreamy piano, soft drums, no heavy bass | Rules out the beat driven side of lo-fi entirely |
| Vocals | No big vocals | Anything you can sing along to competes with reading |
| Schedule | 7:30am, weekdays only | Ready before the coffee is, and no weekends |
| Behavior | Additive, never removes tracks | I do the deleting, and those deletions are the training signal |
| Memory | Private log of every track added | Checks the log before curating so it never serves the same song twice |
The timing detail is small but deliberate. It runs at 7:30, ahead of the 9am daily discovery job, so the two never collide and the morning playlist is always the one that is fresh when I sit down.
Run It on a Flash Model and Stop Watching Your Usage
A recurring search and curate job is exactly the workload flash tier models were built for. There is no complex reasoning here. It is search, filter against a log, and write to a playlist. Paying premium model rates for that every weekday morning is money set on fire.
I run this on GLM 5.3 Flash through my Z.ai Coding Subscription (starts at about $16) or GPT 5.6 Luna on Max through the Codex subscription, which is generous enough that a daily job like this is effectively free. Any flash tier model works: Gemini Flash, DeepSeek Flash, or Haiku. If you need to wire one of those up first, I covered the full API setup for GPT-5.6 Luna and DeepSeek V4 Flash step by step, and if you are still deciding, my breakdown of the best AI models for marketing compares them on cost and capability. The model choice is not precious, and swapping it later takes one sentence.
That is worth underlining, because it is where a lot of people get stuck. You do not have to migrate anything by hand. Asking the agent to edit every scheduled job to use a different model does exactly that, across all of them at once. When I decided to stop paying separately for one provider and consolidate onto a subscription I already had, the whole switch was a single request. If you want the full math on what a stack of these jobs costs to operate, I broke down running a 21 job AI automation pipeline for pennies a day.
The Feedback Loop Is What Makes It Yours
Here is the piece that turns this from a novelty into something you keep. The job maintains a private log of every track it has ever added. Each morning, before it curates, it checks the new candidates against that log so you never get the same song twice.
On top of that, it never removes anything. I do the removing. Every morning I skim the additions and delete the handful that miss, and the instruction tells the agent to notice which tracks disappeared and adjust accordingly. Delete three tracks by the same artist and it stops surfacing that artist. Delete anything with a heavy beat and it drifts softer on its own.
That is a genuine training signal built out of an action you were already taking. No ratings, no thumbs up, no separate feedback step. You just delete what you do not like, the same way you always have, and the job gets sharper every week.
Any recurring job gets better if you give it a memory of what it already did and a way to read your corrections. That is the transferable idea here, and it has nothing to do with music.
The One Prerequisite: Spotify API Access
None of this works until the agent can talk to Spotify, and that setup takes about ten minutes. You register an application in the Spotify developer dashboard, grab the credentials, and authorize the account.
If that sounds like the part where you bail, do not. The agent will walk you through it step by step, and with browser control it can largely do it for you. There is a browser panel that opens right inside the session, and newer builds of Hermes Agent can drive a separate logged in Chrome window using your existing credentials. Either way it can see the same screen you are looking at, so you are not screenshotting a settings page and asking what to click next. You log in, it handles the rest.
What the First Run Delivered
The playlist showed up private in Spotify, exactly 20 tracks, with the first scheduled run set for Monday at 7:30am. The split held. Half of it was the smooth jazz lane anchored to the seed artist, half was the dreamy piano and soft drum side of lo-fi, and there was nothing on it with a beat that would pull focus.
The detail I did not expect was context. I was traveling that day, and the job leaned the selections toward a travel day version of that mood without being told to. That is what months of session history inside a dedicated profile buys you, and it is a good argument for keeping those sessions organized rather than letting them pile up.
Two settings are worth raising once the job is live. Bump the profile memory budget up, mine sits at 30,000, so it does not hit a ceiling as the track log grows. And put real instructions in the SOUL.md file, which is where the profile’s personality and curation rules live. Mine tells it to act as a music curator and Spotify DJ and to organize by mood, which is why the recommendations come back with actual opinions attached instead of a bare list.
Building the Playlist by Hand Versus Scheduling an Agent
| Task | Doing it yourself | Scheduled agent job |
|---|---|---|
| Time per week | 20 to 30 minutes of hunting and queuing | About a minute of deleting the misses |
| Freshness | Goes stale in roughly two weeks | 20 new tracks every weekday |
| Repeats | You forget what you already added | Checked against a private log every run |
| Discovery range | Whatever the algorithm serves you | Community playlists and smaller artists by instruction |
| Mood control | Drifts as you add on impulse | Held to a genre split you specified |
| Learning | Only what you remember to avoid | Reads your deletions and adjusts |
| Ready when you are | Only if you did it the night before | Done at 7:30am before you sit down |
| Running cost | Free, but it costs you the time | Pennies on a flash model |
The Pattern Matters More Than the Playlist
Strip the music out of this and what is left is a template you can point at almost anything: a narrow scope, a written brief, a plan you approve before the build, a schedule, a cheap model, and a memory of prior runs so it never repeats itself.
That is the same shape as a daily report, a morning news brief, a competitor watch, or an inbox summary. I use the identical structure for automated weekly Google Search Console reports and for daily news brief cron jobs. Same mechanics, higher stakes. It is also how I run an automated Notion content library, and it is the broader reason AI native workflows are replacing traditional automation tools. Which is exactly why a playlist is the right place to practice.
One more option worth knowing about once you have jobs running. Instead of opening a full session every time you want to tweak something, you can keep an ongoing chat thread tied to the same profile and wire it into Telegram or whatever messaging app you already use. Then adjusting tomorrow’s playlist is a text message.
Frequently Asked Questions
Do I need Spotify Premium for this?
For this specific job, no. Building and adding to playlists works on a free account. Premium is only required if you want the agent to actually control playback and start the music for you, which is the setup I walk through in the Spotify DJ agent build.
How long does the whole setup take?
About ten minutes for the Spotify API connection, then roughly ten more for the planning conversation and locking in the schedule. After that it is zero. The job runs itself and the only ongoing input is deleting the tracks you do not like.
Will 20 tracks a day make the playlist unmanageable?
It grows fast, which is the point, since a deep playlist on shuffle is what keeps the morning from feeling repetitive. If you would rather cap it, ask for a standing playlist that swaps a handful of tracks in and out on each run instead of adding on top. Both patterns work, so pick based on whether you want a growing library or a fixed rotation.
Can I have it add to an existing playlist instead of making a new one?
Yes, and that is just a line in the brief. I chose a separate playlist so the morning mood never mixes with the wider discovery job, but pointing it at a playlist you already listen to is a one sentence change.
Does this only work for chill music?
Not at all. The genre is the least important variable in the whole build. Hip hop, pop, K-pop, house, a specific label’s catalog, or new releases from one artist all work with the same structure. Swap the seed artist and the mood description and everything else stays identical. The discovery skills on the profile do the heavy lifting no matter which genre you point them at.
What if the recommendations are bad on the first run?
Then you tighten the brief, which is why the plan first pass exists. Mine tried to steer toward generic coffee shop lo-fi and I cut that direction before anything got built. Treat the first run as a QA pass and budget one round of corrections.
The Takeaway
The playlist is a small win. The habit behind it is the real one. Describe the outcome precisely, make the agent show you a plan before it builds, put it on a schedule, run it on a cheap model, and give it a memory of what it already did so it improves instead of repeating. Do that with music first, where a bad result costs you one click, and you will have the pattern down before you point it at anything that matters.
If you want help mapping this kind of automation onto your actual marketing workflow, you can read more about how I approach marketing systems or book a call.
About Jason Pollak
Jason Pollak is a marketing strategist with over 10 years of experience building campaigns for entertainment brands, artists, and businesses across music, film, television, eCommerce, and B2B SaaS. As Director of Marketing at Young Money Entertainment, he grew Lil Wayne’s Facebook following from 10 million to 50 million and managed over 60 million followers across the roster. He also served as Paid Media Director at Horizon Media, launching major TV shows for History Channel, A&E, WWE, and Lifetime, and led film marketing for Utopia Distribution, generating over $10 million in revenue on a $200K media spend. Jason specializes in paid media, organic social strategy, email automation, SEO, content development, and AI-driven marketing systems. He holds a BA in English Literature from Binghamton University and a Masters in Media Studies from Brooklyn College. Learn more at jasonpollakmarketing.com.
