Docs / 06 Check
tell
tell reads a draft and points at the patterns that make text feel machine-written: the phrase tells, the too-even sentence rhythm, the recap ending. It shows you the evidence and deliberately refuses to compress it into a single fake-confident verdict.
When to reach for it A draft is about to go to a customer, a hiring manager, or the public, and you want to know what it signals before someone else runs it through a detector. Or you wrote with AI help and want the slop out before anyone reads it.
What it does
tell check runs ten local stylometric checks: sentence rhythm,
phrase tells, em-dash clusters, binary contrasts, colon reveals, importance
puffery, unattributed authority, uniform structure, recap endings, and
formatting slop. Each check reports its own evidence and a tell-density
score, with excerpts from your text. Worth repeating: these patterns also
appear in human writing, which is exactly why tell never invents an overall
verdict.
Remote classifier scores are a separate evidence class. Seven vendor adapters
exist, every one of them off until you set its environment key and choose
--remote for that run. Each remote run prints the destinations by
name before any text leaves the machine. Without that flag the remote rows show
as skipped and nothing is sent.
tell unslop is the cleanup half: it applies deterministic
rewrites (banned-phrase swaps, recap-adverb removal, and similar), flags the
judgment calls it will not make for you, and always writes to a new file.
Install and run
Already running the fieldkit core? The tool is one
plugin add away:
fieldkit plugin add tell
fieldkit tell check draft.md
Working from the fde-fieldkit repo instead? You need
uv; one uv sync installs
the core and every tool editable:
uv sync
uv run fieldkit tell check draft.md
There is also an optional local RoBERTa detector. It is not installed by
default, and no model weights are downloaded until the first run with
--ml:
fieldkit plugin add tell --extra ml
fieldkit tell check draft.md --ml
Every flag
tell check
| Flag | Default | What it does |
|---|---|---|
FILE |
required | Text or Markdown file to check. Use - to read stdin. |
--remote |
off | Allow eligible configured remote checkers for this run, after naming them. |
--ml |
off | Run the optional local RoBERTa detector. First use downloads model weights. |
--timeout SECONDS |
20.0 | Per-checker timeout, between 0.1 and 120. |
--json PATH |
off | Also write the signal report, detectors included, as JSON. |
--html PATH |
off | Also write a printable HTML report. |
tell adapters
No flags. Prints each vendor adapter and whether its environment keys are set, without making a network request.
tell unslop
| Flag | Default | What it does |
|---|---|---|
FILE |
required | Text or Markdown file to clean. Use - to read stdin. |
-o, --output PATH |
required | Where to write the cleaned copy. unslop never overwrites in place. |
--max-iterations N |
3 | Maximum deterministic rewrite passes, between 1 and 10. |
--diff |
off | Show a word-level diff of what changed, in the terminal. |
--json PATH |
off | Also write rewrite provenance, every edit and why, as JSON. |
Remote adapters and their keys
Set only the keys you intend to use. An adapter with no key is always skipped, and skipped rows say so in the output rather than disappearing.
| Adapter | Environment variables |
|---|---|
| Pangram | FIELDKIT_TELL_PANGRAM_KEY |
| GPTZero | FIELDKIT_TELL_GPTZERO_KEY |
| Originality | FIELDKIT_TELL_ORIGINALITY_KEY |
| Copyleaks | FIELDKIT_TELL_COPYLEAKS_EMAIL and FIELDKIT_TELL_COPYLEAKS_KEY |
| Sapling | FIELDKIT_TELL_SAPLING_KEY |
| Winston | FIELDKIT_TELL_WINSTON_KEY |
| ZeroGPT | FIELDKIT_TELL_ZEROGPT_KEY |
Worked examples
1. Check a draft, fully offline
Each check gets its own panel with severity, density, and excerpts. The remote table still appears so you can see what was skipped and why.
uv run fieldkit tell check draft.md
34 words · 3 sentences · 2 paragraphs · mean sentence 11.3 words
Stylometric tells are patterns overrepresented in machine text, but
they also appear in human writing.
STRONG Phrase tells tell-density 1.00
4 overrepresented phrases found.
• ever-evolving — lexicon phrase: ever-evolving
• robust — lexicon phrase: robust
NOTICE Colon reveals tell-density 0.33
• the key takeaway is clear: embrace the future.
STRONG Recap ending tell-density 1.00
• final paragraph opens with "in conclusion"
Remote classifier scores
┃ checker ┃ status ┃ AI probability ┃ detail ┃
│ Pangram │ skipped │ — │ offline mode │
│ GPTZero │ skipped │ — │ offline mode │
(five more rows, all skipped in offline mode)
2. See which adapters are wired up
Before any real run, confirm what would fire. This command never touches the network.
uv run fieldkit tell adapters
tell adapters
┃ adapter ┃ environment variables ┃ keyed ┃
│ Pangram │ FIELDKIT_TELL_PANGRAM_KEY │ no │
│ GPTZero │ FIELDKIT_TELL_GPTZERO_KEY │ no │
│ Originality │ FIELDKIT_TELL_ORIGINALITY_KEY │ no │
(four more rows)
3. Clean the draft and see the diff
unslop applies the deterministic edits itself and hands the judgment calls back to you, with advice attached.
uv run fieldkit tell unslop draft.md -o clean.md --diff
Deterministic edits
┃ iteration ┃ edits ┃ transforms ┃
│ 1 │ 4 │ banned_swap, recap_adverb │
Suggestions requiring judgment
┃ pattern ┃ excerpt ┃ advice ┃
│ colon_reveal │ The key takeaway is clear: │ Turn the setup and reveal │
│ │ embrace the future. │ into an ordinary sentence. │
wrote clean.md
Next steps
If the draft quotes customer data, run scrub on the source material before it goes anywhere. And log the ship in debrief while the win is fresh.