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.

Scrolled tell report of synthetic slop_sample.md: local stylometric signals, remote adapters marked skipped
Scrolled tell report of synthetic slop_sample.md. Local signals are listed; remote adapters are skipped. Open full-size image

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:

Add the tool, then check a draft
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:

Dev checkout
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:

Optional local ML detector
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
PangramFIELDKIT_TELL_PANGRAM_KEY
GPTZeroFIELDKIT_TELL_GPTZERO_KEY
OriginalityFIELDKIT_TELL_ORIGINALITY_KEY
CopyleaksFIELDKIT_TELL_COPYLEAKS_EMAIL and FIELDKIT_TELL_COPYLEAKS_KEY
SaplingFIELDKIT_TELL_SAPLING_KEY
WinstonFIELDKIT_TELL_WINSTON_KEY
ZeroGPTFIELDKIT_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.

Command
uv run fieldkit tell check draft.md
Abridged output
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.

Command
uv run fieldkit tell adapters
Abridged output
              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.

Command
uv run fieldkit tell unslop draft.md -o clean.md --diff
Abridged output
            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.