<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>The BeatVault Blog</title>
    <link>https://studiomode.app/blog</link>
    <description>Notes from the team building BeatVault — the discovery layer artists actually use.</description>
    <atom:link href="https://studiomode.app/blog/feed.xml" rel="self" type="application/rss+xml" />
    <language>en-us</language>
    <copyright>© 2026 BeatVault</copyright>
    <managingEditor>hello@studiomode.app (BeatVault)</managingEditor>
    <webMaster>hello@studiomode.app (BeatVault)</webMaster>
    <ttl>720</ttl>
    <image>
      <url>https://studiomode.app/api/og?type=default</url>
      <title>The BeatVault Blog</title>
      <link>https://studiomode.app/blog</link>
    </image>

    <item>
      <title>The producer flywheel: closing the loop both ways</title>
      <link>https://studiomode.app/blog/producer-flywheel</link>
      <guid isPermaLink="true">https://studiomode.app/blog/producer-flywheel</guid>
      <pubDate>Fri, 01 May 2026 03:00:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[Demand queue + push notifications + RSS feed compose into a closed-loop system. Searchers pull catalog from one end. Producers push from the other. Both spokes are now active.]]></description>
      <content:encoded><![CDATA[
        <p><em>The catalog only bent toward demand reactively. The producer side was never given a way to be proactive — until now, when it became one row in their morning feed.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/producer-flywheel">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Three audio tools, four rounds, zero servers</title>
      <link>https://studiomode.app/blog/three-audio-tools</link>
      <guid isPermaLink="true">https://studiomode.app/blog/three-audio-tools</guid>
      <pubDate>Thu, 30 Apr 2026 03:00:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[Piano-roll scale detector, BPM + key analyzer, guitar tuner. All built in 4 build rounds. None upload anything. The algorithms (FFT, autocorrelation, YIN, Krumhansl-Schmuckler) and why no-server was the cheapest correct choice.]]></description>
      <content:encoded><![CDATA[
        <p><em>The fastest way to handle a request is to never receive it.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/three-audio-tools">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Four leaderboards, one cron: scaling a content engine off a single aggregate</title>
      <link>https://studiomode.app/blog/four-leaderboards</link>
      <guid isPermaLink="true">https://studiomode.app/blog/four-leaderboards</guid>
      <pubDate>Thu, 30 Apr 2026 02:00:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[21 build rounds, four leaderboards, three history archives, eight share cards, one cron. The architecture pattern that made it cheap, and the trap I keep seeing teams fall into.]]></description>
      <content:encoded><![CDATA[
        <p><em>The first time you copy an architecture, you save time. The fourth time, you've created a maintenance contract.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/four-leaderboards">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>The cron piggyback: how we got 4 leaderboards out of 1 Vercel function</title>
      <link>https://studiomode.app/blog/cron-piggyback</link>
      <guid isPermaLink="true">https://studiomode.app/blog/cron-piggyback</guid>
      <pubDate>Thu, 30 Apr 2026 01:30:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[The Vercel Hobby plan caps you at 12 functions and 1 cron. We added 4 leaderboards anyway — by piggybacking idempotent snapshot RPCs on the existing daily-digest cron.]]></description>
      <content:encoded><![CDATA[
        <p><em>Idempotence turns piggybacking from a hack into a contract.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/cron-piggyback">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>The duplicate-URL leak: how 6 canonical tags reclaimed our SEO juice</title>
      <link>https://studiomode.app/blog/canonical-audit</link>
      <guid isPermaLink="true">https://studiomode.app/blog/canonical-audit</guid>
      <pubDate>Thu, 30 Apr 2026 01:00:00 GMT</pubDate>
      <category>SEO</category>
      <description><![CDATA[Six pages on BeatVault were eligible to be indexed under five different URLs each. Trailing slash, www, query params — every variant split the ranking signal. Six lines of HTML later, the bleeding stopped.]]></description>
      <content:encoded><![CDATA[
        <p><em>Invisible bugs don't bubble up. They have to be hunted.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/canonical-audit">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Why we built a leaderboard before we had a community</title>
      <link>https://studiomode.app/blog/leaderboard-before-community</link>
      <guid isPermaLink="true">https://studiomode.app/blog/leaderboard-before-community</guid>
      <pubDate>Thu, 30 Apr 2026 00:30:00 GMT</pubDate>
      <category>Product</category>
      <description><![CDATA[Most products bolt rankings on after they have critical mass of users. We did the opposite — and the leaderboard ended up doing the work of the community we hadn't built yet.]]></description>
      <content:encoded><![CDATA[
        <p><em>Numbers create acquisition. Not because the numbers are big. Because they exist at all.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/leaderboard-before-community">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Ten essays in: what compounded</title>
      <link>https://studiomode.app/blog/ten-essays</link>
      <guid isPermaLink="true">https://studiomode.app/blog/ten-essays</guid>
      <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
      <category>Retrospective</category>
      <description><![CDATA[A short retrospective at the 10-post mark. The three essays that drove disproportionate inbound, what didn't work, and the traits that separate posts that travel from posts that don't.]]></description>
      <content:encoded><![CDATA[
        <p><em>Retrospectives are for the existing audience. Pattern essays are for the future audience.</em></p>
        <p>Read the full retrospective on <a href="https://studiomode.app/blog/ten-essays">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Three callers, one RPC: when to consolidate aggregation</title>
      <link>https://studiomode.app/blog/three-callers-one-rpc</link>
      <guid isPermaLink="true">https://studiomode.app/blog/three-callers-one-rpc</guid>
      <pubDate>Wed, 29 Apr 2026 23:55:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[Same client-side aggregation in three different places. 60 lines of SQL and ~600KB of transfer saved per page load. The pattern of when to push aggregation down to Postgres.]]></description>
      <content:encoded><![CDATA[
        <p><em>Two callers is a coincidence. Three is a contract you haven't written yet.</em></p>
        <p>Read the full breakdown on <a href="https://studiomode.app/blog/three-callers-one-rpc">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Why we rank producers by saves, not followers</title>
      <link>https://studiomode.app/blog/saves-not-followers</link>
      <guid isPermaLink="true">https://studiomode.app/blog/saves-not-followers</guid>
      <pubDate>Wed, 29 Apr 2026 23:30:00 GMT</pubDate>
      <category>Product</category>
      <description><![CDATA[Followers are vanity. Saves are intent. Why BeatVault's producer leaderboard uses save count as its primary signal — and what changes when you do.]]></description>
      <content:encoded><![CDATA[
        <p><em>Pick metrics that are hard to game and tied to the outcome you actually care about. Then make them visible.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/saves-not-followers">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>The OG card factory: 17 share-cards, 1 Vercel function</title>
      <link>https://studiomode.app/blog/og-card-factory</link>
      <guid isPermaLink="true">https://studiomode.app/blog/og-card-factory</guid>
      <pubDate>Wed, 29 Apr 2026 23:00:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[Vercel Hobby caps you at 12 serverless functions. We render 17 dynamic Open Graph cards out of one query-dispatched function. The full pattern, plus why we skipped @vercel/og.]]></description>
      <content:encoded><![CDATA[
        <p><em>The boring infra discipline you adopt under tight constraints compounds into freedom later.</em></p>
        <p>Read the full breakdown on <a href="https://studiomode.app/blog/og-card-factory">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>100 days, 30 features: a building log</title>
      <link>https://studiomode.app/blog/100-days</link>
      <guid isPermaLink="true">https://studiomode.app/blog/100-days</guid>
      <pubDate>Thu, 30 Apr 2026 23:59:00 GMT</pubDate>
      <category>Retrospective</category>
      <description><![CDATA[A retrospective on the 30 features shipped post-launch — 4 that hit, 3 that flopped, 3 sleeper bets, and the meta-lesson about constraints.]]></description>
      <content:encoded><![CDATA[
        <p><em>Personal data + ritual + share = compounding. Producer-side leverage beats consumer-side optimization. Constraints force creativity.</em></p>
        <p>Read the full retrospective on <a href="https://studiomode.app/blog/100-days">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>How we shipped a content site on 12 Vercel functions</title>
      <link>https://studiomode.app/blog/12-functions</link>
      <guid isPermaLink="true">https://studiomode.app/blog/12-functions</guid>
      <pubDate>Thu, 30 Apr 2026 23:30:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[The Vercel Hobby plan caps at 12 functions. We spent them on SSR pages, share-card generation, cron jobs, and webhooks — and packed 11 share card types into one file via query dispatch.]]></description>
      <content:encoded><![CDATA[
        <p><em>The function cap forced us into discipline. Without it we'd probably have ten more endpoints that didn't need to exist.</em></p>
        <p>Read the full breakdown on <a href="https://studiomode.app/blog/12-functions">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>What 5,000 saves taught us about how artists pick beats</title>
      <link>https://studiomode.app/blog/5000-saves</link>
      <guid isPermaLink="true">https://studiomode.app/blog/5000-saves</guid>
      <pubDate>Thu, 30 Apr 2026 22:00:00 GMT</pubDate>
      <category>Data</category>
      <description><![CDATA[Five patterns from 5,000 BeatVault saves: 22-second median save time, 3.2-genre breadth per artist, producer signal 2.4× stronger than genre, and what it implies for any marketplace UX.]]></description>
      <content:encoded><![CDATA[
        <p><em>Artists save fast, save wide, and decide later. The data says marketplace UX has been optimizing for the wrong behavior.</em></p>
        <p>Read the full breakdown on <a href="https://studiomode.app/blog/5000-saves">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Building the BeatVault scraper: 30 days, 3,000 beats, 10,000 quota units</title>
      <link>https://studiomode.app/blog/building-the-scraper</link>
      <guid isPermaLink="true">https://studiomode.app/blog/building-the-scraper</guid>
      <pubDate>Thu, 30 Apr 2026 18:00:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[A retrospective on building the YouTube scraper — quota juggling, the 3.3k catalog ceiling diagnosis, the v3 dedup rewrite that 50× improved efficiency.]]></description>
      <content:encoded><![CDATA[
        <p><em>BeatVault's catalog isn't licensed. We don't host audio. Every beat surfaces from a YouTube scrape on a 10,000 quota unit daily budget.</em></p>
        <p>Read the full retrospective on <a href="https://studiomode.app/blog/building-the-scraper">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>How the BeatVault recommendation algorithm works (v8)</title>
      <link>https://studiomode.app/blog/how-the-algo-works</link>
      <guid isPermaLink="true">https://studiomode.app/blog/how-the-algo-works</guid>
      <pubDate>Thu, 30 Apr 2026 12:00:00 GMT</pubDate>
      <category>Engineering</category>
      <description><![CDATA[The For-You feed isn't magic. It's a stack of nine deliberately tuned signals. A plain-English tour of the BeatVault recs engine — followed-producer boost, recency decay, exploration slot, and the diversity guard.]]></description>
      <content:encoded><![CDATA[
        <p><em>Every recommendation system makes promises it can't keep. We didn't want to build that. Here's everything that goes into picking the next beat.</em></p>
        <p>Read the full breakdown on <a href="https://studiomode.app/blog/how-the-algo-works">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>

    <item>
      <title>Why I'm building "the Spotify of beats"</title>
      <link>https://studiomode.app/blog/the-spotify-of-beats</link>
      <guid isPermaLink="true">https://studiomode.app/blog/the-spotify-of-beats</guid>
      <pubDate>Wed, 29 Apr 2026 12:00:00 GMT</pubDate>
      <category>Vision</category>
      <description><![CDATA[BeatStars works for producers. It's broken for artists. We can fix the discovery layer without disrupting the marketplace — and that's exactly the wedge BeatVault is built around.]]></description>
      <content:encoded><![CDATA[
        <p><em>BeatStars works for producers. It's broken for artists. We can fix the discovery layer without disrupting the marketplace.</em></p>
        <p>Read the full essay on <a href="https://studiomode.app/blog/the-spotify-of-beats">studiomode.app</a>.</p>
      ]]></content:encoded>
    </item>
  </channel>
</rss>
