-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauthoring-eval.html
More file actions
392 lines (307 loc) · 158 KB
/
Copy pathauthoring-eval.html
File metadata and controls
392 lines (307 loc) · 158 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
<!doctype html>
<html lang="en" dir="ltr" class="plugin-pages plugin-id-default" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.10.2">
<title data-rh="true">Authoring eval | neokapi</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" property="og:image" content="https://neokapi.github.io/img/og-card.png"><meta data-rh="true" name="twitter:image" content="https://neokapi.github.io/img/og-card.png"><meta data-rh="true" property="og:url" content="https://neokapi.github.io/authoring-eval"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" property="og:locale:alternate" content="nb"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" name="twitter:site" content="@neokapi"><meta data-rh="true" property="og:title" content="Authoring eval | neokapi"><meta data-rh="true" name="description" content="Whether the voice checks find real violations, and whether the voice guide steers writing toward its profile"><meta data-rh="true" property="og:description" content="Whether the voice checks find real violations, and whether the voice guide steers writing toward its profile"><link data-rh="true" rel="icon" href="/img/favicon.png"><link data-rh="true" rel="canonical" href="https://neokapi.github.io/authoring-eval"><link data-rh="true" rel="alternate" href="https://neokapi.github.io/authoring-eval" hreflang="en"><link data-rh="true" rel="alternate" href="https://neokapi.github.io/nb/authoring-eval" hreflang="nb"><link data-rh="true" rel="alternate" href="https://neokapi.github.io/qps/authoring-eval" hreflang="en"><link data-rh="true" rel="alternate" href="https://neokapi.github.io/authoring-eval" hreflang="x-default"><link rel="stylesheet" href="/assets/css/styles.f4228ccd.css">
<script src="/assets/js/runtime~main.8d38095d.js" defer="defer"></script>
<script src="/assets/js/main.341e853d.js" defer="defer"></script>
</head>
<body>
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.png"><div role="region" aria-label="Skip to main content"><a class="skipToContent_WmD6" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.png" alt="neokapi" class="themedComponent_wbKQ themedComponent--light_jlwr"><img src="/img/logo.png" alt="neokapi" class="themedComponent_wbKQ themedComponent--dark_D5UJ"></div><b class="navbar__title text--truncate">neokapi</b></a><a class="navbar__item navbar__link" href="/kapi/overview">Kapi</a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Labs</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/labs">Labs overview</a></li><li><a class="dropdown__link" href="/lab">Content Model Workspace</a></li><li><a class="dropdown__link" href="/lab/segmentation">Segmentation</a></li><li><a class="dropdown__link" href="/lab/convert">File Conversion</a></li><li><a class="dropdown__link" href="/lab/structure">Structure & Layout</a></li><li><a class="dropdown__link" href="/lab/vision">Vision</a></li><li><a class="dropdown__link" href="/lab/media">Audio & Video</a></li><li><a class="dropdown__link" href="/playground-cli">CLI Playground</a></li><li><a class="dropdown__link" href="/kbf-lab">KBF Anatomy</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Reference</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/reference">Reference Overview</a></li><li><a class="dropdown__link" href="/commands">Kapi CLI Commands</a></li><li><a class="dropdown__link" href="/formats">Formats</a></li><li><a class="dropdown__link" href="/tools">Tools</a></li><li><a class="dropdown__link" href="/models">AI Models</a></li><li><a class="dropdown__link" href="/reference/project-file">Project file</a></li><li><a class="dropdown__link" href="/reference/serialization/overview">kapi serialization formats</a></li><li><a class="dropdown__link" href="/reference/mcp">MCP Server</a></li><li><a class="dropdown__link" href="/reference/cli-contract">Scripting & JSON contract</a></li><li><a class="dropdown__link" href="/reference/engine-service">Engine service (gRPC)</a></li><li><a class="dropdown__link" href="/reference/telemetry">Telemetry</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Toolbox</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/toolbox/overview">CLI tools</a></li><li><a class="dropdown__link" href="/react/introduction">neokapi-i18n</a></li></ul></div><a class="navbar__item navbar__link" href="/framework/architecture">Framework</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link navbar-locale-icon"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_Lw9k"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/authoring-eval" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en">English</a></li><li><a href="/nb/authoring-eval" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="nb">Norsk (bokmål)</a></li><li><a href="/qps/authoring-eval" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="en">Þšéüđö Éñĝļîšĥ</a></li></ul></div><a href="https://github.com/neokapi/neokapi" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="toggle_IPLv colorModeToggle_KrYI"><button class="clean-btn toggleButton_hVnx toggleButtonDisabled_kmUe" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_FAva lightToggleIcon_frLN"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_FAva darkToggleIcon_fLy3"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_FAva systemToggleIcon_kwTI"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_R3Ot"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_Xz0H"><main style="max-width:1080px;margin:0 auto;padding:2rem 1rem 4rem"><h1 style="margin-bottom:.3rem">Authoring</h1><div style="display:flex;gap:.5rem;align-items:center;margin-bottom:.8rem"><span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">measured 4d ago</span><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">make authoring-eval</code></div><p style="font-size:1.05rem;line-height:1.6;max-width:68ch">Three questions about the authoring side, measured on one corpus: do the voice checks find the violations a profile declares, does an inferred profile recover the one the material was written from, and does the voice guide steer writing toward its profile rather than merely improving it.</p><section><h2 style="font-size:1.35rem;margin-top:2.6rem;margin-bottom:.4rem">The corpus</h2><div style="border-left:4px solid var(--ifm-color-warning);background:var(--ifm-color-warning-contrast-background);color:var(--ifm-color-warning-contrast-foreground);padding:.85rem 1.1rem;border-radius:0 6px 6px 0;margin-top:1rem;line-height:1.6"><strong>Synthesized, and disclosed in the data.</strong> <!-- -->Written for this eval. Two of the three measurements need ground truth no repository carries — a profile a person wrote from a known corpus, and prose whose every violation is marked — so the corpus was synthesized and the profile written first. What that costs is external validity: these numbers say whether the checks find what the profile declares, not how they behave on prose written by someone who has never read it.</div><div style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color);display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">documents</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">12</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">6<!-- --> written to the profile, <!-- -->6<!-- --> written against it</div></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">marked violations</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">18</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">1 declared · 4 pattern · 13 term</div></div></div><details style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><summary>The reference profile: what the on-profile half was written from, and what an inferred draft is compared against</summary><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.8rem">name: Harbourlight
description: Plain, direct voice for a port logistics tool
tone:
personality:
- plain
- direct
- calm
formality: neutral
emotion: neutral
humor: none
guidelines: Address the reader as you. State what to do next. No superlatives, no hedging.
style:
active_voice: true
sentence_length: short
person_pov: second
contractions: sometimes
prohibited_patterns:
- regex: '\b(?:is|are|was|were|be|been|being|may be|has been|have been)\s+\w+(?:ed|en)\b'
description: passive construction
severity: major
- regex: '(?i)\bit should be noted that\b'
description: hedged filler
severity: minor
vocabulary:
forbidden_terms:
- term: utilize
severity: major
forms: [utilizes, utilized, utilizing]
- term: leverage
severity: major
forms: [leverages, leveraged, leveraging]
- term: best-in-class
severity: major
- term: seamless
severity: major
forms: [seamlessly]
- term: revolutionary
severity: major
- term: game-changing
severity: major
</pre></details><details style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><summary>The contrast profile: the control for the steering measurement</summary><p style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">It wants the opposite on every axis the schema allows. Steering toward the reference should push a document away from this one; guidance that only says “write well” would raise both.</p><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">name: Meridian Compliance
description: Formal, impersonal register for regulatory filings
tone:
personality:
- formal
- measured
formality: formal
emotion: neutral
humor: none
guidelines: Maintain an impersonal register. Refer to the operator in the third person.
style:
active_voice: false
sentence_length: varied
person_pov: third
contractions: never
vocabulary:
forbidden_terms:
- term: you
severity: major
- term: we
severity: major
- term: let's
severity: major
</pre></details><details style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><summary>All <!-- -->12<!-- --> documents, with their marked violations</summary><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">berth-plan.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">nothing marked, so the right answer is silence</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Plan a berth
You book a berth before the vessel arrives. Open the berth plan and pick a
slot. The plan shows which quays are free for the window you need.
If two vessels want the same slot, the plan flags the clash. Move one of them
or shorten the stay. You can save a draft and come back to it.
Confirm the booking when the times are settled. Harbourlight tells the terminal
and the agent.
</pre></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">manifest.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">nothing marked, so the right answer is silence</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Read a manifest
Every call has one manifest. It lists what is on board, who owns it, and where
it goes next.
Open the manifest from the call view. Filter by consignee to find one shipment,
or by hazard class to find what needs special handling.
A manifest changes while the vessel is at sea. Harbourlight keeps each version,
so you can see what the crew declared and when.
</pre></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">arrivals.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">nothing marked, so the right answer is silence</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Track arrivals
The arrivals board shows every vessel due in the next seven days. It updates
when the vessel reports a new position.
Sort by estimated arrival to see what lands first. Pin a vessel to keep it at
the top while you work.
If an estimate moves by more than two hours, Harbourlight marks the row and
tells anyone who pinned it.
</pre></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">roles.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">nothing marked, so the right answer is silence</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Set up roles
Give each person the access their job needs and no more.
A planner books berths and edits plans. A clerk reads manifests and files
customs paperwork. A supervisor does both and can undo either.
Change a role from the team page. The change takes effect on the next sign-in.
</pre></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">customs.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">nothing marked, so the right answer is silence</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># File with customs
File before the vessel berths. Late filings hold the cargo on the quay.
Harbourlight builds the filing from the manifest. Check the consignee details
and the hazard codes, then submit.
Customs answers within the hour. If the filing is rejected, the reason appears
on the call view and the clerk who filed it is told.
</pre></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">alerts.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">nothing marked, so the right answer is silence</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Choose your alerts
You decide what Harbourlight tells you about.
Turn on arrival changes to hear when an estimate moves. Turn on clash alerts to
hear when two vessels want one berth. Turn on customs alerts to hear when a
filing is answered.
Alerts go to email by default. Add a phone number if you want them by text.
</pre></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">overview-marketing.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">5<!-- --> marked</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Harbourlight Overview
Harbourlight is a revolutionary port logistics platform that allows operators to
utilize a single pane of glass across every terminal touchpoint. Organizations
can leverage our best-in-class scheduling engine to deliver seamless berth
allocation at scale.
</pre><ul style="margin-top:.4rem;font-size:.85rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">revolutionary</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">utilize</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">leverage</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">best-in-class</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">seamless</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li></ul></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">release-notes.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">3<!-- --> marked</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Release Notes
This release introduces game-changing improvements to the manifest viewer,
allowing users to utilize filters that were previously unavailable.
Performance has been improved and the experience is now seamless.
</pre><ul style="margin-top:.4rem;font-size:.85rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">game-changing</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">utilize</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">seamless</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li></ul></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">onboarding-email.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">3<!-- --> marked</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Welcome
We are delighted to welcome you to Harbourlight, the best-in-class solution
trusted by leading operators worldwide.
Our team will reach out shortly to help you leverage the full breadth of the
platform's revolutionary capabilities.
</pre><ul style="margin-top:.4rem;font-size:.85rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">best-in-class</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">leverage</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">revolutionary</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li></ul></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">help-passive.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">3<!-- --> marked</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Berth Allocation
A berth may be allocated by a planner once the vessel's estimated arrival has
been confirmed by the agent. It should be noted that allocations which have
been submitted cannot subsequently be amended by users other than those to whom
supervisory permissions have been granted, and any such amendment will be
recorded in the audit trail that is maintained by the platform for the purpose
of subsequent review.
</pre><ul style="margin-top:.4rem;font-size:.85rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">may be allocated</code> · <!-- -->style.prohibited_patterns/passive<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">pattern</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">has been confirmed</code> · <!-- -->style.prohibited_patterns/passive<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">pattern</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">It should be noted that</code> · <!-- -->style.prohibited_patterns/hedge<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">pattern</span></li></ul></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">faq-thirdperson.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">1<!-- --> marked</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Frequently Asked Questions
How does the operator amend a filing?
The operator navigates to the call view, where the operator selects the filing
in question. The operator then submits an amendment, which the system routes to
customs on the operator's behalf.
</pre><ul style="margin-top:.4rem;font-size:.85rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">The operator</code> · <!-- -->style.person_pov<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">declared</span></li></ul></div><div style="margin-top:1rem"><div style="display:flex;gap:.5rem;align-items:center"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">status-page.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">3<!-- --> marked</span></div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto;margin-top:.4rem"># Status
Harbourlight utilizes a globally distributed infrastructure to deliver a
seamless experience.
Should degradation occur, remediation is initiated automatically and affected
parties are notified in due course.
</pre><ul style="margin-top:.4rem;font-size:.85rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">utilizes</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">seamless</code> · <!-- -->vocabulary.forbidden_terms<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">term</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is initiated</code> · <!-- -->style.prohibited_patterns/passive<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">pattern</span></li></ul></div></details></section><section><h2 style="font-size:1.35rem;margin-top:2.6rem;margin-bottom:.4rem">Do the voice checks find what the profile declares?</h2><p style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">Recall is measured over the documents written against the profile, where every violation is marked. False positives are measured over the documents written to it, where the right answer is silence. Neither half can substitute for the other: an off-profile document contains violations beyond the marked ones, so counting unmarked findings there would measure how complete the marking is rather than how good the check is.</p><div style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><div style="display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap"><strong>voice check (offline)</strong></div><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px;display:inline-block;margin-top:.4rem">kapi voice check --profile-file voice.yaml --json < <doc></code><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:1rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">recall over marked violations</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">94%</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">17<!-- --> of <!-- -->18<!-- --> found</div></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">false positives on clean prose</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">3</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">across <!-- -->3<!-- --> of <!-- -->6<!-- --> documents where the right answer is silence</div></div></div><div style="overflow-x:auto;margin-top:1rem"><table style="width:100%;border-collapse:collapse;font-size:.88rem"><thead><tr><th style="text-align:left">how the profile states the rule</th><th style="text-align:right;font-variant-numeric:tabular-nums">found</th><th style="text-align:right;font-variant-numeric:tabular-nums">marked</th><th style="text-align:right;font-variant-numeric:tabular-nums">recall</th></tr></thead><tbody><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">declared</code></td><td style="text-align:right;font-variant-numeric:tabular-nums">0</td><td style="text-align:right;font-variant-numeric:tabular-nums">1</td><td style="text-align:right;font-variant-numeric:tabular-nums"><span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">0%</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">pattern</code></td><td style="text-align:right;font-variant-numeric:tabular-nums">4</td><td style="text-align:right;font-variant-numeric:tabular-nums">4</td><td style="text-align:right;font-variant-numeric:tabular-nums"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">100%</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">term</code></td><td style="text-align:right;font-variant-numeric:tabular-nums">13</td><td style="text-align:right;font-variant-numeric:tabular-nums">13</td><td style="text-align:right;font-variant-numeric:tabular-nums"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">100%</span></td></tr></tbody></table></div><details style="margin-top:1rem"><summary>Every document, with what the check said about it</summary><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">berth-plan.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->95</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">are settled</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">manifest.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->100</span></div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.85rem">no findings</div></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">arrivals.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->100</span></div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.85rem">no findings</div></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">roles.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->100</span></div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.85rem">no findings</div></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">customs.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->95</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is rejected</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">alerts.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->95</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is answered</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">overview-marketing.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->75</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">utilize</code> · <!-- -->Forbidden term "utilize" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilize”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">leverage</code> · <!-- -->Forbidden term "leverage" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “leverage”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">best-in-class</code> · <!-- -->Forbidden term "best-in-class" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “best-in-class”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">seamless</code> · <!-- -->Forbidden term "seamless" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “seamless”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">revolutionary</code> · <!-- -->Forbidden term "revolutionary" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “revolutionary”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">release-notes.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->80</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">has been improved</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">utilize</code> · <!-- -->Forbidden term "utilize" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilize”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">seamless</code> · <!-- -->Forbidden term "seamless" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “seamless”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">game-changing</code> · <!-- -->Forbidden term "game-changing" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “game-changing”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">onboarding-email.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->80</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">are delighted</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">leverage</code> · <!-- -->Forbidden term "leverage" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “leverage”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">best-in-class</code> · <!-- -->Forbidden term "best-in-class" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “best-in-class”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">revolutionary</code> · <!-- -->Forbidden term "revolutionary" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “revolutionary”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">help-passive.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->59</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">may be allocated</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “may be allocated”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">been confirmed</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “has been confirmed”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">be noted</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “It should be noted that”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">been submitted</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">be amended</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">have been granted</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">be
recorded</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is maintained</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">It should be noted that</code> · <!-- -->Prohibited pattern: hedged filler<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “It should be noted that”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">faq-thirdperson.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->100</span><span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">1 missed</span></div><div style="font-size:.85rem;margin-top:.3rem">missed:<!-- --> <code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px;margin-right:.3rem">The operator</code></div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.85rem">no findings</div></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">status-page.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->80</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is initiated</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “is initiated”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">are notified</code> · <!-- -->Prohibited pattern: passive construction<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">utilizes</code> · <!-- -->Forbidden term "utilize" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilizes”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">seamless</code> · <!-- -->Forbidden term "seamless" found<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “seamless”</span></li></ul></div></details></div><div style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><div style="display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap"><strong>exec voice-check (claude-code:sonnet)</strong></div><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px;display:inline-block;margin-top:.4rem">kapi exec voice-check <doc> --profile-id harbourlight --provider claude-code --json</code><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:1rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">recall over marked violations</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">83%</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">15<!-- --> of <!-- -->18<!-- --> found</div></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">false positives on clean prose</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">28</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">across <!-- -->6<!-- --> of <!-- -->6<!-- --> documents where the right answer is silence</div></div></div><div style="overflow-x:auto;margin-top:1rem"><table style="width:100%;border-collapse:collapse;font-size:.88rem"><thead><tr><th style="text-align:left">how the profile states the rule</th><th style="text-align:right;font-variant-numeric:tabular-nums">found</th><th style="text-align:right;font-variant-numeric:tabular-nums">marked</th><th style="text-align:right;font-variant-numeric:tabular-nums">recall</th></tr></thead><tbody><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">declared</code></td><td style="text-align:right;font-variant-numeric:tabular-nums">1</td><td style="text-align:right;font-variant-numeric:tabular-nums">1</td><td style="text-align:right;font-variant-numeric:tabular-nums"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">100%</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">pattern</code></td><td style="text-align:right;font-variant-numeric:tabular-nums">3</td><td style="text-align:right;font-variant-numeric:tabular-nums">4</td><td style="text-align:right;font-variant-numeric:tabular-nums"><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">75%</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">term</code></td><td style="text-align:right;font-variant-numeric:tabular-nums">11</td><td style="text-align:right;font-variant-numeric:tabular-nums">13</td><td style="text-align:right;font-variant-numeric:tabular-nums"><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">85%</span></td></tr></tbody></table></div><details style="margin-top:1rem"><summary>Every document, with what the check said about it</summary><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">berth-plan.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->86</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The passage is built entirely on a nautical metaphor (berth, vessel, quay, plan) but never states what real feature or action it maps to. A reader can't tell if 'berth' means a calendar slot, a resource reservation, a queue position, or something else.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Harbourlight tells the terminal and the agent" is ambiguous: "tells" doesn't specify what is communicated (a confirmation? a status update? an error?), and "the terminal" and "the agent" are introduced without any prior reference, so a reader can't tell what these are or how they relate to the booking.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The text 'Plan a berth' is too short and ambiguous to evaluate meaningfully — it's unclear what 'berth' refers to (a bed, a parking/mooring spot, a job position, etc.) or what kind of plan is being requested.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->If this text is end-user facing, sustained metaphor in place of plain description conflicts with the preference for no mechanism jargon and plain, literal language in end-user docs.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Opening with a self-contained, aphorism-like analogy ('You book a berth before the vessel arrives') before any concrete instruction reads as a stock scene-setting device rather than direct guidance.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The two sentences sit side by side without a connective, jumping from an instruction ("Confirm the booking...") to an unrelated-sounding system statement ("Harbourlight tells..."), which reads as two disconnected fragments rather than one coherent instruction.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">manifest.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->86</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"call view" doesn't match the rest of the text's domain (manifest, consignee, hazard class are shipping/logistics terms, while "call view" reads as a telephony/CRM feature). It's unclear what UI element this refers to.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The passage is a fully extended nautical metaphor (manifest/vessel/crew/Harbourlight) with no plain-language anchor. A reader unfamiliar with the metaphor can't tell what actually changed, what 'Harbourlight' is, or what 'declared' means in product terms.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Call" and "manifest" are used without domain context, so a reader can't tell if this refers to a phone/sales call, an API call, a flight, or a shipment.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"consignee" and "hazard class" are specialized logistics terms used without context, which may confuse readers unfamiliar with shipping terminology.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The triadic list ("what is on board, who owns it, and where it goes next") plus the abstract pronoun subject "It" gives the passage a generic tagline/aphorism cadence rather than plain descriptive prose.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Copy leans on abstract, unexplained subjects ('A manifest changes', 'the crew declared') rather than a concrete actor and action — a pattern flagged elsewhere as an AI-writing tell.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The two filter options are phrased as parallel instructions ("Filter by X to find Y"), which reads clearly and consistently.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The nautical framing (vessel, crew, manifest) is consistent and not disparaging or off-brand, but it's a stylistic choice not grounded in any stated brand metaphor.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">arrivals.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->98</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Antecedent mismatch: 'every vessel' (distributive/plural sense) in the first sentence is referred back to as 'the vessel' (singular, definite) in the second sentence, which reads as if a single specific vessel was already introduced.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"what lands first" uses aviation/land terminology for a vessel (ship) context. Vessels arrive or dock; they don't "land".<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">roles.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->98</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Change a role from the team page" uses "from," which reads as removing something from the page rather than performing the action there.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"the next sign-in" doesn't say whose sign-in — the admin making the change or the user whose role changed.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">customs.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->94</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"File" has no explicit object — the reader must infer what document or form is being referred to (a customs declaration? a manifest?). Without surrounding context, the instruction is actionable-sounding but not actually actionable.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Check the consignee details and the hazard codes" doesn't specify what checking entails (verify for accuracy, compare against source documents, confirm completeness, etc.), which could leave the reader unsure what action to take.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->It's ambiguous whether 'the reason appears on the call view' and 'the clerk...is told' describe one notification mechanism or two separate ones (e.g., in-app display plus a separate alert/email).<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"File with customs" is ambiguous — it's unclear whether "customs" refers to user customizations/settings, customs duties/import declarations, or something else entirely.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The passage shifts voice mid-paragraph: the first sentence narrates what the system (Harbourlight) does in third person, then the second sentence switches to a direct imperative aimed at the reader. This inconsistency can make it unclear whether the text is describing the product or instructing the user.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->'the clerk who filed it is told' uses passive voice with a vague agent, leaving unclear who or what does the telling.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">alerts.md</code><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->96</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"what Harbourlight tells you about" is vague — it doesn't specify what kind of content or notifications are meant (topics? updates? alerts?).<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->'a filing is answered' is ambiguous — it doesn't say whether 'answered' means approved, rejected, or just acknowledged/received.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The sentence has the shape of a short, punchy aphorism (subject-decides-object tagline), which reads as generic marketing/AI-style phrasing rather than a concrete statement.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->All three sentences use the identical template 'Turn on [X] alerts to hear when [Y]', giving the passage a formulaic, listicle-like rhythm rather than natural prose.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">overview-marketing.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->88</span><span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">2 missed</span></div><div style="font-size:.85rem;margin-top:.3rem">missed:<!-- --> <code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px;margin-right:.3rem">best-in-class</code><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px;margin-right:.3rem">seamless</code></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Dense corporate jargon throughout: 'utilize', 'single pane of glass', 'leverage', 'best-in-class', 'seamless', 'at scale'. These are stock buzzwords that substitute for concrete meaning.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilize”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The copy leans on inflated marketing hyperbole ('revolutionary', 'best-in-class') rather than a grounded description of what the product does. This reads as generic promotional voice rather than a confident, substantive claim.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “revolutionary”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The text makes abstract claims ('every terminal touchpoint', 'berth allocation at scale') without saying concretely what the platform shows or does day to day.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->'Organizations can leverage our...' uses an abstract institutional subject rather than addressing the reader directly.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “leverage”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">release-notes.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->82</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Passive construction 'Performance has been improved' hides the actor and the specific change — no metric, benchmark, or concrete detail is given.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Game-changing" is marketing hype language, not the plain, concrete voice this project uses for release notes.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “game-changing”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->'the experience is now seamless' is an unsubstantiated marketing superlative — a vague, feel-good claim rather than a verifiable statement.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “seamless”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Allowing users to utilize filters that were previously unavailable" is an indirect, wordy way to say the filters are new.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilize”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Utilize" is corporate jargon where "use" says the same thing more plainly.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilize”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Abstract subjects ('Performance', 'the experience') with no concrete agent or object read as generic AI-generated phrasing rather than a specific engineering claim.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">onboarding-email.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->81</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Best-in-class solution trusted by leading operators worldwide" is an unverifiable superlative stack — a classic AI-generated marketing tell (abstract subject + hype claim with no supporting specifics).<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “best-in-class”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Opens with generic corporate-welcome effusiveness ("We are delighted to welcome you") that reads as templated marketing filler rather than a distinct voice.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"revolutionary capabilities" is unearned hype/marketing language rather than a concrete claim.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “revolutionary”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The sentence never states what Harbourlight actually does or the specific value the reader gets — it's pure positioning language with zero content.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The message doesn't specify what 'shortly' means or what action (if any) the reader should take.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Trusted by leading operators worldwide" is an unsubstantiated comparative/social-proof claim with no attribution or evidence.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"leverage the full breadth of" is vague corporate filler that adds no information.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “leverage”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">help-passive.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->84</span><span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">1 missed</span></div><div style="font-size:.85rem;margin-top:.3rem">missed:<!-- --> <code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px;margin-right:.3rem">has been confirmed</code></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The second sentence stacks multiple nested clauses ('allocations which have been submitted cannot subsequently be amended by users other than those to whom supervisory permissions have been granted'), forcing the reader to hold several negations and qualifiers at once.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The passage is written almost entirely in passive voice ('may be allocated by', 'has been confirmed by', 'cannot subsequently be amended by', 'will be recorded in'), which distances the actor from the action and reads as bureaucratic rather than direct.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “may be allocated”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Phrasing such as 'It should be noted that' and 'for the purpose of subsequent review' is legalistic filler that adds formality without adding information.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “It should be noted that”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The final clause ('the audit trail that is maintained by the platform') uses a wordy relative clause where a possessive or simple noun phrase would suffice.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">faq-thirdperson.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->96</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"the filing in question" is a filler phrase that adds no information beyond "the filing".<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"call view" is an unexplained term and its meaning isn't obvious from context (filing/amendment/customs suggests a case or claim workflow, not a call).<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"The operator" is repeated three times across two short sentences, which reads stilted and mechanical.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “The operator”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"on the operator's behalf" is a wordier, more formal construction than needed for a procedural description.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “The operator”</span></li></ul></div><div style="margin-top:.9rem"><div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">status-page.md</code><span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">off-profile</span><span style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">score <!-- -->77</span></div><ul style="font-size:.85rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Globally distributed infrastructure" and "seamless experience" are vague marketing abstractions that convey no concrete, verifiable claim about what Harbourlight actually does or delivers.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “seamless”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Key terms are undefined and abstract: 'degradation' (of what — latency, data, service?), 'remediation' (what action, specifically?), 'affected parties' (which users or systems?).<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Entirely passive voice with no actor: 'remediation is initiated', 'parties are notified'. No one is doing anything — the system reads as automated corporate boilerplate rather than a person describing behavior.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “is initiated”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->Formal, hedged, legalistic phrasing ('Should X occur...') reads as distant and evasive rather than direct — a hallmark of vague AI-generated or compliance-speak text.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->'In due course' gives no concrete timing, leaving the reader unable to know what to expect or when.<!-- --> <span style="fg:var(--ifm-color-emphasis-800);bg:var(--ifm-color-emphasis-200);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">not marked</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->"Utilizes" is inflated, formal filler for "uses."<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “utilizes”</span></li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px"></code> · <!-- -->The sentence reads as generic corporate boilerplate (abstract subject + stock phrase "seamless experience") rather than a specific, grounded statement.<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">on “seamless”</span></li></ul></div></details></div></section><section><h2 style="font-size:1.35rem;margin-top:2.6rem;margin-bottom:.4rem">Does an inferred profile recover the one the corpus was written from?</h2><p style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">The on-profile half was written from the reference profile, so recovery is checkable field by field rather than by asking a judge.</p><div style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">kapi exec voice-infer <on-profile docs> --provider claude-code --json</code><div style="margin-top:1rem"><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">fields recovered</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">56%</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">5<!-- --> of <!-- -->9<!-- -->, from <!-- -->6<!-- --> documents</div></div><div style="overflow-x:auto;margin-top:1rem"><table style="width:100%;border-collapse:collapse;font-size:.88rem"><thead><tr><th style="text-align:left">field</th><th style="text-align:left">reference</th><th style="text-align:left">draft</th></tr></thead><tbody><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">tone.formality</code> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">ok</span></td><td>neutral</td><td>neutral</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">tone.emotion</code> <span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">miss</span></td><td>neutral</td><td>calm and reassuring</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">tone.humor</code> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">ok</span></td><td>none</td><td>none</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">style.sentence_length</code> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">ok</span></td><td>short</td><td>short</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">style.person_pov</code> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">ok</span></td><td>second</td><td>second</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">style.contractions</code> <span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">miss</span></td><td>sometimes</td><td>never</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">style.active_voice</code> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">ok</span></td><td>true</td><td>true</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">tone.personality</code> <span style="fg:var(--ifm-color-warning-contrast-foreground);bg:var(--ifm-color-warning-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">33%</span></td><td>plain, direct, calm</td><td>direct, matter-of-fact, procedural, trustworthy</td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">vocabulary.forbidden_terms</code> <span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">miss</span></td><td>utilize, leverage, best-in-class, seamless, revolutionary, game-changing</td><td>—</td></tr></tbody></table></div><details style="margin-top:1rem"><summary>The draft, verbatim</summary><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">name: Harbourlight Draft
description: Draft voice profile inferred from a content corpus. Review and adjust before adopting.
tone:
personality:
- direct
- matter-of-fact
- procedural
- trustworthy
formality: neutral
emotion: calm and reassuring
humor: none
guidelines: 'Write like an operator explaining a workflow to a colleague on the dock: state what the system does, then what the user does, in that order. No enthusiasm, no hedging, no apology. Every section answers ''what happens'' and ''what do I do about it.'''
style:
active_voice: true
sentence_length: short
person_pov: second
contractions: never
prohibited_patterns:
- regex: \b(we|our|us)\b
description: Corpus never speaks as 'we' about the company; instructions address the reader directly as 'you' and the product as 'Harbourlight'
severity: minor
- regex: n't\b|'re\b|'ll\b|'ve\b|'d\b
description: No contractions appear anywhere in the corpus, even in otherwise casual instructional lines
severity: minor
- regex: —|--
description: No em dashes; the corpus breaks ideas into separate short sentences instead of joining them with a dash
severity: minor
vocabulary:
preferred_terms:
- term: vessel
replacement: vessel
note: Used consistently instead of 'ship' or 'boat' throughout every section
- term: clash
replacement: clash
note: Used for scheduling conflicts instead of 'conflict' or 'collision' ('the plan flags the clash')
- term: quay
replacement: quay
note: Used instead of 'dock' or 'wharf' for the physical berth location
examples:
- before: Users have the ability to filter the manifest by consignee in order to more easily locate a particular shipment of interest.
after: Filter by consignee to find one shipment.
explanation: Corpus favors short imperative sentences over nominalized, hedged phrasing ('Open the manifest from the call view. Filter by consignee to find one shipment.').
- before: In the event that two vessels are scheduled for the same berth slot, the system will automatically generate a scheduling conflict alert for the user's review.
after: If two vessels want the same slot, the plan flags the clash.
explanation: The corpus uses plain domain vocabulary ('clash', not 'scheduling conflict alert') and active voice with the system as subject ('the plan flags'), matching lines like 'the plan flags the clash. Move one of them or shorten the stay.'
- before: We've made it possible for you to customize which notifications you'd like to receive from us.
after: You decide what Harbourlight tells you about.
explanation: Corpus never uses 'we' or contractions; it addresses the reader as 'you' and names the product directly as the actor, as in 'Harbourlight tells the terminal and the agent.'</pre></details></div></section><section><h2 style="font-size:1.35rem;margin-top:2.6rem;margin-bottom:.4rem">Does the voice guide steer writing, or only improve it?</h2><p style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">Each brief is written twice by <!-- -->claude-code<!-- -->:<!-- -->sonnet<!-- -->, once with nothing and once with<!-- --> <code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">kapi voice guide</code> as the system turn. The user turn is identical. Both versions are scored against the profile the guide came from and against a profile that wants the opposite, because any competent writing guidance raises any reasonable score. The measurement is the difference between the two gains.</p><div style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color);display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">toward the profile the guide came from</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--ifm-color-success-contrast-foreground)">+5.8</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">90.8<!-- --> → <!-- -->96.7<!-- --> mean score</div></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">toward the profile it did not</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--ifm-color-danger-contrast-foreground)">-6.7</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">90.0<!-- --> → <!-- -->83.3<!-- --> mean score</div></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">effect</div><div style="font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1">+12.5</div><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6">the difference of the two, over <!-- -->6<!-- --> documents. Generic polish would move both gains the same way and land near zero.</div></div></div><div style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">what actually moved</div><p style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;margin-top:.4rem;margin-bottom:0">Counting the findings names the mechanism rather than leaving it to the reader. Against the reference profile the guided documents drew<!-- --> <strong>4</strong> findings where the bare ones drew <strong>11</strong>, and here is what they were:</p><ul style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;margin-top:.5rem;margin-bottom:0"><li><strong>11</strong> → <strong>4</strong> <!-- -->Prohibited pattern</li></ul><p style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;margin-top:.5rem;margin-bottom:0">A rule with no row produced no finding in either arm, so it contributed nothing to the gain. The contrast profile can only move on its three forbidden pronouns, so its loss is the shift to second person.</p></div><div style="overflow-x:auto;margin-top:1rem"><table style="width:100%;border-collapse:collapse;font-size:.88rem"><thead><tr><th style="text-align:left">brief</th><th style="text-align:right;font-variant-numeric:tabular-nums">reference</th><th style="text-align:right;font-variant-numeric:tabular-nums">contrast</th></tr></thead><tbody><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td style="max-width:42ch">Write a short help page, about 120 words, explaining how a port operator files cargo paperwork with customs before a vessel berths.</td><td style="text-align:right;font-variant-numeric:tabular-nums">85<!-- --> → <!-- -->100<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">+15.0</span></td><td style="text-align:right;font-variant-numeric:tabular-nums">100<!-- --> → <!-- -->90<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">-10.0</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td style="max-width:42ch">Write a short help page, about 120 words, explaining how a port operator resolves two vessels booked into the same berth at the same time.</td><td style="text-align:right;font-variant-numeric:tabular-nums">95<!-- --> → <!-- -->100<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">+5.0</span></td><td style="text-align:right;font-variant-numeric:tabular-nums">95<!-- --> → <!-- -->85<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">-10.0</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td style="max-width:42ch">Write a short release note, about 120 words, announcing that the arrivals board now updates when a vessel reports a new position.</td><td style="text-align:right;font-variant-numeric:tabular-nums">90<!-- --> → <!-- -->95<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">+5.0</span></td><td style="text-align:right;font-variant-numeric:tabular-nums">100<!-- --> → <!-- -->80<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">-20.0</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td style="max-width:42ch">Write a short help page, about 120 words, explaining how an administrator gives a new colleague the right level of access.</td><td style="text-align:right;font-variant-numeric:tabular-nums">100<!-- --> → <!-- -->95<!-- --> <span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">-5.0</span></td><td style="text-align:right;font-variant-numeric:tabular-nums">85<!-- --> → <!-- -->80<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">-5.0</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td style="max-width:42ch">Write a short onboarding email, about 120 words, to a port operator who has just been given an account.</td><td style="text-align:right;font-variant-numeric:tabular-nums">95<!-- --> → <!-- -->100<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">+5.0</span></td><td style="text-align:right;font-variant-numeric:tabular-nums">70<!-- --> → <!-- -->80<!-- --> <span style="fg:var(--ifm-color-danger-contrast-foreground);bg:var(--ifm-color-danger-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">+10.0</span></td></tr><tr style="border-top:1px solid var(--ifm-color-emphasis-200)"><td style="max-width:42ch">Write a short status-page entry, about 120 words, explaining that filings were delayed for two hours and have now caught up.</td><td style="text-align:right;font-variant-numeric:tabular-nums">80<!-- --> → <!-- -->90<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">+10.0</span></td><td style="text-align:right;font-variant-numeric:tabular-nums">90<!-- --> → <!-- -->85<!-- --> <span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">-5.0</span></td></tr></tbody></table></div><details style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><summary>The guide, verbatim. The whole measurement is about this string</summary><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Voice Guide: Harbourlight
Plain, direct voice for a port logistics tool
## Tone
- Personality: plain, direct, calm
- Formality: neutral
- Emotion: neutral
- Humor: none
- Guidelines: Address the reader as you. State what to do next. No superlatives, no hedging.
## Style Rules
- Use active voice
- Sentence length: short
- Point of view: second
- Contractions: sometimes
- Prohibited patterns:
- passive construction (severity: major)
- hedged filler (severity: minor)
## Vocabulary
### Forbidden Terms
- ~~utilize~~
- ~~leverage~~
- ~~best-in-class~~
- ~~seamless~~
- ~~revolutionary~~
- ~~game-changing~~</pre></details><details style="border:1px solid var(--ifm-color-emphasis-300);border-radius:8px;padding:1.1rem 1.3rem;margin-top:1rem;background:var(--ifm-background-surface-color)"><summary>Every brief, both versions side by side</summary><div style="margin-top:1.4rem"><div style="font-weight:600;font-size:.9rem">Write a short help page, about 120 words, explaining how a port operator files cargo paperwork with customs before a vessel berths.</div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:.5rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">bare, no guide</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Filing Cargo Paperwork Before Vessel Berthing
Port operators must submit cargo documentation to customs no later than 24 hours before a vessel's scheduled arrival. Begin by preparing the cargo manifest, listing all containers, bill of lading numbers, consignee details, and HS classification codes for each shipment.
Submit the manifest through the customs electronic filing portal, attaching supporting documents including the bill of lading, certificate of origin, and any required import permits. Verify that hazardous materials declarations are included where applicable.
Once submitted, customs will issue a filing reference number. Monitor the portal for clearance status or requests for additional information. Vessels will not be granted berthing clearance until the customs authority confirms that all cargo paperwork has been accepted and processed.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">are included</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">be granted</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">has been accepted</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">guided</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Filing Cargo Paperwork Before Berthing
You must submit cargo paperwork to customs before the vessel berths.
## Steps
1. Confirm the cargo manifest matches the bill of lading. Check quantities, weights, and consignee details.
2. Submit the manifest through the customs portal at least 24 hours before arrival. For vessels arriving within 24 hours of departure from the last port, submit as early as possible.
3. Attach supporting documents: certificate of origin, dangerous goods declaration (if applicable), and the vessel's arrival notice.
4. Wait for customs clearance confirmation. Do not schedule berthing until you receive it.
5. If customs flags a discrepancy, correct the manifest and resubmit. Berthing cannot proceed until the flag clears.
## Notes
Late submissions delay berthing. File as soon as the manifest is final. Keep a copy of the clearance confirmation for the vessel's records.</pre><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.82rem;margin-top:.3rem"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">no findings</span></div></div></div></div><div style="margin-top:1.4rem"><div style="font-weight:600;font-size:.9rem">Write a short help page, about 120 words, explaining how a port operator resolves two vessels booked into the same berth at the same time.</div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:.5rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">bare, no guide</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Resolving a Berth Double-Booking
When two vessels are booked into the same berth for overlapping windows, the system flags the conflict on the berth schedule and neither booking is auto-cancelled — you must resolve it manually.
**Steps:**
1. Open the **Berth Schedule** and locate the conflicting bookings (shown in red).
2. Check each vessel's ETA/ETD, draft, and priority class (e.g. scheduled liner service vs. ad hoc call).
3. Decide which vessel keeps the slot. Consider tidal windows, cargo urgency, and contractual priority.
4. Reassign the other vessel to an alternative berth, or adjust its time window if the same berth is available later.
5. Update the booking — the system will notify both vessel agents automatically.
6. Add a note to the booking record explaining the resolution, for audit purposes.
If no alternative berth or slot is available, escalate to the Harbour Master for a priority ruling.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">are booked</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">guided</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Resolving a Berth Double-Booking
Two vessels booked into the same berth at the same time create a conflict. Follow these steps to resolve it.
1. Open the berth schedule and confirm the overlap. Check both booking windows against the berth's actual availability.
2. Check each vessel's priority tier, arrival time, and cargo type. Use these to decide which vessel keeps the berth.
3. Contact the operator of the vessel you plan to move. Confirm the change before you touch the schedule.
4. Reassign the lower-priority vessel to an open berth, or shift its window earlier or later.
5. Update the schedule and notify both vessel operators, the pilot, and the tug crew.
6. Log the conflict and its resolution in the incident record.
If no alternate berth is available, escalate to the duty manager before you make a decision.</pre><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.82rem;margin-top:.3rem"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">no findings</span></div></div></div></div><div style="margin-top:1.4rem"><div style="font-weight:600;font-size:.9rem">Write a short release note, about 120 words, announcing that the arrivals board now updates when a vessel reports a new position.</div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:.5rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">bare, no guide</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">Vessel Positions Now Update the Arrivals Board in Real Time
The arrivals board now refreshes automatically whenever a vessel reports a new position. Previously, estimated arrival times only updated on a fixed schedule, which meant the board could lag behind a vessel's actual progress. Now, as soon as a new position report comes in, the corresponding arrival estimate is recalculated and reflected on the board immediately.
This means port operators, agents, and other stakeholders relying on the arrivals board always see the most current, accurate arrival estimates, without needing to manually refresh or cross-check against other sources. Delays, route changes, and speed adjustments are all picked up as they happen, reducing the gap between what a vessel is actually doing and what the board shows.
No configuration changes are required to take advantage of this update.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is recalculated</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">are required</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">guided</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">Arrivals board now updates automatically when a vessel reports a new position.
Previously, the board refreshed on a fixed schedule, so a position report could sit unreflected for several minutes. Now, each report updates the vessel's row as soon as it arrives. You'll see revised ETAs and status changes without reloading the page.
This applies to every vessel with an active voyage on the board. If a vessel goes quiet, its last known position stays visible with a timestamp, so you can tell how current the data is.
No setup is required. If you have the arrivals board open, changes appear in place. If you notice a gap between a report and the board, refresh the page and let your port contact know.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is required</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div></div></div><div style="margin-top:1.4rem"><div style="font-weight:600;font-size:.9rem">Write a short help page, about 120 words, explaining how an administrator gives a new colleague the right level of access.</div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:.5rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">bare, no guide</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Granting Access to a New Colleague
As an administrator, you control what a new colleague can see and do by assigning them a role when you add them to your organization.
**To grant access:**
1. Go to **Settings → Members** and select **Invite member**.
2. Enter their email address and choose a role:
- **Viewer** — can view content but not make changes.
- **Editor** — can create and edit content within assigned projects.
- **Admin** — full access, including managing members and billing.
3. Optionally, restrict access to specific projects or workspaces rather than the entire organization.
4. Send the invitation. Your colleague will receive an email to set up their account.
You can change a member's role or remove their access at any time from the Members page. Start with the least access needed, then expand it as their responsibilities grow.</pre><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.82rem;margin-top:.3rem"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">no findings</span></div></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">guided</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto"># Setting Access for a New Colleague
When you add a new colleague, choose the role that matches their job, not their seniority. Start with the lowest role that lets them do their work. You can raise it later.
**Roles**
- **Viewer** — reads content, runs no changes.
- **Editor** — creates and edits content in assigned projects.
- **Admin** — manages users, roles, and settings.
**Steps**
1. Open **Settings > Users**.
2. Click **Invite Colleague** and enter their email.
3. Assign a role and, if needed, limit it to specific projects.
4. Send the invite.
Your colleague gets an email with a link to set up their account. You can change their role or remove access at any time from the same page. Every change you make here is logged.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is logged</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div></div></div><div style="margin-top:1.4rem"><div style="font-weight:600;font-size:.9rem">Write a short onboarding email, about 120 words, to a port operator who has just been given an account.</div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:.5rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">bare, no guide</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">Subject: Welcome to Your Port Operator Account
Hi [Name],
Welcome aboard — your port operator account is now active and ready to use.
You can log in at [login URL] using the email address this was sent to. On your first sign-in, you'll be prompted to set a password and complete a brief profile setup.
Once logged in, you'll have access to your operational dashboard, scheduling tools, and reporting features tailored to your role. If you'd like a quick walkthrough, our onboarding guide is available at [help center link], and our support team is happy to schedule a short orientation call if useful.
If you run into any issues signing in or have questions about permissions, just reply to this email or reach out to [support contact].
Looking forward to working with you.
Best regards,
[Your Name]
[Title / Organization]</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">be prompted</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">guided</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">Subject: Your Harbourlight account is ready
Hi,
Your Harbourlight account is set up. You can now log in and start tracking vessel movements, berth schedules, and cargo status across your terminal.
Here's how to get started:
1. Log in with the credentials sent separately.
2. Set your terminal's default time zone in Settings.
3. Add your active berths and confirm their capacity limits.
4. Import your current vessel schedule, or enter it manually.
Once your berths and schedule are in place, you'll see live status updates on your dashboard. You can assign roles to other team members from the Admin panel.
If something doesn't look right, check the Help Center first. If you're still stuck, contact support and include your terminal ID.
Welcome aboard.
Harbourlight Team</pre><div style="color:var(--ifm-color-emphasis-700);max-width:70ch;line-height:1.6;font-size:.82rem;margin-top:.3rem"><span style="fg:var(--ifm-color-success-contrast-foreground);bg:var(--ifm-color-success-contrast-background);font-family:var(--ifm-font-family-monospace);font-size:.72rem;padding:.1rem .45rem;border-radius:4px;white-space:nowrap">no findings</span></div></div></div></div><div style="margin-top:1.4rem"><div style="font-weight:600;font-size:.9rem">Write a short status-page entry, about 120 words, explaining that filings were delayed for two hours and have now caught up.</div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1rem;margin-top:.5rem"><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">bare, no guide</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">**Filing Delays — Resolved**
Between approximately [start time] and [end time] UTC, filings submitted through our platform experienced processing delays of up to two hours. During this window, filings were accepted and queued normally but were not confirmed or transmitted to their destination as quickly as usual.
The underlying issue has been identified and resolved. All delayed filings have since been processed, and the queue has fully caught up to real-time processing as of [end time] UTC.
No filings were lost during this incident, and no further action is required from users. If you submitted a filing during the affected window and have not received confirmation, please check your filing history or contact support.
We apologize for the inconvenience and are reviewing safeguards to prevent recurrence.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">were accepted</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">has been identified</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">been processed</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is required</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div><div><div style="font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ifm-color-emphasis-600)">guided</div><pre style="font-family:var(--ifm-font-family-monospace);font-size:.78rem;line-height:1.55;white-space:pre-wrap;margin:0;padding:.7rem .85rem;background:var(--ifm-color-emphasis-100);border-radius:6px;overflow-x:auto">Filing Delay — Resolved
Between 14:00 and 16:00 UTC today, filings were delayed. Processing has caught up and all queued filings have now cleared.
**What happened**
Filings submitted during this window were held longer than usual before completing. No filings were lost. Each one processed once the backlog cleared.
**Current status**
All filings are up to date. New submissions are processing at normal speed.
**What you need to do**
No action is required. If you submitted a filing between 14:00 and 16:00 UTC and it still shows as pending, check its status now. Contact support if it hasn't updated within the next 30 minutes.
We're reviewing the cause of the delay and will share findings once the review is complete.</pre><ul style="font-size:.82rem;margin-top:.3rem"><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">were delayed</code> · <!-- -->Prohibited pattern: passive construction</li><li><code style="font-family:var(--ifm-font-family-monospace);font-size:.8rem;background:var(--ifm-color-emphasis-100);padding:.15rem .35rem;border-radius:4px">is required</code> · <!-- -->Prohibited pattern: passive construction</li></ul></div></div></div></details></section></main></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Documentation</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/kapi/get-started/quickstart">Get started</a></li><li class="footer__item"><a class="footer__link-item" href="/kapi/overview">Kapi</a></li><li class="footer__item"><a class="footer__link-item" href="/framework/architecture">Framework</a></li><li class="footer__item"><a class="footer__link-item" href="/kapi/cli">Kapi CLI</a></li><li class="footer__item"><a class="footer__link-item" href="/toolbox/overview">CLI tools</a></li><li class="footer__item"><a class="footer__link-item" href="/react/introduction">neokapi-i18n</a></li><li class="footer__item"><a class="footer__link-item" href="/reference">Reference</a></li><li class="footer__item"><a class="footer__link-item" href="/formats">Format Reference</a></li><li class="footer__item"><a class="footer__link-item" href="/evals">Tests & Evals</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/neokapi/neokapi" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_RkRR"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/neokapi/homebrew-tap" target="_blank" rel="noopener noreferrer" class="footer__link-item">Homebrew Tap<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_RkRR"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2026 neokapi contributors. Built with Docusaurus. · built 2026-08-31 21:08 UTC · 6413004</div></div></div></footer></div>
</body>
</html>