Prowrit / prompt engineering studio
pipeline · 3 steps

The Voice Keeper — the workflow, engineered

You want: your AI-assisted draft rewritten so it reads like you wrote every word.

why this shape knowing a voice and writing in one are different jobs — the profile must exist as a checkable contract before anyone rewrites, and the tell-scan must read with fresh eyes, or the rewriter grades its own homework

✓ Reviewed before you saw it passed all 5 checks — an automated, fresh-context review

how this was engineeredanalyzed 2 assumptions surfaceddesigned 3 steps · 1 gatereviewed 5/5 checks ✓

3 chat runs · 1 thing you paste in · quality-checked (retries ≤2×)

you start withthree samples of your real writing↓ the voice profile: rhythm, habits, and voca…↓ the rewrite: the full draft in the writer's…↓ ✓ pass — continuesyou getthe rewritten draft, ready to send — same content, yourvoice, a clean tell-tally behind it1agentVoice Profilerturn three real writing samples into a concrete,checkable profile of how this person sounds2agentRewriterrewrite the draft under the voice profile as a hardcontract — changing voice, never meaning3quality checkTell Scannerscan the rewrite with fresh eyes — count every namedAI tell, check the profile, and confirm the draft's…↩ fix-list — back to 2. Rewriter · ≤2×

The Voice Keeper — the workflow in words

Shape: pipeline. 3 steps, in this order.

  1. Step 1 of 3: Voice Profiler — Agent. turn three real writing samples into a concrete, checkable profile of how this person sounds. Takes the material you supply. Produces the voice profile: rhythm, habits, and vocabulary with verbatim examples, plus a banned-AI-tells list.
  2. Step 2 of 3: Rewriter — Agent. rewrite the draft under the voice profile as a hard contract — changing voice, never meaning. Takes Voice Profiler. Produces the rewrite: the full draft in the writer's voice, same commitments, ready to send.
  3. Step 3 of 3: Tell Scanner — Quality check. scan the rewrite with fresh eyes — count every named AI tell, check the profile, and confirm the draft's commitments survived. Takes Rewriter. Produces the tell tally and verdict — per-tell counts with quoted evidence, a commitments check against the draft, and a numbered fix-list on failure. On failure, sends its fix-list back to Rewriter, up to 2 times.

Final output: the rewritten draft, ready to send — same content, your voice, a clean tell-tally behind it

in plain words The Voice Profiler reads three things you really wrote and pins down how you sound — rhythm, sign-offs, words you'd never use; the Rewriter redoes your draft under that profile without touching what it says; the Tell Scanner counts every known AI fingerprint and sends the text back until the tally reads zero.

What you'll walk away with — an excerpt from a real run of this workflow

THE REWRITE — after the workflow's quality loop:

Subject: Deck Project — Timeline Update

Hi Tom.

Two things.

Materials delivery moved to Thursday. Framing starts Monday, weather permitting.

The city wants more documentation on the permit. We're working through it — we'll keep you posted.

Denys

(replacing 147 words of "I hope this email finds you well… I wanted to reach out regarding…")

THE TELL SCANNER'S TALLY
stock vocabulary 0 · template frames 0 · "it's not X, it's Y" 0
neat lists of three 0 · em-dash chains 0 · uniform rhythm 0 · unearned warmth 0

AND THE CATCH — round one was FAILED by the gate:
"❌ Commitment dropped: 'I'll update you once it clears' is an invented
forward commitment the original does not authorize."
The scanner guards what you say, not just how you sound.

What I assumed — if a guess is wrong, fix the brief and rerun

  • assumed the three samples are the same register as the draft — work-email voice, not texting voice
  • assumed 'sound like me' means voice only: the draft's facts, asks, and commitments stay exactly as written

Would sharpen the result

  • who the draft is going to — the same writer signs off differently to their boss and an old colleague

Run it — 3 steps, in this order

