Ballad
Product · Social & community

Show up everywhere, in the right voice.

The social and community manager you haven't hired: posts for every network in the right voice, image posts worth stopping for, replies answered, the threads worth joining found while they're still open, and launches written for each community's rules.

The job

What a social and community manager would own, done while you ship.

  • Founder and brand presence

    A voice for each founder and teammate and one for the brand, each with its own networks and rules, and a plan that knows which one should say what, and where.

  • Posting schedule

    Posts, threads and image posts drafted ahead and placed where they'll land best. On X, Ballad posts them itself.

  • Community management

    Replies to your posts come back with an answer drafted; praise and emoji are left alone.

  • Social listening and outreach

    Finds the threads where your buyers are asking the question you answer, while they're still open.

  • Community launches

    Show HN, Reddit and Product Hunt, each written for that community's rules, only when you ask.

  • Profiles and links

    A ballad.to page per voice that keeps your latest writing and your call to action current.

01 · Every network

Every network, in its own frame.

The founder's voice on LinkedIn reads differently from the brand's on X, and both differ again on Bluesky and Threads. Ballad drafts for each network in the voice that should be there, and you review every post in that network's own frame, with its character count.

  • Threads as one argument. A multi-post thread written to make a single point, previewed post by post, and posted in order.
  • Posted for you on X. Connect a voice's X account and approved posts, threads and image posts go out on their slot. Elsewhere, the post is handed to you ready to paste.
  • Numbers without chasing. On X, Ballad reads impressions, replies and reposts every six hours. Everywhere else it asks you two days after a post goes live.
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
02 · What to post

Posts about more than the company.

Nobody follows a founder who only talks about their product. A person's give posts are spread across what people actually post about: building in public, reactions to what's happening in their market, their own field, something personal, and the problem the company solves. Only the asks and the problem posts mention the company.

  • A mix, like a person's. By default 30% building in public, 20% reactions, 25% their own field, 10% personal, 15% the problem you solve. The plan tunes it from replies, reach and follows.
  • Drawn from something real. A release or the last two weeks' commits, a thread the market scan found this week, a topic from their beat, a fact they marked fine to share. A source rests a while after it's used.
  • No filler when there's nothing. A kind with nothing real to draw on hands its share to the others. Name your field and a few facts about you and those posts start.
app.balladlabs.com
Approve· Maya · this week
MayaLinkedIn · TueBuilding in public
We shipped dead-letter replay on Friday. The first version replayed jobs in the wrong order, and a customer caught it before we did. Here's the fix and what it taught us about ordering.
MayaX · WedReaction
The thread on Postgres advisory locks this week gets one thing wrong: a lock you never release is a queue that stops. Here's the case it skips.
MayaLinkedIn · ThuYour field
Most on-call pain I've seen comes from retries nobody can see. Three questions I ask before any system gets a retry policy.
MayaLinkedIn · SatPersonal
I learned to program by breaking my dad's spreadsheet macros. I still debug the same way: change one thing, watch what moves.
MayaX · SunAsk
If your jobs live in cron and a Redis box you'd rather not run, Driftwood moves them into the Postgres you already have.
03 · Image posts

Image posts that aren't templates.

Cards and carousels for LinkedIn, X, Instagram, Bluesky and Threads, built around a visual idea that rotates, so a feed of them doesn't look like one template repeated. Every one is in your brand, and every word on it is checked against the words you approved.

  • Carousels that build. Two to ten slides making one argument, within each network's own limit.
  • A different idea each time. A metaphor, a diagram, a before and after, a whiteboard sketch. The concepts you approve come up more often.
  • Words checked. What's written on the card is read back and compared with what you approved before it reaches you.
Read the image posts guide
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
04 · Replies

Every reply answered.

A post that starts a conversation and then goes quiet wastes the best part. Ballad reads the replies to your posts on X, takes comments you paste in from anywhere else, and drafts an answer for each one worth answering, in the voice that wrote the post.

  • Worth answering, or not. A question or a pushback gets a drafted reply. A fire emoji doesn't.
  • Answered where it was asked. Replies on X post straight from the Inbox. Anywhere else, copy the answer and mark it done.
  • Heard, not just answered. What people ask and push back on becomes part of what every future draft is written against.
app.balladlabs.com
Replies to answer
Read from X, pasted from LinkedIn · last 14 days
2 worth a reply
@jkwanon your thread on cron mistakes
Does replay reuse the original arguments, or can I change them first?

Both. Replay runs with the same arguments by default, or you can edit them first. Any job from the last 7 days.

Reply on XEdit
Eng Manager · via LinkedInon the post about the 3am cron job
We tried three queues and every one needed Redis babysitting. What's different?

Honestly, fewer moving parts. Jobs live in the Postgres you already run, so there's no second datastore to watch.

Copy & mark answeredEdit
@mira_buildson your thread
🔥🔥
praise · no reply needed
05 · Conversations

Join the thread while it's open.

Your buyers are already asking for what you make, in threads that are over within a day. Ballad reads Hacker News every hour and Reddit every six hours, picks the few threads where your positioning is genuinely the answer, and drafts a reply for the founder to post as a person.

  • A high bar. Most days nothing clears it. A few good threads a week beat a feed of noise.
  • In your Inbox and Slack. One card per thread, or a digest when there are several, and nothing during your quiet hours.
  • Posted by you. Ballad never posts into a community for you. It finds the thread and drafts the reply; you decide whether to say it. A Reddit reply is drafted from a summary of the thread, so read the thread before you post.
app.balladlabs.com
Conversations worth joining
Scanned hourly · 1 of 214 threads today cleared the bar
Closes in 31h
Hacker News214 points · 131 comments · 3h
Ask HN: How do you do marketing as a solo technical founder?
Why this one
Three of the top comments say they write “when inspired.” Your positioning is the answer to this thread.
Reply, in Maya's voice

I ran Driftwood on “write when inspired” for a year. Four posts. What finally worked wasn't discipline, it was a schedule someone else kept for me.

Open thread & replyPassalso in Slack
06 · Launches

Launch where builders gather.

A Show HN, a Reddit self post, a Product Hunt listing. Each community has its own rules and its own allergy to marketing, so each is written for that community, from the facts you give it, and only when you ask. Nothing here is ever put on a schedule.

  • Their format, their limits. Hacker News's title limit and maker's comment, a subreddit's title and body, a Product Hunt tagline, description and maker's comment.
  • No invented details. The draft uses what you tell it and your positioning. It doesn't make up how you built it.
  • One click to the form. Hacker News and Reddit open on their own submit page with the post filled in. Product Hunt's fields come ready to copy.
app.balladlabs.com
Show HN
On demand · never scheduled · from Maya
Ready to post
YHacker News
Show HN: Driftwood – background jobs in Postgres you can replay (driftwood.dev)
by mayar · just now

Hi HN, I'm Maya. We ran our background jobs on a cron box and a Redis queue until a job ran twice and charged forty customers twice. Driftwood keeps jobs in your own Postgres, so you can replay a failed one for 7 days. I'd love to hear where it breaks for you.

title 63 / 80written as the founderonly facts you gave it
Open submit formCopy comment
07 · ballad.to

One link that's always current.

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

  • Latest writing, on its own. New articles appear on the page the moment they publish.
  • A call to action that counts. One button, pointed at the thing you're growing, with every click on it counted in Signals.
  • Shares well. A generated share image, so the link looks designed wherever it's posted.
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
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.

Show up every day, without living in the feed.

Connect your accounts and your first week of posts is drafted in your voice. Your job is a few yeses in the morning and the occasional reply only you can write.