Technical architecture

The playbook is TypeScript. A prompt is not a policy.

Most renewal copilots ask a model to “flag risky clauses.” That is a wrapper. Lever splits the job: the model may extract and draft. Harbor playbook v3 scores. The gate refuses SEND until a human stamps every LEVER.

Sequential workflow

Dump → extract → score → stamp → draft

Intake files five exhibits. Extract (fixture or Gemini) returns terms with evidence spans and a modelVerdict. scoreLevers() ignores that verdict except to mark OVERRIDE. canSend() counts unstamped levers. Zero emails leave the process.

Harbor playbook v3

Numbers, not vibes

maxTermMonths = 12
maxUpliftPctWithoutUsageGrowth = 8
minNoticeDays = 30
maxIdlePct = 15
requireDataExport = true
minLiabilityCapMonthsOfFees = 12

Control shot

The model accepts 15-day notice because the AE called it standard. The playbook marks LEVER. OVERRIDE is visible on the desk.

Second control shot

SEND before stamps returns HOLD. The counter-email exists as text. It is not posted.

Replay

Judges can run /desk?play=1 with no API key. Live Gemini is optional and cannot soften the playbook.