Ballad
Product overview · every screen, no filler

Everything a marketing team does.
One loop, one inbox.

Ballad turns what you ship into marketing: it drafts posts, articles and launches in your voice, publishes what you approve, and traces every signup back to the post that earned it. Below is every screen, in the order the loop runs.

app.balladlabs.com
Good morning, Maya.
Tuesday, Sep 8 · Ballad drafted 4 pieces overnight
Generate content
Visitors
1,284↑18%
1,088 the week before
Signups
23↑35%
17 the week before
From Ballad
9 · 39%
of 23 signups, first touch
Best post
How we cut Postgres bloat without downtime
6 signups
Only you can do these this week
Tell me what happened this week
What shipped, what a customer said, what you changed your mind about.
Not now
Paste something a customer said
It becomes the questions and objections Ballad writes about.
Not now
Post today· 2
Why we killed our free tier (and what replaced it)
Maya · LinkedIn · 9:40 AM
Scheduled
Thread: 6 pricing mistakes we made in year one
Driftwood · X · 12:15 PM · 6 posts
Post it now
Approve· 3
MayaLinkedIn · Fri 8:30 AMIn your voice
Every founder I know has a cron box they're embarrassed by. Ours ran for 14 months. Here's what finally made us replace it, and what we got wrong the first time.
DriftwoodX thread · 5 posts · Sat 11:00 AM
We shipped retries in a week. Then spent three months fixing edge cases. A thread on what 'done' actually means for a dev tool. 🧵
Engineering blogArticle · 7 sections · 2 to check
How we cut Postgres bloat by 60% without downtime
Above · the Inbox

Your morning, already triaged.

The Inbox is the whole job, most days. Under the greeting, last week in one row: visitors and signups against the week before, the signups Ballad's posts started, and the best post. Then the few things only you can do this week, like telling Ballad what happened or pasting something a customer said, which also reach Slack once a week. Then what's going out today, everything Ballad drafted overnight to approve, reject or edit, and the plan changes it wants you to decide. Reach inbox zero and it tells you what's coming next.

01 · Voices

Your voice. Your brand's voice. Both learned, not prompted.

A founder voice that writes like you, one for each teammate who joins, and a brand voice that speaks for the company. Each one learns from what you edit and approve, and each earns trust separately.

In depth: Content Marketing
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 · Team

Bring the team, each in their own voice.

Invite people by email and pick their role as you do: Owner, Administrator, User or Viewer. Everyone who joins gets a voice of their own. Users write, approve and schedule in their own voice and see the rest; Viewers look without changing anything. Several people can share one blog, each article going to the author whose beat fits it.

In depth: several authors per blog
app.balladlabs.com/settings/workspace
Workspace
Driftwood · 4 members
Members

Owners and administrators can change anything. Users work in their own voice: they create, edit and approve their own posts and articles. Viewers can look but not change anything.

MR
Maya Reyesyou
maya@driftwood.dev
Ownerjoined Mar 3
TL
Theo Lin
theo@driftwood.dev
Administratorjoined Mar 4
PN
Priya Nair
priya@driftwood.dev
Userjoined Aug 19
JE
Jordan Ellis
jordan@driftwood.dev
Viewerjoined Sep 1
Invite people
ana@driftwood.devUserSend invite
sol@driftwood.devUser · expires Sep 15ResendRevoke
03 · Review

One review, everywhere.

Whether you open a draft from the Inbox, the calendar, or Slack, it's the same modal: edit on the left, the post in the channel's own frame on the right. Your edits are the training data.

In depth: Content Marketing
MMaya· LinkedIn · Fri 8:30 AM
In your voiceNeeds approval
Edit 1 edit · trains your voice
Every startup I know has a cron box they're embarrassed by.

Our cron box ran for 14 months. Two jobs, then six, then thirty. It never broke. That was the problem: nothing forced us to replace it until a job ran twice and charged forty customers twice.

Here's what finally made us switch, and what we got wrong the first time:

1. We picked the queue before we wrote down our jobs.
2. We migrated on a Friday.
3. We didn't tell the team why.
signal: 3 replies asked about cronangle beat avg by 2.1×
RejectSave & approve
PreviewLinkedInX
04 · Create

Write it, polish it, or let Ballad write it.

One dialog for every piece. Pick the format and the voice, then decide how much of it is yours: a topic or rough notes Ballad drafts from, a draft it polishes in your voice, or your exact words straight onto the schedule.

