Ask any AI tool to write LinkedIn posts in your own voice and the first thing it wants is a description of that voice. Conversational. Punchy. Direct but warm. Then it hands you a post that sounds like every other post ever described that way.
The brief is where this goes wrong. "Punchy" names a mood rather than a specification, and a model resolving a mood reaches for the commonest version of it, which in a generated LinkedIn post means three word sentences stacked on their own lines. That stacking is the loudest thing people are pointing at when they say a post reads like AI.
So Sonar counts your rhythm and puts the count in the instructions.
Measured prosody: what Sonar counts
The whole measurement lives in one file, src/lib/prosody.ts, and it is about eighty lines of arithmetic with no model call anywhere in it. It takes your real posts and returns seven numbers.
- Average sentence length, in words.
- The share of sentences under eight words. This is the punchy fragment rate, and it is the number that catches the staccato style if you actually write that way.
- The share of sentences over twenty words. The long reflective line rate, which is usually higher than a writer expects.
- Average paragraph length, in sentences.
- The share of paragraphs that are a single line. Call it the stacking rate.
- The question rate, as questions per hundred sentences.
- Emoji per post.
Those seven become one sentence, which the Voice Block carries verbatim. It reads like this, with your numbers in place of the placeholders: measured across N real posts, sentences average X words, Y per cent are under eight words and Z per cent are over twenty, paragraphs average P sentences, Q per cent of paragraphs are single line, R in a hundred sentences are questions, and there are E emoji per post. Then the instruction that makes it bite: hold drafts to these numbers, and do not exaggerate the punchiness beyond them.
The measurement refuses to run on thin material. Posts of eighty characters or fewer are dropped, fewer than three surviving posts returns nothing, and fewer than twenty sentences across them returns nothing. A rhythm computed from two posts is a coincidence wearing a decimal point, and stating it would hand the model a licence to write in a style you never chose.
Why numbers beat adjectives
Three things happen when a brief carries numbers instead of adjectives.
The first is that the model can check itself. "Punchy" has no failure condition. A line giving an average sentence length and a short sentence share, whatever your own two figures turn out to be, has a failure condition on every sentence, and a model asked to hold a number holds it far more reliably than a model asked to hold a feeling.
The second is that the numbers carry the parts of your voice you would never think to describe. Nobody writing a voice brief says "I ask a question about once every forty sentences" or "I use 0.4 emoji per post". Those are real properties of how you write, they are invisible to introspection, and they are two of the things that make a draft feel like you.
The third is that numbers stop the drift toward the feed average. An adjective pulls toward the median LinkedIn post. A number pulls toward you. When a founder writes long, considered paragraphs, a measured brief keeps them long, and the fragment style that every generator reaches for never gets a foothold.
There is a guardrail worth knowing about. X posts break their lines visually, so a tweet corpus reads as a wall of single line paragraphs. Measuring a LinkedIn voice from X posts would therefore report a stacking rate near a hundred per cent and licence exactly the style Sonar bans everywhere else. So the main Voice Block skips the measurement when the corpus came from X, and the X register measures its own prosody separately. Same arithmetic, two corpora, no contamination between the rooms.
How to measure your own
You do not need the product to do this. Take your last twenty or thirty posts, paste them into a document, and count.
- 01Sentence length. Count the words in twenty consecutive sentences, add them up, divide by twenty. That is your average.
- 02The short share. In those same twenty sentences, count how many run to fewer than eight words, and divide by twenty. Compare the answer to how punchy you would have said your writing is. The gap is usually the point of the exercise.
- 03Paragraph length. Count the sentences in twenty consecutive paragraphs and divide. Then count how many of the twenty were a single sentence on their own line.
- 04Questions. Count the question marks in the same twenty sentences.
- 05Emoji. Count them across five posts and divide by five.
Write the five numbers on a card and keep it beside you. When you edit a draft, you now have something to edit against, which is a materially different experience from staring at a paragraph and wondering whether it sounds like you.
The same card works as a brief for any tool. Give a model your five numbers instead of an adjective and the output moves noticeably closer to your writing, whatever tool you are using.
What it means for AI drafts
Three practical consequences.
Your measured rhythm is a floor as well as a ceiling. If your real posts average sixteen word sentences, a draft that comes back in five word bursts is wrong even when every individual line reads well. The brief says not to exaggerate the punchiness beyond your own numbers, and that instruction exists because exaggerating it is the default behaviour of every generator, including the good ones.
Your rhythm moves when your writing moves. The numbers are recomputed when the voice model is rebuilt from your posts, so a founder who genuinely shifts toward shorter sentences over six months gets a brief that shifts with them. Nothing is frozen at onboarding.
And rhythm sits underneath style, never over it. Measured prosody tells a draft how long to breathe. It says nothing about what you think, which comes from the rest of the voice model and from you. A draft can hold every number and still be wrong about the argument, and that is the draft you should be editing.
Rhythm is one layer of how a voice gets modelled. The layer above it is what changes when the same idea moves between rooms, which is in one voice, two registers, and the layer that decides what a draft is allowed to say about other people is in how Sonar keeps your colleagues out of your LinkedIn posts. What goes into the voice model as a whole is on the Intelligence Pack page. The rest of the writing is on the Sonar blog, the product is at Sonar and explained on how it works, and there is one plan on pricing.
Questions
How many posts does Sonar need before it can measure a rhythm?
Three posts of more than eighty characters, and twenty sentences across them. Below either floor the measurement returns nothing and no prosody heading appears in the voice model at all.
What if I have no posts yet?
Then no numbers are stated and no prosody heading appears in the voice model, because inventing a rhythm would be worse than having none. If you have deliberately turned off anchoring to your past posts and borrowed no craft in its place, the voice model is told something stricter still: write measured long form prose, full sentences, paragraphs of two to four sentences, no one line paragraphs and no rhythmic fragments.
Does this stop the model writing one line paragraphs?
It stops the model doing it more than you do. If your own posts stack single lines twenty per cent of the time, the brief says twenty per cent and the drafts hold roughly there.
Are these numbers computed by a model?
No. The measurement is plain arithmetic over your post text, with no model call in it, so it returns the same numbers every time it runs on the same posts.
Does the rhythm differ between LinkedIn and X?
Yes. The two corpora are measured separately, because a tweet's visual line breaks would otherwise be read as one line paragraphs and licence a staccato style on LinkedIn that you never wrote.
