Ballad
Product · Content marketing

The content calendar, written, shipped and refreshed.

The content marketer you haven't hired, working while you ship: the calendar, the briefs, the drafts in your voice, the posts that carry each piece to every channel, and the refresh when an article slips. You approve; Ballad keeps it moving and shows which pieces brought signups.

The job

What a content marketer would own, done while you ship.

  • Style guide and voice

    A voice for each person who writes and one for the brand, each with the terms it uses and never uses, learned from every edit you make.

  • Editorial calendar

    Plans weeks ahead across every channel, keeps each collection's cadence, and fills the calendar overnight.

  • Briefs and long-form

    Comparisons, guides, case studies and original data, written from a short interview with you, never from invented anecdotes.

  • Distribution

    Every article can become a proposed week of posts, threads and image cards that carry it across your channels.

  • SEO and the back catalogue

    Publishes to your own domain, watches rankings and traffic, and rewrites a piece in place when it starts to slip.

  • Reporting

    Every link carries its post, so each piece is judged on the signups it brought, not the likes.

01 · Voice

A style guide that enforces itself.

The part of a content marketer's job that takes longest to hand over is how the company sounds. Ballad keeps a voice for the founder, one for each teammate who writes, and one for the brand, and holds every draft to them before you see it.

  • Terms, distinctions, samples. The words to use and never use, the distinctions that matter in your field, and a few things you've actually written. A term you correct in review joins the list on its own.
  • The slop gate. Generic phrasing, filler and AI tells are scored and rewritten before a draft reaches you, and no two pieces open the same way.
  • One brand look. Logo, palette and font set once for the workspace, and every card, carousel and article image inherits them.
M
Maya Reyes
Founder voice
first persondry humorspecific numbers
On its own suggested after 12 more
D
Driftwood
Brand voice
plainwarmno exclamation marks
Ask me
X thread · Driftwood · 6 postsAll posts under 280
D
Driftwood@driftwooddev · 1/6131 / 280

We shipped retries in a week. Then spent three months fixing edge cases. A thread on what 'done' actually means for a job queue. 🧵

D
Driftwood@driftwooddev · 2/6101 / 280

1/ Week one: happy path works. Enqueue a job, it runs. We celebrated. Nobody had tried a timeout yet.

D
Driftwood@driftwooddev · 3/6154 / 280

2/ Week three: partial failures. A job sent 800 of 1,000 emails, crashed, and our retry sent all 1,000 again. Their support team called us something else.

02 · Calendar

The editorial calendar, already full.

Set a rhythm for each collection and each channel, and Ballad plans against it: which voice says what, where, and in what format. You open a calendar with drafts on it, not a blank grid and a content meeting.

  • Cadence per lane. Two articles a week on the blog, a thread every Saturday, a newsletter on Thursdays. Each lane keeps its own rhythm.
  • The mix, tuned. The plan sets each lane's mix of posts, threads and image cards, and how often a piece asks for something rather than gives. It shifts toward whatever converts.
  • Pin or let it pick. Drag a piece to a date, or leave the slot to Ballad and it schedules around what's already working.
app.balladlabs.com
CalendarQueue5VoicesMMayaDDriftwoodGenerate
TodaySep 6 – 19
LinkedInXBlog
Sun
Mon
Tue
Wed
Thu
Fri
Sat
6
7Hiring
Today · 8Free tierMistakes
9Postgres
10Sales
11Cron box
12'Done'
13
14Retention
15Changelog
16Support
17Pricing
18
19Weekend 🧵
2 approved · waiting for a slot. Ballad places them where they'll land best, or pin them yourself.Pin
03 · Articles

Articles with something to say.

Most AI articles are forgettable because nothing in them is true of your company. Ballad starts each one from evidence, not a brainstorm: what buyers ask, what you shipped, what's working. Depth pieces add a short interview: three to five questions, and your answers are the only anecdotes, numbers and names the article may use.

  • Why this topic. A question buyers ask AI assistants where a competitor is named and you aren't, an objection your audience keeps raising, the why behind something you shipped, what the numbers say is working. The review opens with the evidence, and research runs on that topic.
  • Pick the shape. An essay, a comparison against the alternatives, a step-by-step guide, a customer case study, or a piece built on your own data. Each has its own structure.
  • Ballad has questions. Every few articles, a depth piece is due and the questions land in your Inbox. Answer them over coffee and the draft follows.
  • Promote this. One button on any article proposes a week of founder posts, a thread, the newsletter issue and an image card to carry it, each pinned to its day.