In depth: Content Marketing
Create
What, who, and how much of it is Ballad's.
What kind
LinkedIn post
X post
X thread
Blog article
Who's speaking
MMaya ReyesFounder · your voice
DDriftwoodBrand · company voice
How much should Ballad do?
Ballad writes it
Polish my draft
Post as written
Your wordsa topic, notes, or the whole thing
we cut support tickets 40% after fixing one retry bug. took two days. the fix wasn't clever, we just finally read the logs
Keeps every fact and the length · fixes flowNext open slot · Tue 9:10
CancelPolish and review
Polishing · X thread0:42
Read your draft: 3 posts, 4 facts, 2 numbers2s
Kept every fact, name and number as written6s
Tightening the flow in Driftwood's voice…
Slop check & character counts
Into your Inbox for review
Close this. It keeps running in the background.Close
05 · Image posts

Image posts, rendered, not described.

These are real output from Ballad's renderer, not mockups, in the colours and font of Driftwood, the sample company every screen on this page belongs to. Ballad writes the caption and the words on each slide, you approve the words, and the card is built from your logo, palette and font, so what renders says exactly what you approved.

In depth: Social & Community
Slide 1 of a three-slide LinkedIn carousel for Maya Reyes at Driftwood, rendered by Ballad
Slide 2 of a three-slide LinkedIn carousel for Maya Reyes at Driftwood, rendered by Ballad
Slide 3 of a three-slide LinkedIn carousel for Maya Reyes at Driftwood, rendered by Ballad
LinkedIn carousel · Maya at Driftwood · rendered by Ballad1080 × 1080
An Instagram image card for Driftwood, rendered by Ballad
Instagram card1080 × 1080
The opening image of a Driftwood blog post, rendered by Ballad as a brand card
Blog opening image1536 × 1024
06 · Content studio

A calendar that fills itself.

Ballad plans weeks ahead across every voice and channel, writes the drafts overnight, and places each one where it will land best. You open a full calendar, not a blank page.

In depth: Content Marketing
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
07 · Your site

Published to your domain, not ours.

Ballad is your CMS: it holds the articles and your site shows them, through a few lines of Next.js or the content API for any other stack. Approve, and it's live, with your pages refreshed on publish. Already on Webflow, WordPress or Ghost? Choose your own CMS and paste the finished article in. Either way the audience compounds under your name, not ours.

In depth: SEO & Website
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
08 · ballad.to

One link that's always current.

Every persona gets a ballad.to page: portrait, bio, your call to action, your latest writing, and everywhere else you are. Ballad keeps it up to date, and every click flows back into Signals.

In depth: Social & Community
ballad.to/maya
MR
Maya Reyes
@mayareyes · Driftwood

Building background jobs that live in your Postgres. Writing about the mistakes along the way.

Try Driftwood free
Latest writing
Elsewhere
09 · Launches

Positioning that ships.

Your positioning is the plan, not a slide: a one-liner, the statement behind it, the segments you sell to. Ballad reads what you merge and drafts the changelog, turns a major release or a strong article into a proposed launch week across every channel, keeps a battlecard per competitor fresh as their pages change, and asks the right customers for proof.

In depth: Product Marketing
app.balladlabs.com/campaigns
Launch week: job replay
Proposed from Friday's major release · 6 of 7 pieces kept
Launches
TueChangelog entryDriftwood
TueFounder post · LinkedInMaya
TueThread · XMaya
WedShow HNMaya
WedImage cardDriftwood
ThuFounder post · BlueskyMaya
FriNewsletter issueDriftwood
Why this week

Failed jobs are what prospects ask about most. A launch that leads with replay answers the question before the demo does.

StartsTue 16 Sep · 08:30
Run the weekNot now
each piece still comes to you for review
Measured as one launch
reach · clicks · signups
10 · Signals

An operations floor for your reach.

Every visit, click, reply, ranking, and AI citation on one live board. A world map of who's reading right now, then a widget for each kind of signal Ballad tracks: your whole site's sessions and top pages, the referrer mix including AI answer engines, social, search, and ballad.to.

In depth: Market Analysis
app.balladlabs.com
Signals
Everything your content is doing, as it happens.
7d30d90d
Live visitor mapLive · 23 on site
site visitlink click
Web
4,812
+18% wk
Signups
41
+9 this wk
SEO
#4
↑3 · 'job queue'
AI answers
31%
Claude · ChatGPT
ballad.to
918
+40% clicks
11 · Attribution

Which post brought the signup.

One line on your site and a token on every link Ballad publishes. When someone signs up, Ballad knows the post, the channel and the angle that earned it, and does more of that on purpose. It also reports what share of your signups came from Ballad's content: the number you show your investors.

In depth: Market Analysis
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
12 · Lifecycle email

Email that knows the person.

