deepseek-biber-client-letter
Register lock for correspondence with clients tuned for DeepSeek V4 Pro - professional dialogue: rationed first/second person, advice modals, clear narrative updates. Use when drafting or rewriting a letter or email to a client, advice letter, status report, covering letter, fee explanation, or client update. Pairs with deepseek-biber-fact and deepseek-biber-argument (never mix the three registers) and bieber-scale (scoring).
Source: .opencode/skills/deepseek-biber-client-letter/SKILL.md — site rebuilt 2026-09-05.
deepseek-biber-client-letter - client correspondence register (DeepSeek V4 Pro)¶
Biber profile: the dialogue register. The only register of the family where D1 positives are RATIONED, not abolished: first and second person, present tense, questions and that-deletion are the machinery of a professional conversation. D4 is elevated (advice = suasion), D6 high (explanations via that-clauses). Composite of three routed sub-registers: STATUS (narrative, past), ADVICE (present, suasive), ACTION (imperative + modal).
CALIBRATION STATUS - BANDS PROVISIONAL¶
Bands below are theory-derived, NOT yet calibrated. Until real exemplars have been scored (plan: 10-15 anonymised client letters and emails -> run bieber_scorer.py -> baseline = observed centre, band = centre +/- 1 sd), treat the per-sentence gate as ADVISORY and record observed scores for the calibration pass. Remove this banner when the table is replaced with empirical values.
Target profile (pybiber raw scores - provisional)¶
D1 is calibrated to Biber (1988) scale (R2=0.96). D2-D6 use raw pybiber scores; direction is reliable, magnitude is relative.
| Dimension | Target band (provisional) | Baseline (provisional) | Reference (Fact) | Reference (Argument) | Key features |
|---|---|---|---|---|---|
| D1 | -160 to -30 | -90 | -365 | -188 | rationed 1st/2nd person, present tense, nouns 200-320 |
| D2 | -100 to +20 | -40 | -80 | -62 | short past-tense update passages |
| D3 | -60 to 0 | -30 | +13 | +4 | time adverbials, adverbs (promptly, please) |
| D4 | +10 to +80 | +40 | -52 | +6 | advice modals, suasive verbs, infinitives, conditionals |
| D5 | -50 to -10 | -30 | -62 | -46 | moderate passives, conjuncts |
| D6 | +20 to +60 | +40 | -11 | +12 | that-clauses, that-deletion, demonstratives |
Per-sentence gate: any sentence outside its dimension band is a critic flag. Bands are intentionally wide - if a paragraph falls anywhere within, it passes. Only sentences outside the band are flagged for correction. In ADVICE paragraphs the D4 gate is the signature: one modal or suasive verb per sentence.
The rationed-positives ledger (the flip)¶
Every other register in the family says "starve the positive column". This one says "ration it". The letter stays professional through ceilings and absolutes, not blanket bans:
PERMITTED positives, with ceilings: - 2nd person (you, your, yourselves) <= 15/1000w - the dialogue marker - 1st person (we, our, us, I, my) <= 10/1000w - present tense - freely, in ADVICE and ACTION sections - analytic negation - allowed, and tactful: "we do not recommend", "we cannot advise" - that-deletion in explanations: "Please confirm you will attend" - copula - allowed, preferred to private verbs - questions: max 2 per letter, yes/no only ("Do you wish us to instruct counsel?") - imperatives ONLY inside the ACTION-REQUIRED frame ("Please return...")
BANNED outright: - contractions (don't, we're, it's), discourse particles (well, so, now) - amplifiers and emphatics (very, extremely, absolutely, quite) - hedges (I guess, sort of, kind of, I think) - use "we consider", "we are advised" - WH-questions (what, why, how) - the client is not being interrogated - emotive appraisal (devastated, furious, shocking) - professional distance - exclamation marks in formal letters; slang; interjections
The arithmetic: at nouns 200-320/1000w (x -0.799) and prepositions 100-160/1000w (x -0.540), the letter has room for a rationed first/second person load (~+0.9 x 25/1000w combined) and still lands in band. The letter stays out of conversation by noun density and sentence length, NOT by banning pronouns - ban the pronouns and you have a filing, not a letter.
Multi-agent workflow¶
All sub-agents use DeepSeek V4 Pro for dimensional reasoning and register execution. Roles are split to avoid conflicting priorities within a single agent.
- Planner (DeepSeek V4 Pro) - before any drafting, produces a
paragraph-by-paragraph dimensional schema. Frame selection, feature
activation, and risk thresholds: consult
../bieber-scale/reference/crosswalk.mdbefore assigning frames. - Target D1-D6 per paragraph (see Target profile above); the letter
skeleton is fixed:
INTRODUCTION / STATUS REPORT / ADVICE / ACTION REQUIRED / NEXT STEPS - Register routing is DETERMINISTIC: STATUS and NEXT-STEPS paragraphs
narrate -> fact frames (past tense, attributed, short); ADVICE and
ACTION paragraphs argue/advise -> advice frames. A paragraph that mixes
registers is split at sentence level; a sentence that cannot be routed
is flagged
[REGISTER: human]- never blended. - Required feature rates: nouns 200-320/1000w, prepositions 100-160/1000w, one modal or suasive verb per sentence in ADVICE/ACTION paragraphs, 2nd-person rate 5-15/1000w across the letter
- Sentence frames per paragraph - select from: Advice frame: [You/we] [advice modal - should, must, may] [infinitive] [object]. "You should review the specification before authorising the variation." Prediction frame: [We] [will] [outcome] [time]. "We will revert with a full report by the close of this week." Explanation frame: [We] [speech verb - note, confirm, advise] [that or zero] [content]. "We note that the defender has not yet lodged defences." Question frame (max 2 per letter): [Do/Would] [you] [wish] [us to] [action]. "Do you wish us to instruct counsel for the hearing?" Action-required frame: [Please] [imperative] [object] [deadline]. "Please return the signed copy by 20 June." Update frame: [On date] [we] [past verb] [event]. "On Tuesday we lodged the notice of intent to sue."
- Banned per paragraph (max 5 items): contractions, WH-questions, hedges, emotive appraisal, bare imperatives outside ACTION REQUIRED.
-
Paragraph budget: no paragraph exceeds 500 words - a cap, not a target; context determines size and most paragraphs are shorter. A status update and the advice on it are separate paragraphs, never mixed. Chunk = paragraph: register block re-asserted at each paragraph head.
-
Structural Drafter (DeepSeek V4 Pro) - receives the Planner's schema plus the register block. Fills content into the specified sentence frames in <=500-word chunks. Re-asserts the register block per chunk. Does not self-check during generation. Priority: dimensional targets.
-
Critic (DeepSeek V4 Pro) - runs
bieber_scorer.pyon the output, returns per-sentence D1-D6 scores. For every sentence outside its target band, provides: the original sentence, the corrected sentence, and the dimensional reason (citing../bieber-scale/reference/crosswalk.md). Checks register routing (a STATUS paragraph scoring D4>+10 has leaked advice; an ADVICE paragraph with zero modals has failed its genre) and the ceilings: 2nd person >15/1000w or >2 questions flags. Never regenerates the passage. -
Gatekeeper (DeepSeek V4 Pro) - receives the Critic's correction list. For each proposed correction, checks predicted effect on ALL 6 dimensions using the crosswalk's per-frame risk table. Rejects any correction that fixes one dimension while pushing another out of band. Approves only Pareto-improving edits. Returns approved corrections to the Drafter. Unapproved corrections flagged for Rewrite Drafter - structural tradeoffs.
-
Surgical Drafter (DeepSeek V4 Pro) - applies ONLY Gatekeeper-approved corrections. Never touches an in-band sentence. Output: original -> corrected only. Returns un-applicable corrections to Gatekeeper.
-
Rewrite Drafter (DeepSeek V4 Pro) - receives paragraphs that failed the structural threshold (>=50% of sentences fail the same dimension) or corrections rejected by the Gatekeeper. The Rewrite Drafter must RESTRUCTURE before rewriting: the task is not word-swapping. The paragraph is decomposed into its component propositions, then reassembled using the Planner's assigned sentence frames - entirely new sentence architecture, zero surface editing.
Restructure protocol (<=500 words per chunk):
1. Extract every proposition, fact, date, figure, fee, deadline, document
reference and item of advice from the failing paragraph as a flat
numbered list.
2. Reassign each item to a Planner frame (Advice, Prediction,
Explanation, Question, Action-required, Update) based on its function.
3. Rebuild from the numbered list using only the assigned frames - do not
reference the original sentence structure. The original is a content
inventory, not a template.
4. Reprompt at 500 words: re-supply the Planner schema, the frame
assignments, the register block, the numbered proposition inventory,
the last rebuilt paragraph as anchoring context, and the paragraph
position in the overall document structure.
5. No proposition may be added, removed, or altered in legal effect or
advice force. Duplicate propositions across paragraphs may be omitted
- every omitted proposition must be listed at the end of the redraft
as [OMITTED: proposition X - duplicate of paragraph Y].
6. If a proposition cannot be framed without changing its substance or
its advice force, it is returned to the list flagged [REGISTER:
human]. The Rewrite Drafter must fail honestly rather than fabricate.
The rebuilt paragraph is scored by the Critic as a new Pass.
-
Loop: max 3 Critic passes per paragraph. Stop when all sentences pass all dimensions, or when no Gatekeeper-approved corrections remain. Flag remaining failures
[REGISTER: human]. -
Sub-Editor (DeepSeek V4 Pro) - operates in two passes:
7a. Heading & Structure Check - assumes the client-letter skeleton:
INTRODUCTION / STATUS REPORT / ADVICE / ACTION REQUIRED / NEXT STEPS.
For each block, the Sub-Editor asks (does not dictate):
- "This block narrates events - should it sit under STATUS REPORT?"
- "This block recommends a course - should it sit under ADVICE?"
- "This ADVICE paragraph scores D4 < +10 - has the advice been stripped
of its modals, or is it misrouted narrative?"
The skeleton is a default - override only if the Planner or user has
specified a different structure.
7b. Seven Defect Checks - surface polish the dimensional scorer is blind to: redundancy, nominalization overreach, missing prepositions, false formality, pronoun-wrapped genitives, plus letter-specific checks: the client's name and matter reference present, one clear action or decision requested, sign-off appropriate (a letter is not a pleading). Does not restructure sentences or alter register. The output is the final deliverable.
DeepSeek V4 Pro adaptation notes¶
- Over-formalization is the main drift. DeepSeek re-registers client letters toward the skeleton/pleading register and the "you" disappears - a letter with zero second person reads as a filing. Enforce the 2nd-person quota positively (5-15/1000w), not as a ceiling alone.
- Quotas over prohibitions. DeepSeek responds to quotas more reliably than to qualitative nudges: give it "max 2 questions, yes/no only" and "one modal per ADVICE sentence", not "keep it friendly".
- Advice must be modal-dressed, not fiat. "Consider authorising the variation" fails; "You should consider authorising the variation" passes. Bare imperatives belong only in ACTION REQUIRED.
- At long stretches it drifts chatty in the opposite direction (contractions, "please note" piled up) - the absolute bans are the backstop there.
- Suppress internal reasoning from the visible output: deliverable text and self-check table only. Register drift sets in at ~300-500 words; chunk and re-assert.
The register block (paste verbatim into the system/user prompt)¶
You are a register editor. You write in the register of professional
correspondence to a client - a letter or email from solicitor to client:
clear, courteous, informative, and never chatty.
THE DIMENSION (Biber D1 - Involved vs Informational Production)
This register is the family's dialogue register: first and second person,
present tense and questions are PERMITTED but rationed. The letter stays
professional through noun density (200-320/1000w) and prepositions
(100-160/1000w), not through banning pronouns. Target D1 band: -160 to -30.
PERMITTED (rationed):
- second person (you, your) <= 15/1000w - this is what makes it a letter
- first person (we, our) <= 10/1000w
- present tense in advice and explanation
- analytic negation for tact ("we do not recommend")
- that-deletion in explanations ("confirm you will attend")
- questions: max 2 per letter, yes/no only
- imperatives only inside ACTION REQUIRED ("Please return...")
BANNED (absolute):
- contractions, discourse particles (well, so), interjections
- amplifiers/emphatics (very, extremely, absolutely), hedges (I guess,
I think - use "we consider", "we are advised")
- WH-questions; emotive appraisal; slang; exclamation marks in formal
letters
THE OTHER DIMENSIONS
D4 is the advice dimension and must be PRESENT: one modal or suasive verb
per sentence in advice and action paragraphs (should, must, may, will,
recommend, advise, require, ask). A paragraph of advice with zero modals is
not advice. Conditionals carry the alternatives: "If you prefer, we can..."
D2 stays low: status updates narrate briefly in the past tense with dates,
then stop - the letter is not a chronology. D6 high: explanations via
that-clauses ("We note that...", "We are advised that...") and that-deletion
("Please confirm you will attend").
THE REGISTER
The letter reports where matters stand, advises what the client should do,
and asks for instructions - in that order, each in its own paragraph. It
speaks to the client, not past them.
Exemplar:
"We have now received the defender's defences. In brief, the defender
denies that the works were defective and maintains that the delay was
caused by the pursuer's instructions. We are of the view that the defences
contain no answer to the certification issue. You should consider whether
you wish us to raise proceedings, or to explore an agreed extension of
time. Please let us have your instructions by 20 June. We will then revert
with a recommendation."
<text to adapt>
After the text, provide a Register self-check table: constraint, PASS/FAIL,
first failing token. Revise any FAIL to PASS before finalizing.
Matched-pair few-shot bank (in-profile by construction)¶
When few-shotting register, show a matched pair, not the target alone. Until
the client-letter bank exists, use ../bieber-scale/references/uksc_matched_pairs.jsonl
(596 pairs; matched-pair 2-shot beat target-only 2-shot 7-1 in a 48-run A/B)
with confidence: OK pairs ONLY - but judgment prose is not dialogue, so
prefer building the letter bank during calibration: real anonymised client
letters as output, informal paraphrase as input, stored at
references/client_letter_matched_pairs.jsonl.
Scan every rewrite for case AND statutory patterns (sections, articles, clauses, schedules, "Act YYYY") and check each hit against the source verbatim - a case-name scan alone misses statutes (38/48 rewrites carried non-source legal references in the A/B re-run). Advice letters are where model-memory citations leak worst: the letter can name no authority that is not in the matter file.
Drift control¶
Register constraints decay after ~300-500 words of continuous generation.
- Chunk = one paragraph: no paragraph exceeds 500 words (a cap, not a target - context determines size). Re-assert the register block at the head of every paragraph.
- Fence quoted/extracted material (advice from counsel, court orders, opponent letters) in clearly marked blocks so its register is not imitated.
- Self-check each chunk against the feature list before moving on.
Rewrite mode (re-registering existing text)¶
Same multi-agent workflow as drafting, with added meaning fidelity:
- Draft agent - receives the preservation preamble below plus the register block. Rewrites the input in <=500-word chunks. Re-asserts the register block per chunk.
- Critic agent - runs
bieber_scorer.pyon each chunk, flags every sentence outside its target band. Additionally, for every rewritten sentence, confirms semantic equivalence: same facts, dates, figures, fees, deadlines and document references - and the FORCE of every item of advice (never softened, never strengthened, never qualified). Output format per sentence:(original, rewritten, dimensional reason, semantic: PASS/FAIL). - Draft agent - applies corrections. Any sentence where semantic
equivalence or advice force cannot be maintained while hitting the
register target is flagged
[REGISTER: human decision]- never silently altered. - Loop terminates when all sentences pass both dimensional AND semantic checks, or after 3 passes.
Preservation preamble for the draft agent:
You are a register editor. Rewrite the following into the client
correspondence register below. You must preserve exactly: every fact, date,
figure, fee, deadline, document reference and quotation; the order of
events; and the FORCE of every item of advice - never soften, strengthen or
qualify a recommendation; never change a deadline or an amount; add no
authorities; invent no facts.
Self-check list (per chunk)¶
- Second person present across the letter (5-15/1000w) - it reads as a letter, not a filing.
- Max 2 questions per letter, yes/no only; zero WH-questions.
- Zero contractions, discourse particles, amplifiers, emphatics, hedges, emotive appraisal.
- ADVICE/ACTION paragraphs: one modal or suasive verb per sentence.
- STATUS paragraphs: past tense, dated, attributed - and short.
- Deadlines, fees, amounts and document references verbatim; every legal assertion sourced from the matter file.
Closing register loop (recursive check-and-correct)¶
After the full text is assembled, run a bounded loop - max 3 passes:
- Score the assembled text with the calibrated scorer:
python .opencode/skills/bieber-scale/tools/bieber_scorer.py --file <draft>Read thebiber_scaleper sentence andD1_involved_hits. - Flag every sentence outside its target band on any dimension (see Target profile above). In ADVICE paragraphs, a sentence at D4 < +10 fails even when D1 passes - advice without suasion is misrouted narrative. Paragraph averaging is not a defence.
- Correct only flagged sentences, at feature level only, with dimensional justification. Never regenerate the passage.
- Terminate when: all sentences pass; or 3 passes used; or a fix would
alter meaning or advice force - flag
[REGISTER: human decision].
Verification¶
Score with the calibrated scorer:
python .opencode/skills/bieber-scale/tools/bieber_scorer.py --file <draft>
Check per-sentence biber_scale.D4 in advice paragraphs (>= +10) and D1
(target -160 to -30). Report observed medians - until calibration replaces
this table, every observed median is calibration data.