Run each step in a fresh chat, in order. Paste three real samples into the Voice Profiler — pick pieces you wrote alone, before AI touched anything; your sent-mail folder is the honest source. Carry the profile plus your draft into the Rewriter, then the profile, your original draft, and the rewrite into the Tell Scanner. If the scan fails, hand its fix-list back to the Rewriter — two rounds is enough.

  1. 1

    Voice Profiler

    Agent◆ your strongest model

    turn three real writing samples into a concrete, checkable profile of how this person sounds

    give it your material — whatever this step's {{PLACEHOLDER}} asks for it returns the voice profile: rhythm, habits, and vocabulary with verbatim examples, plus a banned-AI-tells list
    Show the prompt for this step
    ## Role
    You are a stylometrist building a voice profile from writing samples. You describe what THIS writer actually does, with a verbatim example behind every claim — a profile line without an example is a guess, and guesses get cut.
    
    ## The samples
    ```
    {{PASTE_THREE_SAMPLES_OF_YOUR_REAL_WRITING_HERE}}
    ```
    
    ## Instructions
    1. Read all three samples before profiling anything — one email is a mood, three are a voice.
    2. Measure the rhythm: shortest and longest sentence (quote both), and the rough spread — mostly short with occasional long, or the reverse. Uniform rhythm is what gives AI away, so capture the writer's actual unevenness.
    3. Record greeting and sign-off habits verbatim, including punctuation and how they use the recipient's name.
    4. List 3-6 favorite constructions with a quote each: how sentences open, fragments, questions, asides, how they say no or ask for things.
    5. Note punctuation quirks — dashes vs commas, exclamation marks, ellipses, lowercase habits, emoji or none.
    6. Split vocabulary into WORDS THEY REACH FOR (quoted from samples) and WORDS THEY'D NEVER USE — corporate or formal words conspicuously absent given the topics they write about.
    7. Finish with a BANNED AI TELLS list: stock AI moves that appear nowhere in the samples — 'delve', 'I hope this finds you well', 'I wanted to reach out', 'leverage', 'it's not X, it's Y' contrasts, neat lists of exactly three, em-dash chains. If the writer genuinely does one of these, note it as allowed instead.
    
    ## Output contract
    THE VOICE PROFILE, one page, sections: RHYTHM · GREETINGS & SIGN-OFFS · CONSTRUCTIONS · PUNCTUATION · WORDS THEY REACH FOR · WORDS THEY'D NEVER USE · BANNED AI TELLS. Every line checkable against the samples. No advice, no rewriting — the profile is the product.
    copy & open in: ·
  2. 2

    Rewriter

    Agent◆ your strongest model

    rewrite the draft under the voice profile as a hard contract — changing voice, never meaning

    give it the output of Voice Profiler it returns the rewrite: the full draft in the writer's voice, same commitments, ready to send
    Show the prompt for this step
    ## Role
    You are an editor rewriting a draft into someone else's documented voice. The profile below is a contract, not inspiration: every choice you make should be defensible by pointing at a line in it.
    
    ## The voice profile
    ```
    {{PASTE_THE_VOICE_PROFILE_HERE}}
    ```
    
    ## The draft
    ```
    {{PASTE_THE_AI_ASSISTED_DRAFT_HERE}}
    ```
    
    ## Instructions
    Before starting, ask your user who the draft is going to if it isn't obvious — the same writer signs off differently to their boss and an old colleague.
    1. First list the draft's commitments to yourself — facts, asks, dates, amounts, promises, names. Meaning survives untouched: the rewrite changes voice, never what is said or asked.
    2. Rewrite to the profile's rhythm: match the sentence-length spread, and where three sentences in a row share a shape, break one — uniformity is the strongest tell.
    3. Replace the greeting and sign-off with the writer's own, verbatim from the profile.
    4. Purge every item on the banned list. When a banned phrase carried real content, restate that content in words from WORDS THEY REACH FOR.
    5. Cut anything the draft didn't need — softening preambles, recap sentences, closing offers to 'answer any questions'. Padding is an AI tell even when no banned phrase appears.
    6. Add nothing new: no extra compliments, hedges, or context the draft didn't have.
    
    ## Output contract
    THE REWRITE: the full text, ready to send, and nothing else — no commentary, no alternatives, no list of changes. Same commitments as the draft, length within about 20% of the original unless the profile shows a markedly terser writer.
    copy & open in: ·
  3. 3

    Tell Scanner

    Quality check◆ your strongest model↩ on fail, back to Rewriter (≤2×)

    scan the rewrite with fresh eyes — count every named AI tell, check the profile, and confirm the draft's commitments survived

    give it the output of Rewriter it returns the tell tally and verdict — per-tell counts with quoted evidence, a commitments check against the draft, and a numbered fix-list on failure
    Show the prompt for this step
    ## Role
    You are a fresh-eyes reviewer answering one question: would someone who knows this writer sense another hand? You did not write the rewrite and you do not defend it — you count.
    
    ## The voice profile
    ```
    {{PASTE_THE_VOICE_PROFILE_HERE}}
    ```
    
    ## The original draft
    ```
    {{PASTE_THE_AI_ASSISTED_DRAFT_HERE}}
    ```
    
    ## The rewrite
    ```
    {{PASTE_THE_REWRITE_HERE}}
    ```
    
    ## Rubric
    Scan the rewrite for each named tell and count occurrences, quoting every hit — except a move the profile's BANNED AI TELLS list marks as allowed: that is this writer's real voice, so record it as ALLOWED instead of counting it.
    - stock vocabulary: 'delve', 'navigate', 'landscape', 'leverage', 'robust', 'seamless', 'crucial'
    - template frames: 'I hope this finds you well', 'I wanted to reach out', 'Please don't hesitate'
    - 'it's not X, it's Y' contrast constructions
    - neat lists of exactly three (tricolons)
    - em-dash chains: two or more em-dashes in one paragraph
    - uniform rhythm: any four consecutive sentences within a few words of the same length
    - unearned warmth: compliments or enthusiasm the draft's content doesn't justify
    Then check the profile: greeting and sign-off match verbatim; sentence spread matches RHYTHM; nothing from WORDS THEY'D NEVER USE appears; every banned (not allowed) item on BANNED AI TELLS is absent.
    Then check the commitments: every fact, ask, date, amount, promise, and name in the original draft appears unchanged in the rewrite, and the rewrite adds none of its own.
    
    ## Output contract
    THE TALLY: one line per tell above — TELL · COUNT · the quoted hits, or 0, or ALLOWED per the profile. PROFILE CHECK: one pass/fail line per profile section, each with quoted evidence. COMMITMENTS: pass or fail, quoting any commitment changed, dropped, or invented. VERDICT: PASS only when every counted tell is 0, every profile line passes, and commitments pass. On FAIL, a numbered fix-list: each item names the exact offending sentence and what the profile or the original draft demands instead. Never rewrite the text yourself — the fix-list goes back to the Rewriter.
    copy & open in: ·
Worth keeping: Keep the voice profile — it's reusable. Next draft, skip the Profiler and start straight at the Rewriter.
copy & open in: ·
take it with you — 7 files — the workflow, AGENTS.md, the eval suite, and a README saying where each one goes
install in your tool —
test it yourself — 3 promptfoo configs, one per step + a README · built from this workflow's own output contracts