bluepencil / gates.json
wolfvswhale's picture
bluepencil: a calibrated quality gate for prose, running entirely in the browser
ed5252d verified
Raw
History Blame Contribute Delete
7.32 kB
{
"patterns": [
{
"name": "negative-parallelism",
"description": "'Not just X, it's Y' and its relatives. The most recognizable machine construction.",
"suggestion": "State the correct thing. Leave the wrong thing out.",
"severity": "error",
"budget": 0.0,
"patterns": [
"not just [^.!?]{1,50}?,? (?:but |it'?s |it is )",
"not only\\b[^.!?]{0,60}?\\bbut also\\b",
"(?:isn'?t|is not) (?:about|just)\\b[^.!?]{0,50}?[;,] it'?s",
"it'?s not\\b[^.!?]{0,40}?[;,] it'?s\\b"
]
},
{
"name": "inflated-significance",
"description": "Announcing that something matters instead of showing what it did.",
"suggestion": "Show what it did, with a fact. Cut the claim of importance.",
"severity": "error",
"budget": 0.0,
"patterns": [
"stands? as a testament",
"(?:is|are) a testament to",
"plays? a (?:vital|pivotal|crucial|key|significant) role",
"underscor\\w+ (?:its|the|their) (?:importance|significance)",
"leav\\w+ a lasting (?:impact|impression|legacy)",
"watershed moment",
"cannot be overstated",
"solidif\\w+ (?:its|their) (?:position|place|status)"
]
},
{
"name": "participle-tail",
"description": "A clause tacked onto a sentence to fake analysis.",
"suggestion": "Explain the consequence concretely, or stop at the fact.",
"severity": "error",
"budget": 0.0,
"patterns": [
",\\s+(?:highlighting|underscoring|illustrating|reflecting|emphasizing|showcasing|paving|cementing|signaling|marking)\\b[^.!?]{0,80}[.!?]"
]
},
{
"name": "editorializing",
"description": "Telling the reader that something is worth noting instead of noting it.",
"suggestion": "Just write the note.",
"severity": "error",
"budget": 0.0,
"patterns": [
"it'?s important to (?:note|remember|understand|consider)",
"it is important to (?:note|remember|understand|consider)",
"it'?s worth (?:noting|remembering|mentioning)",
"no discussion would be complete without",
"needless to say"
]
},
{
"name": "hollow-conclusion",
"description": "Restating a passage the reader just finished.",
"suggestion": "End on the last real thing there is to say. A piece can just stop.",
"severity": "error",
"budget": 0.0,
"patterns": [
"\\bin (?:summary|conclusion)\\b",
"(?:^|\\n)\\s*overall,",
"\\bat the end of the day\\b",
"\\bto sum up\\b"
]
},
{
"name": "throat-clearing",
"description": "Warming up instead of starting.",
"suggestion": "Delete it. Start with the first real sentence.",
"severity": "error",
"budget": 0.0,
"patterns": [
"in today'?s (?:fast-paced|modern|digital|ever-changing) world",
"in the (?:ever-)?(?:evolving|changing) (?:landscape|world) of",
"let'?s (?:dive in|unpack|explore this)",
"here'?s a comprehensive"
]
},
{
"name": "engagement-bait",
"description": "Nudging the reader instead of informing them.",
"suggestion": "Cut it.",
"severity": "error",
"budget": 0.0,
"patterns": [
"let that sink in",
"read that again",
"this changes everything",
"here'?s the thing\\b"
]
},
{
"name": "vague-attribution",
"description": "Claims with no named source.",
"suggestion": "Name the person, paper, or outlet with a date, or drop the claim.",
"severity": "error",
"budget": 0.0,
"patterns": [
"\\bstudies (?:show|suggest|indicate)\\b",
"\\bexperts (?:say|agree|note)\\b",
"\\bresearch (?:shows|suggests|indicates)\\b",
"\\b(?:some|many) (?:critics|observers|analysts) (?:argue|note|suggest)\\b",
"\\bindustry reports suggest\\b"
]
},
{
"name": "promotional",
"description": "Brochure register.",
"suggestion": "Replace the adjective with a fact, or cut it.",
"severity": "warn",
"budget": 0.0,
"patterns": [
"rich (?:cultural )?(?:heritage|history|tapestry)",
"stunning natural beauty",
"nestled in the heart of",
"must-(?:visit|see|read|have)\\b",
"\\bbreathtaking\\b",
"\\bworld-class\\b"
]
},
{
"name": "transition-crutch",
"description": "Connective tissue that can usually be deleted with no loss.",
"suggestion": "Delete it, or use a plain connector: but, so, then.",
"severity": "warn",
"budget": 4.081,
"patterns": [
"\\bmoreover\\b",
"\\bfurthermore\\b",
"\\badditionally\\b",
"\\bon top of that\\b",
"\\bthat said\\b"
]
},
{
"name": "copula-avoidance",
"description": "Swapping 'is' for something weightier.",
"suggestion": "Use 'is' or 'was'.",
"severity": "warn",
"budget": 0.0,
"patterns": [
"\\bserves? as\\b",
"\\bstands? as\\b",
"\\brepresents? a\\b"
]
},
{
"name": "assistant-residue",
"description": "Chat-assistant phrasing left in published text.",
"suggestion": "Delete. This should never reach a reader.",
"severity": "error",
"budget": 0.0,
"patterns": [
"\\bas an AI language model\\b",
"\\bI hope this helps\\b",
"\\blet me know if you (?:need|have)\\b",
"\\bfeel free to reach out\\b",
"\\bas of my (?:last )?knowledge (?:update|cutoff)\\b",
"\\bI hope this (?:message|email) finds you well\\b"
]
}
],
"cadence": [
{
"name": "flat-cadence",
"description": "Sentence lengths vary less than human writing typically does.",
"suggestion": "Rewrite one sentence in every three-sentence run to a different length. A short sentence after two long ones does more than any word swap.",
"severity": "warn",
"direction": "low",
"threshold": 0.2367,
"min_words": 120
},
{
"name": "uniform-paragraphs",
"description": "Paragraphs are all about the same length.",
"suggestion": "Break one paragraph early and let another run long. A one-line paragraph is allowed.",
"severity": "warn",
"direction": "low",
"threshold": 0.5227,
"min_words": 120
},
{
"name": "no-short-sentences",
"description": "Nothing in the draft is short.",
"suggestion": "Cut one sentence down to under eight words. It changes the rhythm of everything around it.",
"severity": "warn",
"direction": "low",
"threshold": null,
"min_words": 120
},
{
"name": "triplet-habit",
"description": "Reflexive lists of three: 'x, y, and z' over and over.",
"suggestion": "Use the number of items that exists. Two is fine. One is often best.",
"severity": "warn",
"direction": "high",
"threshold": 5.1787,
"min_words": 120
},
{
"name": "em-dash-habit",
"description": "Em dashes used as a default connector.",
"suggestion": "Use a comma, a colon, parentheses, or two sentences.",
"severity": "warn",
"direction": "high",
"threshold": 1.4888,
"min_words": 120
},
{
"name": "repeated-openers",
"description": "Consecutive sentences starting with the same word.",
"suggestion": "Vary the opener, unless the repetition is deliberate.",
"severity": "warn",
"direction": "high",
"threshold": 0.2222,
"min_words": 120
}
],
"meta": {
"calibrated": true,
"corpus": "HC3 human answers (informal) + human scientific abstracts (formal) + wikitext-103 articles (multi-paragraph)",
"n_documents": 2602,
"informal": 1000,
"formal": 1000,
"structured": 602,
"min_words": 120,
"target_fpr": 0.05
}
}