Add 3 public Korrespond documentation pages with AI hero images

- korrespond-about.php: marketing/hype page with hero image, features,
  3-step pipeline, screenshot gallery, dbn-legal-agent LLM spotlight,
  authority coverage grid, and CTA strip
- korrespond-guide.php: step-by-step user guide covering mode selection,
  recipient body presets, output types, tone, all form fields, clarify
  gate, output columns, and Refine pass
- korrespond-tech.php: technical showcase — Hard-RAG pipeline diagram,
  corpus stats, CITE:N verification system, fine-tuned model details,
  formal citation style guide, privacy section
- 5 UI screenshots + 3 AI-generated hero images in assets/images/korrespond/
- korrespond.php: add "About · User guide · How it works" inline links
- preview.php: add korrespond to localizedContent (en+no) and samples;
  render doc-page links in preview CTA section for korrespond slug
- tools.css: +600 lines .kdoc-* CSS (hero, features, pipeline, guide
  steps, tech diagrams, finetune block, privacy block, stat cards)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 12:49:38 +02:00
parent 28932297b3
commit 7c4b161f04
14 changed files with 1884 additions and 0 deletions
+71
View File
@@ -91,6 +91,18 @@ $localizedContent = [
'Per-slice document browser with source count and last-indexed date',
],
],
'korrespond' => [
'pitch' => 'Describe your situation — the authority, what happened, your goal — and Korrespond retrieves the applicable statutes from 220,000+ indexed legal passages, drafts a formal letter in Norwegian bokmål, verifies every § citation against what it actually retrieved, and returns the draft side-by-side with your working language. Optional second pass rewrites with court-ready formal citations (jf. forvaltningsloven § 17, Strand Lobben m.fl. mot Norge § 207) and a Rettskilder appendix.',
'features' => [
'3-pass pipeline: classify + gap-check → Hard-RAG draft + self-check → optional formal-citation refine',
'11 authority presets (Barnevernet, NAV, skole, Bufdir, Statsforvalter, Trygderetten…) each pre-loading the right statute set',
'Hard-RAG: every § citation verified against retrieved corpus — no fake references, ever',
'Always outputs Norwegian bokmål (canonical) + your working language (EN/PL/UK) side-by-side',
'Optional Refine pass: Norwegian statute style (jf. fvl § 17) or ECHR with full case name + paragraph',
'Powered by dbn-legal-agent — a QLoRA fine-tune on Norwegian child-welfare and administrative law',
],
],
],
'no' => [
@@ -164,6 +176,18 @@ $localizedContent = [
'Utsnittleser med dokumentantall og sist-indeksert-dato',
],
],
'korrespond' => [
'pitch' => 'Beskriv situasjonen — mottaker, hva som skjedde, og hva du vil oppnå — og Korrespond henter relevante lovbestemmelser fra over 220 000 indekserte juridiske passasjer, skriver et formelt brev på norsk bokmål, verifiserer alle §-henvisninger mot faktisk hentet materiale, og leverer utkastet side om side med ditt arbeidsspråk. Valgfri andreskanning gir rettssikre sitater (jf. forvaltningsloven § 17, Strand Lobben m.fl. mot Norge § 207) og et Rettskilder-vedlegg.',
'features' => [
'3-trinns pipeline: klassifiser + mangelsjekk → Hard-RAG-utkast + selvsjekk → valgfri sitatforbedring',
'11 mottakerforhåndsinnstillinger (Barnevernet, NAV, skole, Bufdir, Statsforvalter, Trygderetten…)',
'Hard-RAG: alle §-sitater verifisert mot hentet korpus — ingen falske referanser',
'Alltid norsk bokmål (kanonisk) + arbeidsspråket ditt (EN/PL/UK) side om side',
'Valgfri refinering: norsk lovstil (jf. fvl § 17) eller EMD med fullt saksnavn + avsnitt',
'Drevet av dbn-legal-agent — QLoRA-finjustert på norsk barnevernsrett og forvaltningsrett',
],
],
],
];
@@ -405,6 +429,44 @@ $samples = [
'p95 latency : 142 ms',
]),
],
'korrespond' => [
'scenario_label' => ($uiLang === 'no') ? 'Situasjonsbeskrivelse' : 'Situation',
'scenario' => ($uiLang === 'no')
? 'Mottaker: Barnevernet &mdash; Modus: Initier &mdash; Mål: Be om tilgang til saksdokumenter &mdash; Tone: Fast'
: 'Recipient: Barnevernet &mdash; Mode: Initiate &mdash; Goal: Request access to case documents &mdash; Tone: Firm',
'output_label' => ($uiLang === 'no') ? 'Utkast (norsk bokmål)' : 'Draft (Norwegian bokmål)',
'output' => implode("\n", [
'KORRESPOND — Formelt brev',
'Mottaker: Barnevernet · Modus: Initier · Ton: Fast',
'Hentede lovkilder: 4 passasjer (fvl, barnevernsloven)',
'',
'Til: [Barnevernstjenesten, kommunenavn]',
'Fra: [Navn]',
'Dato: 19. mai 2026',
'Ref.: [Saksnummer]',
'',
'Anmodning om innsyn i saksdokumenter',
'─────────────────────────────────────',
'Jeg ber herved om innsyn i alle saksdokumenter',
'tilknyttet min sak, jf. forvaltningsloven § 18.',
'',
'Som part i saken har jeg rett til å gjøre meg',
'kjent med alle dokumenter i saken, med mindre',
'særlige unntak etter fvl. §§ 18 a-e gjør seg',
'gjeldende. Jeg ber om at slikt unntak begrunnes',
'skriftlig, jf. fvl. § 24-25.',
'',
'Jeg ber om svar innen 5 virkedager.',
'',
'Med vennlig hilsen,',
'[Navn]',
'',
'─────────────────────────────────────',
'Siterte lovkilder: fvl. § 18 · fvl. § 24-25',
'Selvsjekk: mål oppfylt ✓ · frist nevnt ✓ · tone Fast ✓',
]),
],
];
$sample = $samples[$slug];
@@ -504,6 +566,15 @@ $sample = $samples[$slug];
<p class="lt-preview-cta__note"><?= htmlspecialchars(dbnToolsT('preview_free_note', $uiLang)) ?></p>
<a class="lt-preview-cta__btn" href="<?= htmlspecialchars($toolsLogin) ?>"><?= htmlspecialchars(dbnToolsT('preview_get_access', $uiLang)) ?> &rarr;</a>
<p class="lt-preview-cta__register"><a href="https://dobetternorge.no/register.php"><?= htmlspecialchars(dbnToolsT('preview_join', $uiLang)) ?></a></p>
<?php if ($slug === 'korrespond'): ?>
<div style="margin-top:1.5rem; padding-top:1.5rem; border-top:1px solid rgba(255,255,255,0.15); display:flex; gap:1rem; flex-wrap:wrap; justify-content:center;">
<a href="/korrespond-about.php" style="color:#fff; opacity:0.85; font-size:0.88rem; text-decoration:none; border-bottom:1px solid rgba(255,255,255,0.4); padding-bottom:2px;">About Korrespond</a>
<span style="color:rgba(255,255,255,0.4);">&middot;</span>
<a href="/korrespond-guide.php" style="color:#fff; opacity:0.85; font-size:0.88rem; text-decoration:none; border-bottom:1px solid rgba(255,255,255,0.4); padding-bottom:2px;">User guide</a>
<span style="color:rgba(255,255,255,0.4);">&middot;</span>
<a href="/korrespond-tech.php" style="color:#fff; opacity:0.85; font-size:0.88rem; text-decoration:none; border-bottom:1px solid rgba(255,255,255,0.4); padding-bottom:2px;">How it works</a>
</div>
<?php endif; ?>
</div>
<div class="lt-preview-cta__tools">
<p class="lt-preview-cta__tools-label"><?= htmlspecialchars(dbnToolsT('preview_other_tools', $uiLang)) ?></p>