Brand Voice Check
Every post is checked against your site's brand voice before it publishes or is scheduled. Here's what it compares, how it scores, when content goes through without a verdict, and how to read the result.
Before anything goes out, BlackOps checks what's written against the brand voice you've set up for that site. Content that doesn't sound like you is stopped with the rules it broke, so you can fix it or go ahead anyway.
When it runs
The check runs at the moment content is committed: when you publish, and when you schedule. Scheduling counts, so a queue is checked when you build it rather than when each item fires. It covers tweets and threads, blog posts, X articles, LinkedIn, Threads and TikTok, and each item in a campaign.
What it checks against
Your site's brand voice in BlackOps: the voice profile plus its style rules (for example "never use em dashes" or "write in first person"). Rules you've scoped to a platform or mode apply only there.
The voice is per site. A post going to one site is checked against that site's voice, not another's.
How it scores
The check (run by Jev, TypeSafe's typed judgment engine) answers two questions about the text:
- Overall voice. How well does it match your voice, on five levels from "off-voice" to "on-voice throughout". The level sets the score: 15, 40, 60, 80 or 95.
- Each style rule. Does the text clearly break it? A rule it's fairly sure is broken is listed as a violation. A rule it's very sure is broken caps the score at 49.
The pass mark is 70. "On-voice with minor drift" (80) passes, "some drift" (60) does not.
It judges the text as the platform it's going to. A terse reply on X isn't marked down for being terse the way a blog post would be.
It only judges voice. It doesn't check facts, links or whether the content is good.
When it fails
Publishing or scheduling is refused, and the message names what broke, worst first. If nothing specific broke but the overall voice missed, it names the level it landed on.
Revise the text and try again, or go ahead anyway with override_brand_voice: true. An override is recorded with who did it, so it stays answerable.
When content goes through without a verdict
The check lets content through rather than blocking your publishing when it can't give a real opinion:
- No brand voice set up for the site.
- The site's very first piece of content. There's nothing yet to drift from.
- The check couldn't run, for example the service didn't answer in time.
These show up as degraded in the result (see below), so they're never confused with a pass.
Empty content (an image-only post, say) is skipped.
Checked once per version
A verdict applies to the exact text that was checked. Publishing or rescheduling the same text reuses it. Change one character and it's checked again.
Reading the result
Publish and schedule responses include a voice_check object:
{
"status": "passed",
"engine": "jev",
"model": "jev:jev-1.13.0",
"score": 80,
"threshold": 70
}
| Field | Meaning |
|---|---|
status | passed, failed, overridden, degraded (went through without a verdict) or skipped (nothing to check) |
reason | Why there was no verdict: no_voice_configured, first_content, critic_error, critic_unavailable or empty_content |
engine | What judged it: jev, llm (the fallback checker) or mechanical |
model | The exact model behind the verdict |
score, threshold | The score, and the pass mark it was held to |
violations | Up to three rules it broke, worst first |
reused | The verdict came from an earlier check of the same text |
On a refusal, the same object comes back with the error so you can see exactly why.
Related
- Voice Calibration: sharpen the voice the check uses by rewriting drafts in your own words.
- Human Review Gate
- Post Scheduling