โ† Blog
Guidesยท 5 min read

Why AI social content sounds generic (and how to fix it)

By the Borker Team

You can spot AI-written social content from across the room. "Excited to share." "Let's dive in." "Here's the thing." A rocket emoji doing unpaid labor. The strange upbeat neutrality of a hotel lobby.

Founders notice this, try an AI social media ghostwriter anyway, and quit two weeks later when a customer replies "did a bot write this?" Then they conclude AI can't do voice. That conclusion is wrong, but it's wrong in an interesting way, and understanding why is the difference between AI content that damages your brand and AI content nobody can tell apart from you.

The averaging problem

A language model is trained to predict likely text. Ask it for "a tweet announcing a product update" with no other information, and it gives you the statistical center of every product announcement it has ever seen: LinkedIn press releases, growth-hacker threads, corporate blogs. The average of a million voices isn't a voice. It's beige.

And the model is doing exactly the job you gave it: "write a tweet" with no speaker specified means "write the most probable tweet," and the most probable tweet is, by definition, the most generic one in existence.

The averaging funnel: many distinct, colorful voices go into a funnel and one beige generic announcement comes out

The good news hiding in there: none of this says the model can't write like you. It says nobody told it who's talking, and that fix is cheap. Specify the speaker instead of shopping for a better model.

Why "write it in a casual, friendly tone" doesn't work

The first fix everyone tries is adjectives. Casual. Authentic. Conversational. Punchy.

The problem: those words are also averages. "Casual" spans everything from a surfer to a standup comedian to a VC being relatable on main. When you say "casual," the model picks the statistical center of casual, and you get the same faintly humorous, faintly motivational tone as everyone else who typed "casual." You've moved from the center of all text to the center of casual text. Still a crowd, just a slightly smaller one.

Voice lives in specifics that adjectives can't carry:

  • You write "shipped" never "launched", "bug" never "issue"
  • You lowercase the first word when you're being wry
  • You never use more than one exclamation point per week
  • You'd rather die than call something a "journey"

No adjective encodes any of that. Only rules and examples do.

What actually fixes it: brand context

The working fix is to stop prompting for output and start specifying the speaker. Concretely, that means giving the model a structured brief about who's talking. The stack that works, roughly in order of impact:

1. Negative constraints. The never-list. Banned openers, banned words, banned formatting habits. This kills 80% of the AI smell on its own, because AI smell IS a specific list of high-probability patterns, and you can just... subtract them. A model told "never open with a gerund, never say excited, no emojis" physically cannot produce the hotel-lobby tweet.

2. Register as settings. Formality, brevity, warmth, technical depth, expressed as explicit levels rather than adjectives. "Formality 3/10" reliably produces contractions and lowercase asides. "Casual" produces vibes roulette.

3. Real examples, paired. Your actual posts as positive examples, plus counter-examples: "here's the generic version of this announcement; I would never write this." The pair defines a boundary. Models are extremely good at staying inside a boundary once they've seen both sides of it.

4. Load-bearing vocabulary. The twenty words you actually use, and the twenty you'd never touch. Terminology is the most recognizable fingerprint in short-form text, because a tweet is too short for rhythm to fully register but exactly long enough for one wrong word to blow your cover.

5. Platform awareness. Your voice on X and your voice on LinkedIn are the same person at different volumes. Same never-list, same vocabulary, different length, different structure, different formality delta. A system that doesn't model the platform separately produces LinkedIn posts that read like overgrown tweets, and everyone can tell.

Input: changelog entry: sensitivity rules for auto-publish
Generic AI

๐Ÿ›ก๏ธ Introducing Sensitivity Rules! We're excited to unveil our latest feature designed to keep your brand safe. Set custom keywords and let AI do the rest! #brandprotection

In your voice

auto-publish now has a tripwire. name the topics you never want automated (layoffs, outages, politics) and those drafts wait for a human. everything else flows.

Input: news article: X changes its API pricing again
Generic AI

The social media landscape is evolving rapidly! ๐Ÿ“ˆ With X's latest API changes, businesses must adapt their strategies. Here are our thoughts on navigating this shift...

In your voice

x changed api pricing again. third time we've re-done the math, third time the answer is the same: own your pipeline, rent the endpoints.

Input: milestone: 100th workspace signed up
Generic AI

๐ŸŽ‰ MILESTONE ALERT! We just hit 100 workspaces! None of this would be possible without our amazing community. Here's to the next 100! ๐Ÿฅ‚ #startup #growth

In your voice

workspace #100 signed up today. 100 founders who'd rather ship than post, which is exactly who we built this for.

The before/after test

Here's what the stack does in practice. Take a raw input: "we shipped scheduled publishing for LinkedIn."

No context: "๐Ÿš€ Big news! We're thrilled to announce that scheduled publishing for LinkedIn is officially LIVE! Say goodbye to manual posting and hello to effortless content management. Try it today! #productivity #socialmedia"

With brand context (never-list, register 3/10 formality + 8/10 brevity, terminology, one paired example): "scheduled publishing now works for linkedin. queue it monday, it posts thursday, you never think about it again. one less tab open."

Same model. Same underlying capability. The only difference is that the second one knows who's talking.

Nothing about this requires special model access, by the way. You can build this stack in any decent chat model by hand. It costs you a long setup prompt, discipline about keeping it updated, and doing it again for every platform and every post type. Which brings us to the honest part.

The maintenance tax is the real product decision

The stack above is easy to build once and hard to keep running. Your never-list grows every time you edit a draft. Your examples go stale as your product changes. Your platform formats drift. Multiply by every post, every platform, every week, and voice-context maintenance quietly becomes a content job of its own, which is exactly the job you were trying to eliminate.

This maintenance loop is the actual reason we built Borker as a system rather than a mega-prompt. It extracts the initial voice profile from your website and writing during onboarding, keeps it as structured configuration you can edit (never-list, dials, examples, per-platform adjustments), applies it to everything it drafts, and routes every draft through your review so your edits keep teaching it where the line is. The averaging problem is solved with context; the context problem is solved with a system.

If you want to see the first step happen to your own brand, the free brand voice analyzer reads your website and shows you the voice profile hiding in your existing writing: your register, your vocabulary, your tells. It's the "who's talking" brief, generated from evidence.

Generic AI content is what an unspecified speaker sounds like. Specify the speaker, and the room gets a lot harder to spot you in.

New here? Borker is the AI content engine for founders.

We learn your voice, watch your news feeds, and ship posts to X, LinkedIn, Farcaster and your blog while you build the actual product.