How Score works
Every signal Score measures, why it matters, how the numbers combine, and what Score can't tell you. The weights on this page are read from the same file the engine uses.
Score reads a draft and measures four things: stock phrases, rhythm, word choice and punctuation. The result is a measurement of the writing, not a verdict on who or what wrote it. This page is the whole method. Every number on it is imported from the file the engine runs on, so if the code changes, this page changes with it.
What Score measures
Score looks for the habits that make writing read as a template: stock phrases, inflated words, sentences that all run the same length, and a few punctuation tics. It does not look at register. A plain, precise formal letter should score well, and in our tests it does.11 The formal fixture in the test suite, a board update with no contractions and several passive sentences, is required to stay out of the lowest band. The test suite fails if it doesn't.
Score does not say who or what wrote something. Plenty of people write stock phrases by hand, and a careful prompt can produce text with none. It measures the text in front of it, and nothing else.
The signals
The deterministic part of Score is plain TypeScript: regular expressions and arithmetic, no model. Each signal returns the exact spans it found and a reason, which is what you see highlighted in a readout.
Stock phrases (75 patterns)
Template openers and closers, clichés and constructions that recur in template prose, each with a weight from 0.5 to 1.5 for how strongly it signals boilerplate. A few of them:
I hope this email finds you well
, weight 1.5. A stock opener. Start with the reason you're writing.delve
, weight 1.4. "Delve" is a heavily used stock word. Try "look at" or "dig into".at your earliest convenience
, weight 1. Stiff and vague. Give a date or say "when you can".a testament to
, weight 1.2. A stock phrase. Say what it shows.in the realm of
, weight 1.2. Padding. "In" usually does it.plays a crucial role
, weight 1.2. A stock construction. Say what it does.
Deliberately left out: ordinary formal wording such as “please find attached”, “kind regards” or “I am writing to inform you”. Those are formal, not stock phrasing.
Inflated words (26 patterns)
Words where a plainer one exists, each with its suggested replacement: utilise becomes use, commence becomes start, facilitate becomes help or run. Words already inside a flagged phrase are counted once, as part of the phrase.
Intensifiers and filler (6 groups)
Very, really, truly, in order to and similar. People use these too, so Score allows 1.5 per 100 words before they cost anything.
Rhythm
Sentence lengths and how much they vary, measured as the coefficient of variation (standard deviation over mean). People mix short and long sentences without trying; template-like drafts often don't. Below a variation of 0.42, rhythm starts to cost points, up to 20 at perfectly even sentences. It needs at least 3 sentences to judge, and counts fully from 5. Greeting and sign-off lines are left out. Sentence splitting knows about abbreviations like Mr., Dr., e.g. and decimals.
Several sentences that open with the same two words also count here, at 4 points each.
Punctuation
Em dashes (and the spaced dashes people type for them) above 0.7 per 100 words, and “X, Y and Z” lists beyond 1 per draft.
Reported, never penalised
Contraction rate, passive voice and register are measured and shown, but cost nothing. Contractions are counted carefully: only known contracted forms count, so a possessive like the client's or John's is never mistaken for one, with straight and curly apostrophes alike.
How the number is made
The measured score starts at 100. Each dimension subtracts points up to its cap. The caps add up to 138, more than 100, on purpose: a draft thick with stock phrasing can land in the lowest band (“Many flags”) on that alone, while one weak dimension can't sink an otherwise clean draft.
| Dimension | What it counts | Max points off |
|---|---|---|
| Phrasing | Stock phrases, template openers and closers, clichés and the "not just X, it's Y" construction. | 72 |
| Word choice | Inflated words where a plain one exists (utilise, facilitate, pivotal) and intensifiers that add no information. | 24 |
| Rhythm | How much sentence lengths vary, and whether several sentences open the same way. | 24 |
| Punctuation | Em dash habits and stacked "X, Y and Z" lists. | 18 |
Within phrasing, each flagged phrase costs 13 points times its weight, plus 2.2 times its weighted density per 100 words, so a short note with one stock phrase loses less than an email built from them. A template opener costs 8 and a template closer 6. Inflated words cost 5 each plus 2 per 100-word density.
When the AI judge runs, the final score is 60% the measured score and 40% the judge's. When it doesn't, the measured score is the whole of it.
The AI judge
The judge is a language model asked to read the draft against a fixed rubric and reply with JSON only: three numbers from 0 to 100 for wording, specificity and rhythm, up to eight exact quotes it would flag, and a one-line summary. Its three numbers combine as 50% wording, 30% specificity and 20% rhythm.
The judge runs on OpenAI's GPT models through Azure OpenAI, at temperature 0.1, with at most 700 output tokens. Rewrites are written by Google's Gemini, so the judge comes from a different model family from the writer and isn't grading prose in its own style. The rubric tells it explicitly that formal register is not a fault and that it must not guess who wrote the text. Its flagged quotes are only kept if they appear in the draft word for word.
Bands
- 0–39: Many flags. Built largely from stock phrasing or template structure.
- 40–69: Some flags. Some tells, often a template opener or closer around otherwise plain writing.
- 70–100: Few flags. No strong tells. This is where most people's own writing lands, formal or not.
When something fails
Score fails open. If the judge isn't configured, times out, is rate limited, returns something that isn't valid JSON, or returns numbers outside the rubric, the readout falls back to the measured score and says the judge was unavailable. A judge failure never blocks a score. Inputs are limited to 40 to 5,000 characters; below the minimum, Score asks for a little more text rather than guessing.
Voice match
Signed in, Score can also compare a draft with one of your saved voices. It measures the same habits in the voice's writing samples and in the draft: contractions, sentence length and variation, dashes, exclamation and question marks, first-person rate, word length, commas, semicolons, inflated words and lowercase sentence starts. Each habit is compared with a tolerance, rates relative to their size, and habits neither text has count for little. The result is a match percentage and the three biggest differences in plain English, such as “This voice usually uses contractions. This draft uses none.” It needs at least 60 words of samples.
Limitations
- Short texts are noisy. A two-sentence message can't show rhythm, and one phrase moves the score a lot.
- Some genres are formulaic by design. Legal notices, compliance text and certain kinds of formal correspondence use fixed phrases for good reasons. Score will flag them. That's information, not a verdict.
- Non-native English. Phrases taught in business English courses overlap with the stock phrases Score flags. A low score is not evidence of anything about the writer.
- It is a measurement, not a verdict. It can't tell who or what wrote something, and shouldn't be used to judge anyone's work.
- English only. The phrase lists and sentence rules are written for English.
- A guide, not a verdict. Read the draft aloud. That catches what any measure misses.
Cite this
Sealis Labs (2026). How Score works. Method 2026-01, 16 October 2026. https://sealis.tech/labs/how-score-works