Blog

Build in public with numbers you didn't type

How Sona drafts build-in-public posts from what shipped, writes every number from your own data and checks each post against its network's rules.

4 min readUnisonia team

A draft post with a reference in place of its number, beside the saved post with the real value.

Building in public works because the numbers are real. "Revenue up 25% this week" earns attention only while the people reading it trust that it happened. The moment a post rounds up, copies last week's figure or quotes a number nobody can trace, the habit stops paying off.

Writing those posts every day is also the part that slips first. You have a product to ship. So in Unisonia, the posts are drafted for you, and the numbers in them are never typed by hand, not by you and not by an AI.

Why numbers in posts go wrong

Most build-in-public numbers break in one of three ways:

  • They are typed from memory. A dashboard said 1,240 visitors on Monday; by Thursday the post says "about 1,300".
  • They are copied from the wrong period. Yesterday's revenue lands in a post about the week.
  • They are written by a model. A language model is good at sentences around a number and bad at the number itself. It rounds, it guesses, and it sounds sure either way.

Each of these is easy to fix once, and hard to avoid every day.

A post starts from what happened

Sona, Unisonia's teammate for every product, drafts posts in Content from the things that actually happened in the project: the Daily status and its numbers, the pull requests that merged, a video that is ready to go out, an improvement that was measured. Product facts come only from the product's own description, its site and its assets.

A post in Unisonia is written for one network. Its text can be several parts, which is a thread on networks that have them, and it carries the videos and images that go with it. It moves from Idea to Draft, Planned, Ready and Posted, and that state is worked out from the post itself, never set by hand.

Numbers by reference

When Sona needs a number, she doesn't write it. She writes a reference to it, and Unisonia writes the value when the post is saved:

Revenue this week: [[week finance:revenue]] ([[week finance:revenue change]])

becomes

Revenue this week: $1,250.00 (+25%)
A draft with references beside the saved post with real values
The draft holds references; the saved post holds the numbers.

The numbers are the same ones the Daily status shows: recorded revenue, expenses and net, merged pull requests and releases, search clicks and product events. Each can be read for yesterday, the last 7 days or the last 30 days, and against the same length of time before it.

If a number isn't there yet, for example because a source is still syncing or there is nothing to compare with, the post isn't saved with a gap or a zero. Sona is told the number is missing and writes the sentence without it.

The same works in a post's image. Sona designs images as small HTML pages around the project's real screenshots and assets, and a reference inside the design is written the same way before Unisonia renders it to a PNG.

Each network counts differently

A post that fits X doesn't fit Threads the same way, and LinkedIn takes a link only when nothing else is attached. Unisonia keeps each network's rules in one table, read from the networks' own help pages, and checks every post against them: the page's character counter, its warnings and the Mark ready button all read the same check.

Characters in one post
Source: The limits Unisonia checks a post against, read from each network's help pages on Oct 26, 2026. YouTube's is a Short's description.

Characters are only half of it. What a post can carry differs just as much:

NetworkMedia in one postImages and video togetherThreads
XUp to 4, one of them a videoYesYes
LinkedInUp to 20 images, or one videoNoNo
ThreadsUp to 20YesYes
InstagramUp to 20, and at least oneYesNo
TikTokUp to 35 photos, or one videoNoNo
YouTubeOne video, a ShortNoNo

A draft may break these rules while you work on it. A post marked ready, or posted, may not.

You still post it yourself

Unisonia doesn't post to any network. When a post is ready, you copy its text, download its media and post it where it belongs. Then you mark it posted with its address and the day, and later add its views, likes and comments as you read them. That keeps your accounts in your hands, and it keeps a record of what went out next to the numbers it talked about.

Your own agent can do all of this too. Over Unisonia's MCP server, Claude Code or Codex can list the same numbers with list_datasets, write a post with create_post and design its image with create_post_image, with the same references and the same checks.

Where to start

Start the trial and connect the services your product already runs on: payments, hosting, analytics, search, code. The Daily status starts the next morning, and with it the numbers your posts can use. From then on, a good build-in-public post is a conversation with Sona and a click on Copy text, with every number in it one your data can back up.

One teammate who gets every product you ship found.

Sona checks, fixes, tells people and measures, and asks before anything ships.

Start 7-day trial