app.balladlabs.com/review/blog
Needs your approval
Review article
Why this topic · From an objection you keep hearing

Teams like the idea of jobs in Postgres but worry it will load their primary database. Nothing on the blog answers that yet.

Heard 6 times this month: “Won't a queue in Postgres hammer our primary?”

Driftwood Blog · 7 sections · Maya ReyesIn your voice
Will a job queue slow down your Postgres?

It's the first thing a staff engineer asks us, and it's the right question. Here is what a queue table costs your primary, where the cost actually comes from, and the two settings that decide it.

ApproveReject
04 · Authors

Several authors, one blog.

A company blog shouldn't be one person's diary. Add teammates as authors of a collection and Ballad shares the articles between them: it picks the topic first, then the author whose beat fits it, nudged toward whoever is behind their share. Two authors never double the cadence.

  • Their voice, their byline. Each article is written in its author's voice, approved by them, and signed by them on your site.
  • Shares you set. Give an author one, two or three shares and pick the lead whose morning the cadence follows. The company voice can be an author too.
  • Joining from their walkthrough. A teammate fills in their beat in the Tailor your voice walkthrough. Owners and administrators can join the blog right there; anyone else asks one of them. The beat decides which articles are theirs.
app.balladlabs.com/content
Driftwood Blog
Blog · 2 articles a week
Save
Authors
Maya Reyes★ Lead1×2×3×
Theo LinMake lead1×2×3×
Driftwoodcompany

Each article goes to the author whose beat fits its topic, nudged toward whoever is behind their share (Maya Reyes 67% · Theo Lin 33%). It's written in their voice and signed by them.

Next on the blog
ThuWhy your retries need an idempotency keyTLTheo Lin
MonThe cron box we were embarrassed byMRMaya Reyes
05 · SEO

On your domain, and kept fresh.

Everything long-form publishes to your own site, so the search equity compounds under your name. Ballad also watches the back catalogue: when an older article slips, it proposes a refresh and rewrites the piece in place, at the same URL.

  • Ballad as your CMS, or yours. Ballad holds the articles and your site shows them, through a few lines of Next.js or the content API. Or keep your own CMS and paste the finished article into Webflow, WordPress or Ghost.
  • Search has its own page. Which searches to write for, each article's position week by week, the refresh when one slips, and the links worth earning: see SEO & Website.
  • Built to be cited. Structured, linkable articles that search engines index and answer engines quote. A buyer question where AI answers name a competitor and not you becomes a topic for a coming article.
Read the Next.js guide
driftwood.dev/blog
Driftwood
Writing
Why we killed our free tier (and what replaced it)
Sep 7 · 6 min
How we cut Postgres bloat by 60% without downtime
Sep 2 · 9 min
Six cron horror stories, one root cause
Aug 26 · 5 min
Published by Ballad · 04:00
// app/blog/page.tsx export default async function Blog() { const posts = await ballad.posts() return <PostList posts={posts} /> } // Ballad revalidates on publish revalidateTag("ballad")
Next.js RSS REST
06 · Results

Judged on signups, not likes.

A content calendar is only as good as what it brings in. Every link Ballad publishes carries its post, and one line on your site follows the visitor to the signup, so each piece has a number next to it that means something.

  • Per piece, per channel. Signups by the post that first brought someone and the one they read last, across the blog, social and the newsletter.
  • The next calendar learns. What converts gets more of the plan. What doesn't gets less, or gets tested against something else.
  • Replies answered. Replies and comments on your posts come back with an answer drafted, so the conversation a post starts doesn't go nowhere.
Read the attribution guide
app.balladlabs.com
Attribution
Which post brought the signup.
beacon receiving
Signups · 30d
19
+6 vs last
From Ballad
13
68% of signups
Top source
LinkedIn
7 traced
Signups by post13 of 19 traced
Our cron box ran for 14 months. It never broke. That was the problem.
LinkedIn · Thu 8:30
7
The Postgres bloat fix nobody writes down
Your blog · cited by Claude
4
Six cron horror stories, one root cause
X thread · Sat
2
LinkedIn · 7AI answers · 3X · 2ballad.to · 1→ feeds the next plan
The rest of the loop

One system, not a stack of tools.

What one job learns, the others use: the calendar writes from the positioning, the launches measure through the same signals, and the analysis changes the plan.

A full calendar by Monday.

Point Ballad at your site and connect your channels. The first week's drafts are waiting in your Inbox, in your voice, before you'd have finished the content brief.