People is one record per person: the post that first brought them, the pages they read, the product events your site reports, and the account they belong to. Segments are conditions over that record. A sequence enrols whoever comes to match and sends each step on its day; the newsletter is its own lane on the calendar. Marketing mail goes only to people with consent, and the provider's bounces and unsubscribes flow back on their own.

In depth: Lifecycle Marketing
app.balladlabs.com/campaigns/sequences
Signed up, never ran a job
Sequence · sends as Maya · 3 steps
Active
Enrols from segment212 people right now
did signup · within 14 daysnot ran_jobaccount plan = trialhas consent
Day 0Your first job, in ten minutes212 sent · 64% opened
Day 3The three settings behind most failed jobs188 sent · 51% opened
Day 7How Fieldstone stopped babysitting cron141 sent · 47% opened
sent one person at a timeone-click unsubscribe
13 · Strategy

It learns. Then it changes the plan.

Strategy is what Ballad works from, in three parts. What Ballad knows: your company in one sentence you can say out loud, who it's for, how you make money, your voices, competitors, beliefs and the corrections you've made, each linking to where it's edited. What it's doing about it: the plan and what it learned. What happened: every change, in order. Plan changes come to your Inbox as diffs; Ballad applies the safe ones itself and reverts anything that underperforms.

In depth: Market Analysis
app.balladlabs.com/strategy
What Ballad knows
Ballad's readAdjusting
DRIFTWOOD
Background jobs in the Postgres you already run.
Postgres-backed SaaS teamsTeams outgrowing cron
Voices
Maya founder
LinkedIn 3/wk · X 4/wk
Driftwood brand
X 5/wk · Blog 2/wk
Competitors
Halyard Queue
Tidewell
2 battlecards
What Ballad believes9 held · 3 hypotheses
Buyers come to Driftwood after a job ran twice, not to save money. 82%
What it's doing about it
The plan this weekv12 live
Ballad adjusts on its own
2 experiments running1 launch under way
What Ballad learned
Lean in: mistake-led posts earn 2.1× the replies of how-tos.
Ease off: feature lists on LinkedIn.
What happened
Plan adjusted · LinkedIn leans toward image cards2d
auto-reverts if it underperforms in 14d
14 · Agents

Let Claude work in Ballad, on your terms.

Ballad is an MCP server. Add it to Claude as a connector, sign in with Ballad, and choose what it may do on a consent screen. Then ask Claude for a draft, a plan change, or a status check, and it happens inside the same loop, with the same review gate.

In depth: Agents & Developers
C
Claude wants to work in Ballad
It will act in Driftwood as maya@driftwood.dev.
read See drafts, lanes, plan, events
draft Start generation and submit drafts
propose Propose plan changes for you to approve
decide Decline drafts, undo, set cadence. Never approve
publish Mark posts as posted
signals Record metrics for published pieces
Drafts it makes still come to you for review. Nothing publishes without the publish scope. Every call lands in your audit log.
AllowDeny
"Draft a LinkedIn post about the retry bug""What's waiting for my review?"
By role

The marketing hires you haven't made.

The same loop, read through the job a marketing team would split it into. Each page covers the parts of Ballad that do that job.

You stay editor-in-chief

Autonomous where it's earned it. Yours everywhere else.

On its own only where earned

Every lane starts at Ask me. On paid plans, posts, articles and changelog entries that pass Ballad's checks can be approved on their own, with at least two hours to pull them, and anything pulled steps its lane back down.

The slop gate

Drafts are scored against your voice before you ever see them. Generic phrasing, filler, and AI tells get rewritten or rejected.

Reversible by default

Plan changes are diffs with a watch window. Underperform and they roll back on their own; you can revert anything, any time.

Yours, not ours

Your posts go out from your accounts; your articles live on your domain. Leave and everything you published stays where it is.

Where it runs

Every channel, one loop.

Connect your accounts, point Ballad at your site, and the first week's plan is waiting in your Inbox. Every link it publishes reports back. Assisted means Ballad writes and renders it and hands it to you ready to go; you're the one who posts it. On X, once the voice's account is connected, Ballad posts it for you.

LinkedIn
Posts, carousels and a newsletter, assisted
X
Posts, multi-post threads, carousels, published by Ballad
Bluesky
Posts and multi-post threads, assisted
Threads
Posts and multi-post threads, assisted
Your blog
Long-form, on your domain
LinkedIn newsletter
A weekly issue, its own lane
Email newsletter
A weekly issue, sent from your tool
ballad.to
Your link-in-bio hub
Instagram
Image cards and carousels, assisted
Hacker News
Show HN, on demand
Reddit
A self post, per subreddit
Product Hunt
Launch day, written
Start freeSee pricing