portfolio-optimiser/docs/2026-08-13-demo-presentasjon.html
Kjell Tore Guttormsen 5871e397a3 docs: presentasjonsmateriellet fra demoen 2026-08-13
Frysen er opphevet — demoen er avholdt, og disse to filene er det den ble holdt
på. De lå utrackede med vilje gjennom hele frys-vinduet, så `git status --short
--untracked-files=no` kunne stå TOM som gate.

- `2026-08-13-demo-presentasjon.html` — slide-decket som ble vist, 51 slides i
  åtte deler, 15 håndskrevne tema-bevisste SVG-figurer, ingen eksterne
  avhengigheter. Alle tall er grunnet mot `tests/golden/demo-transcript.stdout`
  før de ble skrevet: 2 100 000 · 1 769 915 · 445 500 · 3 tidligere dommer.
- `2026-08-13-presentasjon-ledelse.html` — utdypende underlag med
  verifiseringslogg, der de to viktigste radene står TOMME med vilje
  (pilotkostnad ikke estimert, gevinst ikke målt).

Det ble INGEN live kjøring i møtet; golden-transkriptet er derfor det eneste
beviset decket viser, og all «dere ser om litt»-formulering er skrevet om til
et eksempel løsningen ER testet på.

Begge filer er innholdssjekket før publisering til den offentlige `open/`-flaten:
null treff på endepunkt/tenant/nøkkel-mønstre, null eksterne avhengigheter,
`<meta charset="utf-8">` på plass i begge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UkogKWsM489mCza1BLJdtW
2026-08-13 18:45:06 +02:00

1215 lines
82 KiB
HTML

<meta charset="utf-8">
<title>Systemet som sier nei til seg selv</title>
<style>
:root {
--ground: #F6F5F1; --surface: #FFFFFF; --surface-2: #EFEDE6;
--ink: #22272B; --muted: #5C6570; --line: #D9D6CC;
--accent: #C89B00; --accent-ink: #7A5F00; --steel: #35566F;
--ok-bg: #E3F0E7; --ok-fg: #1F5C38;
--warn-bg: #F6ECD4; --warn-fg: #7A5410;
--bad-bg: #F5E0DD; --bad-fg: #8C3128;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--ground: #15181B; --surface: #1D2126; --surface-2: #23282E;
--ink: #E9E7E1; --muted: #9AA3AC; --line: #343A41;
--accent: #E3B93F; --accent-ink: #E3B93F; --steel: #8FB4D2;
--ok-bg: #1E3327; --ok-fg: #8FCCA6;
--warn-bg: #38301A; --warn-fg: #E0BE6A;
--bad-bg: #3A2523; --bad-fg: #E09A92;
}
}
:root[data-theme="dark"] {
--ground: #15181B; --surface: #1D2126; --surface-2: #23282E;
--ink: #E9E7E1; --muted: #9AA3AC; --line: #343A41;
--accent: #E3B93F; --accent-ink: #E3B93F; --steel: #8FB4D2;
--ok-bg: #1E3327; --ok-fg: #8FCCA6;
--warn-bg: #38301A; --warn-fg: #E0BE6A;
--bad-bg: #3A2523; --bad-fg: #E09A92;
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body {
background: var(--ground); color: var(--ink);
font-family: Charter, "Bitstream Charter", Cambria, Georgia, serif;
margin: 0; overflow: hidden;
}
h1, h2, h3, .kicker, .btn, .counter, .lbl, .pill, .dl-no, .dl-q, ul.pts .n {
font-family: -apple-system, "Segoe UI", system-ui, "Helvetica Neue", Arial, sans-serif;
}
.slide {
display: none; position: absolute; inset: 0;
padding: clamp(30px, 4.4vw, 72px) clamp(28px, 7vw, 116px) clamp(56px, 7vh, 88px);
flex-direction: column; justify-content: center;
}
.slide.active { display: flex; }
.inner { width: 100%; max-width: 1060px; margin: 0 auto; }
.kicker {
font-size: clamp(0.68rem, 1vw, 0.8rem); font-weight: 650;
text-transform: uppercase; letter-spacing: 0.12em;
color: var(--accent-ink); margin-bottom: 16px;
}
h1 { font-size: clamp(2rem, 4.8vw, 3.5rem); font-weight: 650; letter-spacing: -0.02em; line-height: 1.09; margin: 0 0 22px; text-wrap: balance; }
h2 { font-size: clamp(1.5rem, 3.1vw, 2.35rem); font-weight: 650; letter-spacing: -0.015em; line-height: 1.18; margin: 0 0 18px; text-wrap: balance; max-width: 24ch; }
/* selvbaerende brodtekst - hver slide skal kunne leses alene */
.say {
font-size: clamp(1rem, 1.55vw, 1.24rem);
line-height: 1.6; max-width: 60ch; margin: 0 0 1rem;
}
.say.dim { color: var(--muted); }
.say strong { font-weight: 650; }
.say:last-child { margin-bottom: 0; }
.lead-sub { font-size: clamp(1.05rem, 1.8vw, 1.4rem); color: var(--muted); max-width: 44ch; line-height: 1.5; }
.pull {
border-left: 4px solid var(--accent); padding: 4px 0 4px 26px;
font-size: clamp(1.25rem, 2.4vw, 1.85rem); line-height: 1.32;
max-width: 27ch; text-wrap: balance; margin: 0 0 24px;
}
/* delskiller */
.divider .inner { display: grid; grid-template-columns: auto 1fr; gap: clamp(22px, 3.4vw, 46px); align-items: center; }
.dl-no {
font-size: clamp(3.4rem, 9vw, 7rem); font-weight: 700; line-height: 0.9;
color: var(--accent); font-variant-numeric: tabular-nums;
}
.divider h2 { margin-bottom: 12px; max-width: 20ch; }
.dl-q { font-size: clamp(1rem, 1.6vw, 1.25rem); color: var(--muted); max-width: 42ch; line-height: 1.5; }
ul.pts { list-style: none; padding: 0; margin: 6px 0 0; display: grid; gap: 15px; }
ul.pts li {
display: grid; grid-template-columns: 34px 1fr; gap: 16px; align-items: start;
font-size: clamp(0.98rem, 1.5vw, 1.18rem); line-height: 1.5; max-width: 62ch;
}
ul.pts .n {
font-weight: 700; color: var(--accent-ink);
border: 2px solid var(--accent); border-radius: 5px;
text-align: center; font-size: 0.82em; padding: 1px 0; line-height: 1.55;
}
code { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 0.88em;
background: var(--surface-2); border-radius: 3px; padding: 1px 5px; }
ul.pts .dim { display: block; color: var(--muted); font-size: 0.93em; margin-top: 3px; }
ul.pts .dim b { color: var(--ink); font-weight: 650; }
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(225px, 1fr)); gap: 16px; margin-top: 6px; }
.card { background: var(--surface); border: 1px solid var(--line); border-top: 3px solid var(--accent); padding: 20px 22px; }
.card .t { font-family: -apple-system, system-ui, sans-serif; font-weight: 650; font-size: clamp(0.98rem, 1.4vw, 1.1rem); display: block; margin-bottom: 7px; }
.card p { font-size: clamp(0.88rem, 1.2vw, 0.99rem); color: var(--muted); line-height: 1.5; margin: 0; }
.stat { display: grid; gap: 10px; margin-top: 4px; }
.stat-row { display: grid; grid-template-columns: 138px 1fr; gap: 18px; align-items: center;
background: var(--surface); border: 1px solid var(--line); padding: 12px 18px;
font-size: clamp(0.92rem, 1.32vw, 1.06rem); }
.pill { display: inline-block; border-radius: 999px; padding: 2px 13px; font-size: 0.79rem; font-weight: 650; white-space: nowrap; }
.pill.ok { background: var(--ok-bg); color: var(--ok-fg); }
.pill.warn { background: var(--warn-bg); color: var(--warn-fg); }
.pill.bad { background: var(--bad-bg); color: var(--bad-fg); }
.bars { display: grid; gap: 17px; margin: 4px 0; }
.bar-row .lbl { font-size: clamp(0.8rem, 1.1vw, 0.93rem); color: var(--muted); margin-bottom: 6px; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.bar-row .lbl b { color: var(--ink); font-weight: 650; }
.track { background: var(--surface-2); border: 1px solid var(--line); height: clamp(30px, 4.4vh, 44px); }
.fill { height: 100%; display: flex; align-items: center; padding-left: 15px;
font-family: -apple-system, system-ui, sans-serif; font-weight: 700;
font-size: clamp(0.9rem, 1.5vw, 1.18rem); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fill.rejected { background: var(--bad-bg); color: var(--bad-fg); }
.fill.limit { background: var(--warn-bg); color: var(--warn-fg); }
.fill.ok { background: var(--ok-bg); color: var(--ok-fg); }
.foot-note { color: var(--muted); font-size: clamp(0.82rem, 1.12vw, 0.96rem); margin-top: 20px; max-width: 62ch; line-height: 1.55; }
svg { display: block; max-width: 100%; height: auto; }
.fig { margin: 2px 0 14px; }
.svg-ink { fill: var(--ink); } .svg-muted { fill: var(--muted); } .svg-accent { fill: var(--accent-ink); }
.svg-box { fill: var(--surface); stroke: var(--line); stroke-width: 1.5; }
.svg-box-hi { fill: var(--surface-2); stroke: var(--accent); stroke-width: 2.5; }
.svg-line { stroke: var(--muted); stroke-width: 1.8; fill: none; }
.svg-line-hi { stroke: var(--accent); stroke-width: 2.5; fill: none; }
.svg-faint { fill: var(--surface); stroke: var(--line); stroke-width: 1.2; }
text { font-family: -apple-system, "Segoe UI", system-ui, sans-serif; }
.two { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(22px, 3.6vw, 52px); align-items: center; }
@media (max-width: 860px) {
.two { grid-template-columns: 1fr; }
.stat-row { grid-template-columns: 1fr; gap: 6px; }
.divider .inner { grid-template-columns: 1fr; gap: 10px; }
}
.bar-ui {
position: fixed; left: 0; right: 0; bottom: 0;
display: flex; align-items: center; justify-content: space-between;
padding: 9px clamp(16px, 3vw, 32px); gap: 16px;
border-top: 1px solid var(--line); background: var(--ground);
font-family: -apple-system, system-ui, sans-serif; font-size: 0.78rem; color: var(--muted);
}
.btn { background: var(--surface); border: 1px solid var(--line); color: var(--ink);
padding: 5px 13px; font-size: 0.8rem; cursor: pointer; border-radius: 4px; }
.btn:hover { border-color: var(--accent); }
.counter { font-variant-numeric: tabular-nums; letter-spacing: 0.03em; }
.where { font-weight: 600; color: var(--accent-ink); }
.progress { position: fixed; top: 0; left: 0; height: 3px; background: var(--accent); transition: width 0.18s ease; z-index: 5; }
@media print { .bar-ui, .progress { display: none; } }
</style>
<div class="progress" id="prog"></div>
<!-- ============ TITTEL ============ -->
<section class="slide" data-part="">
<div class="inner">
<div class="kicker">Kostnadsbesparelser i prosjektporteføljer</div>
<h1>Systemet som sier nei til seg selv</h1>
<p class="lead-sub">En maskin som leter etter besparelser i hvert enkelt prosjekt — og som ikke får lov til å godkjenne sine egne funn.</p>
<p class="foot-note">I dag bygger vi først opp hvorfor dette er vanskelig, så går vi gjennom hva systemet faktisk gjorde på et eksempel det er testet på — og til slutt spør vi dere om det er verdt å prøve på ekte tall.</p>
</div>
</section>
<!-- ============ DEL 1 ============ -->
<section class="slide divider" data-part="Del 1 · Situasjonen">
<div class="inner">
<div class="dl-no">1</div>
<div>
<h2>Situasjonen</h2>
<p class="dl-q">De fleste leter allerede etter besparelser inne i prosjektene sine. Hvorfor er det likevel så få som klarer å hente ut potensialet?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 1 · Situasjonen">
<div class="inner">
<div class="kicker">Del 1 · Situasjonen</div>
<h2>Vi har mange prosjekter som løper samtidig</h2>
<div class="fig">
<svg viewBox="0 0 900 150" role="img" aria-label="Mange prosjektbokser ved siden av hverandre, noen med skjulte besparelser i seg">
<g>
<rect class="svg-faint" x="10" y="30" width="94" height="86" rx="3"/>
<rect class="svg-faint" x="116" y="30" width="94" height="86" rx="3"/>
<rect class="svg-box-hi" x="222" y="30" width="94" height="86" rx="3"/>
<circle class="svg-accent" cx="269" cy="73" r="13"/>
<rect class="svg-faint" x="328" y="30" width="94" height="86" rx="3"/>
<rect class="svg-box-hi" x="434" y="30" width="94" height="86" rx="3"/>
<circle class="svg-accent" cx="481" cy="73" r="13"/>
<rect class="svg-faint" x="540" y="30" width="94" height="86" rx="3"/>
<rect class="svg-faint" x="646" y="30" width="94" height="86" rx="3"/>
<rect class="svg-box-hi" x="752" y="30" width="94" height="86" rx="3"/>
<circle class="svg-accent" cx="799" cy="73" r="13"/>
</g>
<text class="svg-muted" x="10" y="140" font-size="15">hvert prosjekt har sitt eget kostnadsoverslag — og noen av dem rommer en besparelse ingen har rukket å lete etter</text>
</svg>
</div>
<p class="say">Hvert prosjekt er vedtatt, budsjettert og i gang. Inne i hvert av dem finnes det valg som kunne vært tatt annerledes: en annen løsning, en annen dimensjonering, et tiltak som betaler seg selv.</p>
<p class="say">Vi snakker ikke om å kutte prosjekter. Vi snakker om å finne pengene som allerede ligger <strong>inne i</strong> dem — og i en stor portefølje er ikke det småpenger. Noen få prosent på tvers av mange prosjekter blir titalls millioner; i store porteføljer hundrevis av millioner, og i de aller største, milliarder.</p>
</div>
</section>
<section class="slide" data-part="Del 1 · Situasjonen">
<div class="inner">
<div class="kicker">Del 1 · Situasjonen</div>
<h2>Å lete krever fagfolk — og fagfolk rekker ikke alt</h2>
<div class="fig">
<svg viewBox="0 0 900 160" role="img" aria-label="En fagperson mot en lang rekke prosjekter">
<circle class="svg-box" cx="64" cy="72" r="30"/>
<circle class="svg-muted" cx="64" cy="62" r="11"/>
<path class="svg-muted" d="M42 94 a22 20 0 0 1 44 0 z"/>
<text class="svg-muted" x="30" y="132" font-size="15">én fagperson</text>
<path class="svg-line" d="M108 72 H 168" marker-end="url(#ar1)"/>
<g opacity="0.9">
<rect class="svg-faint" x="180" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="252" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="324" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="396" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="468" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="540" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="612" y="40" width="62" height="64" rx="3"/>
<rect class="svg-faint" x="684" y="40" width="62" height="64" rx="3"/>
</g>
<text class="svg-muted" x="770" y="78" font-size="30"></text>
<text class="svg-muted" x="180" y="132" font-size="15">en gjennomgang tar timer eller dager — per prosjekt</text>
<defs><marker id="ar1" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-muted"/></marker></defs>
</svg>
</div>
<p class="say">Å finne en besparelse inne i ett prosjekt er ikke magi — det er fagarbeid. Noen må sette seg inn i kostnadsoverslaget, kjenne alternativene og regne på om det lønner seg.</p>
<p class="say dim">Problemet er ikke at det er umulig — det gjøres allerede, i de prosjektene noen rekker å se på. Problemet er at det er <strong>tidkrevende, ressurskrevende og kompetansekrevende</strong> på én gang, og derfor ikke skalerer: de som kan faget godt nok til å gjøre det, har allerede full kalender.</p>
</div>
</section>
<section class="slide" data-part="Del 1 · Situasjonen">
<div class="inner">
<div class="kicker">Del 1 · Situasjonen</div>
<p class="pull">Spørsmålet vi stilte:<br>kan en maskin gjøre <strong>letearbeidet</strong>?</p>
<p class="say">Ikke ta beslutningene. Ikke erstatte fagvurderingen. Bare gå gjennom prosjekt etter prosjekt og legge fram kandidatene som er verdt et menneskes tid.</p>
<p class="say dim">Resten av presentasjonen handler om hvorfor det svaret er vanskeligere enn det høres ut — og hva vi gjorde med det.</p>
</div>
</section>
<section class="slide" data-part="Del 1 · Situasjonen">
<div class="inner">
<div class="kicker">Del 1 · Situasjonen</div>
<h2>Rollefordelingen vi endte på</h2>
<div class="fig">
<svg viewBox="0 0 900 156" role="img" aria-label="Fagfolk lager grunnlaget, maskinen leter, fagfolk dommer utfallet">
<rect x="16" y="34" width="212" height="84" rx="3" fill="var(--ok-bg)" stroke="var(--ok-fg)" stroke-width="2.5"/>
<text x="122" y="68" font-size="18" font-weight="650" text-anchor="middle" fill="var(--ok-fg)">Dere</text>
<text x="122" y="92" font-size="15" text-anchor="middle" fill="var(--ok-fg)">lager kunnskapsgrunnlaget</text>
<path class="svg-line" d="M234 76 H 312" marker-end="url(#ar4)"/>
<rect class="svg-box" x="318" y="34" width="248" height="84" rx="3"/>
<text class="svg-ink" x="442" y="68" font-size="18" font-weight="650" text-anchor="middle">Maskinen</text>
<text class="svg-muted" x="442" y="92" font-size="15" text-anchor="middle">leter og lager forslag</text>
<path class="svg-line" d="M572 76 H 650" marker-end="url(#ar4)"/>
<rect x="656" y="34" width="212" height="84" rx="3" fill="var(--ok-bg)" stroke="var(--ok-fg)" stroke-width="2.5"/>
<text x="762" y="68" font-size="18" font-weight="650" text-anchor="middle" fill="var(--ok-fg)">Dere</text>
<text x="762" y="92" font-size="15" text-anchor="middle" fill="var(--ok-fg)">dømmer utfallet</text>
<defs><marker id="ar4" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-muted"/></marker></defs>
</svg>
</div>
<p class="say">Mennesker i begge ender, maskinen i midten. <strong>Det er ikke dømmekraften som settes ut — det er letingen.</strong> Dere bestemmer hva som er godt fagstoff å bygge på, og dere bestemmer om resultatet holder.</p>
<p class="say dim">Behold denne figuren i bakhodet. Alt som kommer nå, er utdyping av de tre boksene.</p>
</div>
</section>
<section class="slide" data-part="Del 1 · Situasjonen">
<div class="inner">
<div class="kicker">Del 1 · Situasjonen</div>
<h2>Hele metoden på ett kart</h2>
<div class="fig">
<svg viewBox="0 0 900 268" role="img" aria-label="Atte steg paa rad, med baand som viser hvem som utfoerer hvert steg">
<rect x="6" y="14" width="328" height="34" rx="3" fill="var(--surface-2)" stroke="var(--line)" stroke-width="1.5"/>
<text class="svg-muted" x="170" y="36" font-size="14" font-weight="650" text-anchor="middle">KI-modellene arbeider</text>
<rect x="342" y="14" width="104" height="34" rx="3" fill="var(--warn-bg)" stroke="var(--accent)" stroke-width="2"/>
<text x="394" y="36" font-size="14" font-weight="650" text-anchor="middle" fill="var(--warn-fg)">Regnekoden</text>
<rect x="454" y="14" width="216" height="34" rx="3" fill="var(--surface-2)" stroke="var(--line)" stroke-width="1.5"/>
<text class="svg-muted" x="562" y="36" font-size="14" font-weight="650" text-anchor="middle">KI + regnekode</text>
<rect x="678" y="14" width="216" height="34" rx="3" fill="var(--ok-bg)" stroke="var(--ok-fg)" stroke-width="2"/>
<text x="786" y="36" font-size="14" font-weight="650" text-anchor="middle" fill="var(--ok-fg)">Fagpersonen</text>
<g font-size="13">
<rect class="svg-box" x="6" y="70" width="104" height="76" rx="3"/>
<text class="svg-accent" x="58" y="96" font-size="19" font-weight="700" text-anchor="middle">1</text>
<text class="svg-muted" x="58" y="122" text-anchor="middle">Les</text>
<text class="svg-muted" x="58" y="138" text-anchor="middle">grunnlaget</text>
<rect class="svg-box" x="118" y="70" width="104" height="76" rx="3"/>
<text class="svg-accent" x="170" y="96" font-size="19" font-weight="700" text-anchor="middle">2</text>
<text class="svg-muted" x="170" y="122" text-anchor="middle">Foreslå</text>
<text class="svg-muted" x="170" y="138" text-anchor="middle">tiltak</text>
<rect class="svg-box" x="230" y="70" width="104" height="76" rx="3"/>
<text class="svg-accent" x="282" y="96" font-size="19" font-weight="700" text-anchor="middle">3</text>
<text class="svg-muted" x="282" y="122" text-anchor="middle">Utfordre</text>
<text class="svg-muted" x="282" y="138" text-anchor="middle">begrunnelsen</text>
<rect x="342" y="70" width="104" height="76" rx="3" fill="var(--warn-bg)" stroke="var(--accent)" stroke-width="2.5"/>
<text x="394" y="96" font-size="19" font-weight="700" text-anchor="middle" fill="var(--warn-fg)">4</text>
<text x="394" y="122" text-anchor="middle" fill="var(--warn-fg)">Regn etter</text>
<text x="394" y="138" text-anchor="middle" fill="var(--warn-fg)">— blokkerer</text>
<rect class="svg-box" x="454" y="70" width="104" height="76" rx="3"/>
<text class="svg-accent" x="506" y="96" font-size="19" font-weight="700" text-anchor="middle">5</text>
<text class="svg-muted" x="506" y="122" text-anchor="middle">Forbedre</text>
<text class="svg-muted" x="506" y="138" text-anchor="middle">og prøv igjen</text>
<rect class="svg-box" x="566" y="70" width="104" height="76" rx="3"/>
<text class="svg-accent" x="618" y="96" font-size="19" font-weight="700" text-anchor="middle">6</text>
<text class="svg-muted" x="618" y="122" text-anchor="middle">Lever</text>
<text class="svg-muted" x="618" y="138" text-anchor="middle">utfallet</text>
<rect x="678" y="70" width="104" height="76" rx="3" fill="var(--ok-bg)" stroke="var(--ok-fg)" stroke-width="2.5"/>
<text x="730" y="96" font-size="19" font-weight="700" text-anchor="middle" fill="var(--ok-fg)">7</text>
<text x="730" y="122" text-anchor="middle" fill="var(--ok-fg)">Døm</text>
<text x="730" y="138" text-anchor="middle" fill="var(--ok-fg)">resultatet</text>
<rect x="790" y="70" width="104" height="76" rx="3" fill="var(--ok-bg)" stroke="var(--ok-fg)" stroke-width="2.5"/>
<text x="842" y="96" font-size="19" font-weight="700" text-anchor="middle" fill="var(--ok-fg)">8</text>
<text x="842" y="122" text-anchor="middle" fill="var(--ok-fg)">Lagre det</text>
<text x="842" y="138" text-anchor="middle" fill="var(--ok-fg)">godkjente</text>
</g>
<path class="svg-line-hi" d="M506 152 V 176 Q 506 192 486 192 H 190 Q 170 192 170 176 V 152" marker-end="url(#ar8)"/>
<text class="svg-accent" x="338" y="212" font-size="13" font-weight="650" text-anchor="middle">avvisningen sendes tilbake — begrenset antall forsøk</text>
<path class="svg-line-hi" d="M842 152 V 232 Q 842 250 820 250 H 80 Q 58 250 58 232 V 152" marker-end="url(#ar8)"/>
<text class="svg-accent" x="450" y="266" font-size="13" font-weight="650" text-anchor="middle">det fagpersonen godkjente blir grunnlag for neste kjøring</text>
<defs><marker id="ar8" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0 L8 4 L0 8 z" class="svg-accent"/></marker></defs>
</svg>
</div>
<p class="say">Grønt er der <strong>dere</strong> kommer inn. Gult er regnekoden som avgjør tallet. Resten er KI-modellene. Menneskene står i begge ender, og de to gule pilene er de eneste veiene noe går tilbake.</p>
<p class="say dim">Resten av presentasjonen er utdyping av dette kartet — hvorfor hvert steg er der, og hva som faller sammen hvis ett av dem tas bort.</p>
</div>
</section>
<!-- ============ DEL 2 ============ -->
<section class="slide divider" data-part="Del 2 · Hvorfor det er vanskelig">
<div class="inner">
<div class="dl-no">2</div>
<div>
<h2>Hvorfor det er vanskelig</h2>
<p class="dl-q">En språkmodell kan skrive et forslag på sekunder. Hvorfor er ikke saken løst der?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 2 · Hvorfor det er vanskelig">
<div class="inner">
<div class="kicker">Del 2 · Hvorfor det er vanskelig</div>
<h2>Det er lett å få et forslag som ser overbevisende ut</h2>
<div class="two">
<div>
<p class="say">Be en språkmodell finne besparelser i et prosjekt, og du får et velformulert notat på under et minutt. Argumentene henger sammen, språket er ryddig, kildene nevnes, og det står et tall nederst.</p>
<p class="say dim">Dette er den delen KI er god på. Det er også den delen som lurer folk.</p>
</div>
<div class="fig">
<svg viewBox="0 0 380 230" role="img" aria-label="Et pent notat med et stort tall nederst">
<rect class="svg-box" x="16" y="14" width="290" height="200" rx="3"/>
<rect class="svg-muted" x="46" y="46" width="200" height="9" rx="4" opacity="0.32"/>
<rect class="svg-muted" x="46" y="68" width="228" height="9" rx="4" opacity="0.32"/>
<rect class="svg-muted" x="46" y="90" width="176" height="9" rx="4" opacity="0.32"/>
<rect class="svg-muted" x="46" y="112" width="212" height="9" rx="4" opacity="0.32"/>
<text class="svg-ink" x="46" y="180" font-size="28" font-weight="700">2 100 000 kr</text>
</svg>
</div>
</div>
<p class="foot-note">Beløpet i eksempelet er lite — det gjelder ett anlegg. For en stor virksomhet er 2,1 millioner ingenting; det er summen over hele porteføljen som teller. Poenget her er ikke størrelsen på tallet, men at ingen har regnet etter.</p>
</div>
</section>
<section class="slide" data-part="Del 2 · Hvorfor det er vanskelig">
<div class="inner">
<div class="kicker">Del 2 · Hvorfor det er vanskelig</div>
<h2>Men et forslag om penger er verdiløst hvis ingen har regnet etter</h2>
<p class="say">Tallet i notatet er ikke beregnet — det er formulert. Modellen har skrevet det tallet som passer best i setningen, ikke det tallet som følger av prosjektets egne mengder og priser.</p>
<p class="say">Før noen tør å bruke det, må en fagperson uansett gå det etter i sømmene. <strong>Og da har vi flyttet arbeidet, ikke spart det</strong> — vi har byttet «lete selv» mot «kontrollere maskinens gjetning».</p>
</div>
</section>
<section class="slide" data-part="Del 2 · Hvorfor det er vanskelig">
<div class="inner">
<div class="kicker">Del 2 · Hvorfor det er vanskelig</div>
<p class="pull">Et velformulert feil tall er <strong>farligere</strong> enn ingen tall.</p>
<p class="say">Et rotete anslag blir stilt spørsmål ved. Et pent formulert anslag med kilder og forbehold glir gjennom møtet — og blir sittende i en presentasjon, i et budsjettgrunnlag, i en beslutning.</p>
<p class="say dim">Dette er kjernen i hvorfor KI stopper ved notatet i dag. Ikke fordi maskinen er dårlig til å foreslå, men fordi ingen kan skille de gode forslagene fra de overbevisende.</p>
</div>
</section>
<section class="slide" data-part="Del 2 · Hvorfor det er vanskelig">
<div class="inner">
<div class="kicker">Del 2 · Hvorfor det er vanskelig</div>
<h2>Og problem nummer to: fagvurderingen din forsvinner</h2>
<div class="fig">
<svg viewBox="0 0 900 150" role="img" aria-label="En fagvurdering gaar til e-post og referat, og maa gjentas neste gang">
<circle class="svg-box" cx="62" cy="66" r="29"/>
<circle class="svg-muted" cx="62" cy="56" r="10"/>
<path class="svg-muted" d="M41 86 a21 19 0 0 1 42 0 z"/>
<path class="svg-line" d="M104 66 H 196" marker-end="url(#ar2)"/>
<rect class="svg-box" x="204" y="36" width="164" height="60" rx="3"/>
<text class="svg-muted" x="228" y="63" font-size="16">e-post,</text>
<text class="svg-muted" x="228" y="84" font-size="16">møtereferat</text>
<path class="svg-line" d="M378 66 H 470" stroke-dasharray="6 8"/>
<text class="svg-muted" x="490" y="60" font-size="18" opacity="0.6">…blir liggende der</text>
<text class="svg-muted" x="490" y="90" font-size="18" opacity="0.6">…må sies på nytt neste gang</text>
<defs><marker id="ar2" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-muted"/></marker></defs>
</svg>
</div>
<p class="say">Når en erfaren fagperson sier «dette realiseres erfaringsvis ikke fullt ut i drift», er det verdifull kunnskap. Den blir stående i en e-post.</p>
<p class="say dim">Neste gang samme spørsmål dukker opp, i et annet prosjekt, må den samme personen si det samme på nytt. Kunnskapen finnes i organisasjonen — men den samler seg ikke noe sted en maskin kan bruke den.</p>
</div>
</section>
<!-- ============ DEL 3 ============ -->
<section class="slide divider" data-part="Del 3 · Grepet">
<div class="inner">
<div class="dl-no">3</div>
<div>
<h2>Grepet</h2>
<p class="dl-q">Hvis vi ikke kan stole på maskinens tall — hvordan kan vi likevel bruke maskinen?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 3 · Grepet">
<div class="inner">
<div class="kicker">Del 3 · Grepet</div>
<p class="pull">Maskinen får foreslå.<br>Den får ikke <strong>godkjenne seg selv</strong>.</p>
<p class="say">Hele systemet er bygget rundt den ene regelen. Forslaget kommer fra en språkmodell, men avgjørelsen om tallet holder, tas et helt annet sted — av noe som ikke kan overtales.</p>
<p class="say dim">De neste fire slidene viser hvordan det er satt opp.</p>
</div>
</section>
<section class="slide" data-part="Del 3 · Grepet">
<div class="inner">
<div class="kicker">Del 3 · Grepet</div>
<h2>Kontroll 1: en som leser begrunnelsen</h2>
<p class="say">Den første kontrollen er også en språkmodell, men med motsatt oppdrag: den skal <strong>angripe</strong> forslaget. Henger argumentet sammen? Er forutsetningene rimelige? Er noe utelatt som burde vært med?</p>
<p class="say">Dette er språkarbeid, og der er en språkmodell faktisk god. Den fanger dårlig resonnement.</p>
<p class="say dim">Men den kan ikke fange et tall som bare er feil. To modeller kan være hjertens enige om et regnestykke ingen av dem har gjort.</p>
</div>
</section>
<section class="slide" data-part="Del 3 · Grepet">
<div class="inner">
<div class="kicker">Del 3 · Grepet</div>
<h2>Kontroll 2: en som regner</h2>
<p class="say">Den andre kontrollen er ikke en modell i det hele tatt. Det er vanlig regnekode — den typen program som gir <strong>samme svar hver gang</strong>, som ikke kan overtales av en god formulering, og som ikke har noen mening om saken.</p>
<p class="say">Den tar prosjektets egne mengder og priser, regner ut hva som faktisk er oppnåelig, og sammenligner med det forslaget påstår.</p>
<p class="say dim">Den er obligatorisk. Den kan ikke skrus av, og det finnes ingen versjon av systemet der et forslag går utenom den.</p>
</div>
</section>
<section class="slide" data-part="Del 3 · Grepet">
<div class="inner">
<div class="kicker">Del 3 · Grepet</div>
<h2>«Taket» — og hva det ikke er</h2>
<p class="say">Taket er <strong>ikke</strong> en grense for hvor mye virksomheten kan spare, og ikke en budsjettbeslutning. Det er et regnestykke som gjøres <em>per forslag</em>, på nøyaktig de kostnadslinjene forslaget peker på: så mye er det i det hele tatt dekning for akkurat her.</p>
<div class="fig">
<svg viewBox="0 0 900 150" role="img" aria-label="En tallinje der alt over det oppnaaelige omraadet avvises">
<rect class="svg-box" x="20" y="46" width="620" height="42" rx="2"/>
<rect x="20" y="46" width="620" height="42" fill="var(--ok-bg)" opacity="0.55"/>
<rect x="646" y="46" width="234" height="42" fill="var(--bad-bg)" opacity="0.55"/>
<rect class="svg-box" x="646" y="46" width="234" height="42" rx="2" fill="none"/>
<path class="svg-line-hi" d="M643 30 V 104"/>
<text class="svg-ink" x="34" y="73" font-size="16" font-weight="650">det finnes dekning for på disse kostnadslinjene</text>
<text class="svg-ink" x="662" y="73" font-size="16" font-weight="650">ingen dekning</text>
<text class="svg-accent" x="643" y="122" font-size="15" font-weight="700" text-anchor="middle">taket</text>
<text class="svg-muted" x="20" y="26" font-size="14">0 kr</text>
</svg>
</div>
<ul class="pts">
<li><span class="n">1</span><span>Man kan ikke spare mer på en kostnadslinje enn det linjen faktisk koster i prosjektet.</span></li>
<li><span class="n">2</span><span>For en gitt tiltakstype lar bare en viss andel av linjen seg hente ut — resten sitter i noe tiltaket ikke rører.</span></li>
<li><span class="n">3</span><span>Der forutsetningene er usikre, regnes det med den forsiktige enden, ikke den optimistiske.</span></li>
</ul>
</div>
</section>
<section class="slide" data-part="Del 3 · Grepet">
<div class="inner">
<div class="kicker">Del 3 · Grepet</div>
<h2>De to kan være uenige — og da vinner den som regner</h2>
<div class="fig">
<svg viewBox="0 0 900 296" role="img" aria-label="Forslaget gaar til to kontroller. Bare linjen fra regnestykket er heltrukken fram til avgjorelsen.">
<rect class="svg-box" x="16" y="118" width="158" height="62" rx="3"/>
<text class="svg-ink" x="95" y="146" font-size="18" font-weight="650" text-anchor="middle">Forslaget</text>
<text class="svg-muted" x="95" y="167" font-size="14" text-anchor="middle">fra maskinen</text>
<path class="svg-line" d="M178 140 C 232 140, 232 62, 288 62"/>
<path class="svg-line" d="M178 160 C 232 160, 232 238, 288 238"/>
<rect class="svg-box" x="292" y="24" width="286" height="78" rx="3"/>
<text class="svg-ink" x="316" y="52" font-size="18" font-weight="650">Leser begrunnelsen</text>
<text class="svg-muted" x="316" y="77" font-size="15">sier: dette henger sammen</text>
<rect class="svg-box-hi" x="292" y="200" width="286" height="78" rx="3"/>
<text class="svg-ink" x="316" y="228" font-size="18" font-weight="650">Regner</text>
<text class="svg-muted" x="316" y="253" font-size="15">sier: tallet er for høyt</text>
<path class="svg-line" d="M582 62 C 636 62, 636 140, 686 140" stroke-dasharray="6 7"/>
<path class="svg-line-hi" d="M582 238 C 636 238, 636 160, 686 160"/>
<rect class="svg-box" x="692" y="118" width="164" height="62" rx="3"/>
<text class="svg-ink" x="774" y="146" font-size="18" font-weight="650" text-anchor="middle">Avvist</text>
<text class="svg-accent" x="774" y="167" font-size="14" text-anchor="middle" font-weight="650">regnestykket vinner</text>
</svg>
</div>
<p class="say">En godkjennelse fra språkmodellen er <strong>ikke nok</strong> til å slippe et tall gjennom. En avvisning fra regnestykket er <strong>nok</strong> til å stoppe det. Den stiplede linjen er den som ikke bærer.</p>
</div>
</section>
<section class="slide" data-part="Del 3 · Grepet">
<div class="inner">
<div class="kicker">Del 3 · Grepet</div>
<h2>Og før den regner: finnes kostnadslinjene i det hele tatt?</h2>
<div class="fig">
<svg viewBox="0 0 900 176" role="img" aria-label="To porter: forst sjekkes at linjene finnes i prosjektet, deretter beregnes belopet">
<rect class="svg-box" x="12" y="56" width="140" height="58" rx="3"/>
<text class="svg-ink" x="82" y="82" font-size="17" font-weight="650" text-anchor="middle">Forslaget</text>
<text class="svg-muted" x="82" y="102" font-size="14" text-anchor="middle">med kostnadslinjer</text>
<path class="svg-line" d="M156 85 H 214" marker-end="url(#ar3)"/>
<rect class="svg-box-hi" x="220" y="34" width="248" height="102" rx="3"/>
<text class="svg-accent" x="244" y="62" font-size="13" font-weight="700" letter-spacing="1.2">PORT 1</text>
<text class="svg-ink" x="244" y="89" font-size="17" font-weight="650">Finnes linjene?</text>
<text class="svg-muted" x="244" y="114" font-size="14">stemmer mengde og pris</text>
<path class="svg-line" d="M472 85 H 530" marker-end="url(#ar3)"/>
<rect class="svg-box-hi" x="536" y="34" width="248" height="102" rx="3"/>
<text class="svg-accent" x="560" y="62" font-size="13" font-weight="700" letter-spacing="1.2">PORT 2</text>
<text class="svg-ink" x="560" y="89" font-size="17" font-weight="650">Holder beløpet?</text>
<text class="svg-muted" x="560" y="114" font-size="14">selve beregningen</text>
<path class="svg-line" d="M344 144 V 166"/>
<text class="svg-muted" x="358" y="164" font-size="14">oppdiktet linje stoppes her</text>
<defs><marker id="ar3" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-muted"/></marker></defs>
</svg>
</div>
<p class="say">Modeller kan finne på ting. Derfor sjekkes det <strong>først</strong> at kostnadslinjene forslaget viser til faktisk står i prosjektets eget overslag, med riktige mengder og priser. Består det ikke den porten, blir det aldri regnet på.</p>
<p class="say dim">Og systemet retter aldri opp et tall som ikke stemmer. Det avviser. En maskin som «justerer» tall til noe som passer, ville gjort hele kontrollen verdiløs.</p>
</div>
</section>
<!-- ============ DEL 4 · GRUNNLAGET ============ -->
<section class="slide divider" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="dl-no">4</div>
<div>
<h2>Grunnlaget maskinen leser</h2>
<p class="dl-q">Kontrollen regner. Men hva vet maskinen om prosjektet i utgangspunktet — og hvem bestemmer det?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Hver kjøring starter i en kunnskapsbase</h2>
<div class="fig">
<svg viewBox="0 0 900 286" role="img" aria-label="En innholdsfortegnelse som peker til fem dokumenttyper, som igjen lenker til hverandre, over et felt av mange flere dokumenter">
<rect class="svg-box-hi" x="336" y="2" width="228" height="46" rx="3"/>
<text class="svg-ink" x="450" y="24" font-size="16" font-weight="650" text-anchor="middle">index.md</text>
<text class="svg-muted" x="450" y="40" font-size="12.5" text-anchor="middle">maskinen starter her</text>
<path class="svg-line-hi" d="M450 50 C 450 74, 88 72, 88 96" marker-end="url(#arW)"/>
<path class="svg-line-hi" d="M450 50 C 450 74, 269 72, 269 96" marker-end="url(#arW)"/>
<path class="svg-line-hi" d="M450 50 V 96" marker-end="url(#arW)"/>
<path class="svg-line-hi" d="M450 50 C 450 74, 631 72, 631 96" marker-end="url(#arW)"/>
<path class="svg-line-hi" d="M450 50 C 450 74, 812 72, 812 96" marker-end="url(#arW)"/>
<g font-size="12">
<rect class="svg-box" x="6" y="100" width="164" height="72" rx="3"/>
<text class="svg-ink" x="88" y="124" font-size="13.5" font-weight="650" text-anchor="middle">Prosjektet</text>
<text class="svg-muted" x="88" y="144" text-anchor="middle">anlegget, omfanget</text>
<text class="svg-muted" x="88" y="160" text-anchor="middle">og kostnadstallene</text>
<rect class="svg-box" x="187" y="100" width="164" height="72" rx="3"/>
<text class="svg-ink" x="269" y="124" font-size="13.5" font-weight="650" text-anchor="middle">Tiltakstyper</text>
<text class="svg-muted" x="269" y="144" text-anchor="middle">hva som typisk er</text>
<text class="svg-muted" x="269" y="160" text-anchor="middle">mulig for denne typen</text>
<rect class="svg-box" x="368" y="100" width="164" height="72" rx="3"/>
<text class="svg-ink" x="450" y="124" font-size="13.5" font-weight="650" text-anchor="middle">Erfaring</text>
<text class="svg-muted" x="450" y="144" text-anchor="middle">tidligere besparelser</text>
<text class="svg-muted" x="450" y="160" text-anchor="middle">og fagvurderinger</text>
<rect class="svg-box" x="549" y="100" width="164" height="72" rx="3"/>
<text class="svg-ink" x="631" y="124" font-size="13.5" font-weight="650" text-anchor="middle">Fagkilder</text>
<text class="svg-muted" x="631" y="144" text-anchor="middle">håndbøker, normaler,</text>
<text class="svg-muted" x="631" y="160" text-anchor="middle">målte erfaringstall</text>
<rect class="svg-box" x="730" y="100" width="164" height="72" rx="3"/>
<text class="svg-ink" x="812" y="124" font-size="13.5" font-weight="650" text-anchor="middle">Metode</text>
<text class="svg-muted" x="812" y="144" text-anchor="middle">hvordan besparelsen</text>
<text class="svg-muted" x="812" y="160" text-anchor="middle">måles og etterprøves</text>
</g>
<path class="svg-line" d="M240 174 C 240 200, 120 200, 120 176" marker-end="url(#arWm)"/>
<path class="svg-line" d="M490 174 C 490 200, 610 200, 610 176" marker-end="url(#arWm)"/>
<path class="svg-line" d="M780 174 C 780 224, 410 224, 410 178" marker-end="url(#arWm)"/>
<text class="svg-muted" x="450" y="240" font-size="14" text-anchor="middle">dokumentene lenker til hverandre — maskinen følger lenkene videre</text>
<rect class="svg-faint" x="46" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="68" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="90" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="112" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="134" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="156" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="178" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="200" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="222" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="244" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="266" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="288" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="310" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="332" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="354" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="376" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="398" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="420" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="442" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="464" y="252" width="16" height="16" rx="2" opacity="0.85"/>
<rect class="svg-faint" x="486" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="508" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="530" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="552" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="574" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="596" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="618" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="640" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="662" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="684" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="706" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="728" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="750" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<rect class="svg-faint" x="772" y="252" width="16" height="16" rx="2" opacity="0.5"/>
<text class="svg-muted" x="800" y="266" font-size="18"></text>
<text class="svg-accent" x="450" y="282" font-size="14" font-weight="650" text-anchor="middle">en fagbase kan romme hundrevis — i noen tilfeller tusenvis — av slike dokumenter</text>
<defs>
<marker id="arW" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0 L8 4 L0 8 z" class="svg-accent"/></marker>
<marker id="arWm" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0 L8 4 L0 8 z" class="svg-muted"/></marker>
</defs>
</svg>
</div>
<p class="say">En kunnskapsbase er <strong>en wiki av vanlige tekstdokumenter</strong> som lenker til hverandre — og den handler om langt mer enn tall: hva prosjektet består av, hvilke forbedringer som typisk er mulige for denne prosjekttypen, hva som er spart før, hvilket fagstoff som gjelder, og hvordan en besparelse skal måles.</p>
<p class="say dim">Den krever ikke et eget system — den er nærmere en ryddig fagbok, redigerbar i en helt vanlig teksteditor. Eksempelet vårt har fem dokumenter; en ekte fagbase for et helt fagområde har langt flere.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Maskinen navigerer i den — den søker ikke</h2>
<p class="say">De fleste KI-verktøy klipper dokumenter i biter og henter de bitene som ligner mest på spørsmålet. Da får du tekstfragmenter uten sammenheng, og modellen fyller hullene selv.</p>
<p class="say">Her gjør systemet i stedet det et menneske ville gjort: <strong>begynner i innholdsfortegnelsen, åpner det som er relevant, og følger henvisningene videre.</strong> Den ser hvilket dokument som er kilden til hva, og i hvilken rekkefølge ting hører sammen.</p>
<p class="say dim">Forskjellen merkes i kvaliteten på forslagene — og i at man kan spore hvor et resonnement kom fra. Med hundrevis av dokumenter i basen er det dessuten det eneste som er praktisk mulig: ingen leser alt, verken folk eller maskiner.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Eksempelet løsningen er testet på</h2>
<p class="say">Kunnskapsbasen vi har kjørt metoden mot handler om veglys på en fylkesvei, og består av fem dokumenter:</p>
<ul class="pts">
<li><span class="n">1</span><span><strong>Prosjektet selv</strong> — hva anlegget består av, og kostnadsoverslaget kontrollen regner mot.</span></li>
<li><span class="n">2</span><span><strong>To aktuelle tiltakstyper</strong> — utskifting til LED, og adaptiv styring.</span></li>
<li><span class="n">3</span><span><strong>En fagkilde om realiseringsgrad</strong> — hvor mye av en beregnet besparelse som faktisk oppnås i drift.</span></li>
<li><span class="n">4</span><span><strong>En beregningsmetode</strong> — hvordan besparelsen skal måles og etterprøves.</span></li>
</ul>
<p class="foot-note">Tallene er hentet fra fagkilder som Håndbok V124 og NMFV — ikke fra demo-manuset. Det står skrevet i kjøringens egen utskrift, nettopp fordi det er en påstand som skal kunne etterprøves.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<p class="pull">Kvaliteten på kunnskapsbasen setter taket for kvaliteten på forslagene.</p>
<p class="say">Dette er det viktigste å ta med seg fra hele presentasjonen. Kontrollen hindrer at et galt <em>tall</em> slipper gjennom — men den kan ikke få maskinen til å foreslå et klokt <em>tiltak</em> hvis grunnlaget er tynt, utdatert eller mangler det som betyr noe i faget.</p>
<p class="say"><strong>Å bygge en god kunnskapsbase er fagarbeid, og det er dere som kan det.</strong> Det er også den delen av dette som ikke kan settes bort — verken til en leverandør eller til en modell.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Levende kilder: systemet kan slå opp underveis</h2>
<div class="fig">
<svg viewBox="0 0 900 196" role="img" aria-label="Maskinen kan kobles til eksterne fagsystemer og dokumentarkiver via navngitte koblinger">
<rect class="svg-box" x="16" y="54" width="196" height="70" rx="3"/>
<text class="svg-ink" x="114" y="84" font-size="17" font-weight="650" text-anchor="middle">Maskinen</text>
<text class="svg-muted" x="114" y="105" font-size="14" text-anchor="middle">mens den vurderer</text>
<path class="svg-line-hi" d="M212 72 C 258 72, 258 26, 306 26"/>
<path class="svg-line-hi" d="M212 82 C 258 82, 258 72, 306 72"/>
<path class="svg-line-hi" d="M212 92 C 258 92, 258 118, 306 118"/>
<path class="svg-line-hi" d="M212 102 C 258 102, 258 164, 306 164"/>
<rect class="svg-box" x="310" y="6" width="316" height="40" rx="3"/>
<text class="svg-muted" x="328" y="32" font-size="14">prisdatabaser og produktdata</text>
<rect class="svg-box" x="310" y="52" width="316" height="40" rx="3"/>
<text class="svg-muted" x="328" y="78" font-size="14">måledata fra driftssystemer</text>
<rect class="svg-box" x="310" y="98" width="316" height="40" rx="3"/>
<text class="svg-muted" x="328" y="124" font-size="14">anleggs- og prosjektregistre</text>
<rect class="svg-box" x="310" y="144" width="316" height="40" rx="3"/>
<text class="svg-muted" x="328" y="170" font-size="14">dokumentarkiv og tidligere saker</text>
<text class="svg-accent" x="646" y="86" font-size="15" font-weight="650">hver kobling må være</text>
<text class="svg-accent" x="646" y="108" font-size="15" font-weight="650">navngitt og tillatt</text>
</svg>
</div>
<p class="say">Ved siden av kunnskapsbasen kan systemet kobles til fagsystemer det kan spørre mens det jobber — ikke bare tall som priser og målt forbruk, men også anleggs- og prosjektregistre og dokumentarkiver med tidligere vurderinger. Koblingen bruker en åpen standard som stadig flere systemer støtter (<em>MCP</em>).</p>
<p class="say dim">Uten oppsett gjøres ingen slike oppslag i det hele tatt. Det er ikke en innstilling man glemmer å skru av — det er utgangspunktet.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Ingenting kobles på i det stille</h2>
<ul class="pts">
<li><span class="n">1</span><span><strong>Det må stå på en liste.</strong> Systemet kan bare bruke kilder som er uttrykkelig tillatt. En tom liste betyr ingen tilgang — ikke fri tilgang.</span></li>
<li><span class="n">2</span><span><strong>Det sies høyt før første oppslag.</strong> Hvert system og hver type spørring blir navngitt i kjøringens egen logg før den brukes, så ingen datatrafikk skjer udeklarert.</span></li>
<li><span class="n">3</span><span><strong>Det finnes en tørrkjøring.</strong> Man kan kjøre hele oppsettet uten at én eneste ekstern forbindelse åpnes, for å se hva som <em>ville</em> blitt brukt.</span></li>
</ul>
<p class="foot-note">Dette er tekniske forutsetninger, ikke en personvernvurdering. Den som tar systemet i bruk, eier fortsatt sin egen risiko- og personvernvurdering — rammeverket gir bare grunnlaget for å kunne gjøre den.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Ett prosjekt trekker på flere kunnskapsbaser</h2>
<div class="fig">
<svg viewBox="0 0 900 224" role="img" aria-label="Generelle fagbaser for prosjekttyper, pluss en prosjektspesifikk base, mates inn i kjoringen">
<text class="svg-accent" x="16" y="22" font-size="13" font-weight="700" letter-spacing="1.1">GENERELLE FAGBASER — GJENBRUKES AV ALLE PROSJEKTER AV SAMME TYPE</text>
<rect class="svg-box" x="16" y="34" width="272" height="52" rx="3"/>
<text class="svg-ink" x="36" y="56" font-size="15" font-weight="650">Vegprosjekter</text>
<text class="svg-muted" x="36" y="76" font-size="13">håndbøker, normaler, erfaringstall</text>
<rect class="svg-box" x="300" y="34" width="272" height="52" rx="3"/>
<text class="svg-ink" x="320" y="56" font-size="15" font-weight="650">Bruprosjekter</text>
<text class="svg-muted" x="320" y="76" font-size="13">eget fagstoff, egne metoder</text>
<rect class="svg-box" x="584" y="34" width="272" height="52" rx="3"/>
<text class="svg-ink" x="604" y="56" font-size="15" font-weight="650">Tunnelprosjekter</text>
<text class="svg-muted" x="604" y="76" font-size="13">eget fagstoff, egne metoder</text>
<path class="svg-line" d="M152 90 C 152 118, 300 112, 356 130" marker-end="url(#arK)"/>
<text class="svg-accent" x="16" y="150" font-size="13" font-weight="700" letter-spacing="1.1">PROSJEKTSPESIFIKK</text>
<rect class="svg-box-hi" x="16" y="160" width="272" height="52" rx="3"/>
<text class="svg-ink" x="36" y="182" font-size="15" font-weight="650">Dette anlegget</text>
<text class="svg-muted" x="36" y="202" font-size="13">mengder, priser, lokale forhold</text>
<path class="svg-line-hi" d="M292 186 H 352" marker-end="url(#arKh)"/>
<rect class="svg-box-hi" x="360" y="128" width="290" height="84" rx="3"/>
<text class="svg-ink" x="505" y="164" font-size="17" font-weight="650" text-anchor="middle">Kjøringen for</text>
<text class="svg-ink" x="505" y="188" font-size="17" font-weight="650" text-anchor="middle">dette prosjektet</text>
<text class="svg-muted" x="672" y="164" font-size="14">én generell base</text>
<text class="svg-muted" x="672" y="188" font-size="14">+ én prosjektbase</text>
<defs>
<marker id="arK" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0 L8 4 L0 8 z" class="svg-muted"/></marker>
<marker id="arKh" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0 L8 4 L0 8 z" class="svg-accent"/></marker>
</defs>
</svg>
</div>
<p class="say">Fagstoffet som gjelder <em>alle</em> vegprosjekter skrives én gang og gjenbrukes. Det som er spesielt for anlegget — mengder, priser, lokale forhold — bor i prosjektets egen base.</p>
<p class="say dim">Det betyr at arbeidet med å bygge fagbasene betaler seg ned over mange prosjekter, mens jobben per nytt prosjekt blir liten.</p>
</div>
</section>
<section class="slide" data-part="Del 4 · Grunnlaget">
<div class="inner">
<div class="kicker">Del 4 · Grunnlaget</div>
<h2>Beslutningene som må tas — per prosjekt</h2>
<p class="say">Dette er ikke ett oppsett for hele etaten. Hvert prosjekt, eller hver prosjekttype, trenger sine egne valg — og de valgene er faglige, ikke tekniske:</p>
<ul class="pts">
<li><span class="n">1</span><span><strong>Hvilke kunnskapsbaser gjelder?</strong> Hvilken generell fagbase, og hva må skrives spesifikt for dette prosjektet?</span></li>
<li><span class="n">2</span><span><strong>Hvilke fagkilder skal ligge til grunn?</strong> Hvilke håndbøker, normaler og erfaringstall er de riktige her?</span></li>
<li><span class="n">3</span><span><strong>Hvilke systemer skal den få spørre?</strong> Og like viktig: hvilke skal den ikke få røre?</span></li>
<li><span class="n">4</span><span><strong>Hvem eier basen over tid?</strong> Et fagområde endrer seg. En kunnskapsbase uten eier blir utdatert uten at noen merker det.</span></li>
</ul>
<p class="foot-note">Dette er den delen av en innføring som koster arbeid — og som avgjør om resultatet blir nyttig. Det er verdt å planlegge for, ikke oppdage underveis.</p>
</div>
</section>
<!-- ============ DEL 5 ============ -->
<section class="slide divider" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="dl-no">5</div>
<div>
<h2>Slik går en kjøring</h2>
<p class="dl-q">Slik henger delene sammen — og slik gikk det, steg for steg, på eksempelet metoden er testet på.</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>Hele maskineriet på én figur</h2>
<div class="fig">
<svg viewBox="0 0 900 356" role="img" aria-label="Arkitektur: grunnlag, forslag, kontroll, dom - og godkjent kunnskap tilbake til grunnlaget">
<text class="svg-accent" x="16" y="52" font-size="13" font-weight="700" letter-spacing="1.1">GRUNNLAG</text>
<text class="svg-accent" x="16" y="132" font-size="13" font-weight="700" letter-spacing="1.1">FORSLAG</text>
<text class="svg-accent" x="16" y="212" font-size="13" font-weight="700" letter-spacing="1.1">KONTROLL</text>
<text class="svg-accent" x="16" y="292" font-size="13" font-weight="700" letter-spacing="1.1">DOM</text>
<rect class="svg-box-hi" x="140" y="18" width="440" height="58" rx="3"/>
<text class="svg-ink" x="164" y="43" font-size="17" font-weight="650">Kunnskapsbasene og tillatte fagsystemer</text>
<text class="svg-muted" x="164" y="65" font-size="14">fagkilder, kostnadstall, tidligere vurderinger</text>
<path class="svg-line" d="M360 80 V 96" marker-end="url(#arA)"/>
<rect class="svg-box" x="140" y="98" width="440" height="58" rx="3"/>
<text class="svg-ink" x="164" y="123" font-size="17" font-weight="650">To språkmodeller: én foreslår, én utfordrer</text>
<text class="svg-muted" x="164" y="145" font-size="14">her lages kandidaten, og her angripes begrunnelsen</text>
<path class="svg-line" d="M360 160 V 176" marker-end="url(#arA)"/>
<rect class="svg-box-hi" x="140" y="178" width="440" height="58" rx="3"/>
<text class="svg-ink" x="164" y="203" font-size="17" font-weight="650">Regnekoden — obligatorisk og blokkerende</text>
<text class="svg-muted" x="164" y="225" font-size="14">ingen modell involvert; avviser eller slipper gjennom</text>
<path class="svg-line" d="M360 240 V 256" marker-end="url(#arA)"/>
<rect class="svg-box-hi" x="140" y="258" width="440" height="58" rx="3"/>
<text class="svg-ink" x="164" y="283" font-size="17" font-weight="650">Fagpersonen dømmer utfallet</text>
<text class="svg-muted" x="164" y="305" font-size="14">godkjenner, avviser eller korrigerer — i eget fagspråk</text>
<path class="svg-line-hi" d="M584 287 H 690 Q 716 287 716 261 V 73 Q 716 47 690 47 H 586" marker-end="url(#arAh)"/>
<text class="svg-accent" x="736" y="160" font-size="14" font-weight="650">bare det</text>
<text class="svg-accent" x="736" y="180" font-size="14" font-weight="650">godkjente</text>
<text class="svg-accent" x="736" y="200" font-size="14" font-weight="650">går tilbake</text>
<defs>
<marker id="arA" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-muted"/></marker>
<marker id="arAh" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-accent"/></marker>
</defs>
</svg>
</div>
<p class="say">Fire lag, og pilen tilbake. Grunnlaget mates av mennesker, modellene jobber i midten, regnekoden avgjør tallet, og fagpersonen avgjør om resultatet er verdt å beholde.</p>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>Flere roller kan delta — og hver rolle kan ha sin egen modell</h2>
<p class="say">Drøftingen er satt opp som en gruppesamtale mellom agenter. I dag kjører den med to roller — én som foreslår og én som utfordrer — men flere roller kan delta i samme samtale, for eksempel en egen som ser på risiko eller på gjennomførbarhet.</p>
<p class="say"><strong>Rollene settes opp på forhånd — systemet velger dem ikke selv.</strong> Hvem som deltar, og hvilken modell hver rolle bruker, er innstillinger, ikke noe som må programmeres om. Det gjør at man kan bruke den dyre modellen der den betyr mest: på kritikken.</p>
<div class="cards">
<div class="card">
<span class="t">Foreslår</span>
<p>En rimelig, rask modell holder — den skal produsere kandidater, ikke felle dommen. For eksempel <code>gpt-5-mini</code> eller <code>gpt-4.1-mini</code>.</p>
</div>
<div class="card">
<span class="t">Utfordrer</span>
<p>Her lønner det seg med en tung resonneringsmodell som finner hull i argumentet. For eksempel <code>o3</code> eller <code>gpt-5</code>.</p>
</div>
<div class="card">
<span class="t">Må dataene bli i huset</span>
<p>Da kan hele kjeden kjøre på åpne modeller lokalt, for eksempel <code>gpt-oss</code>-familien — samme oppsett, ingen data ut.</p>
</div>
</div>
<p class="foot-note">Rammeverket har også en variant der laget settes sammen underveis av systemet selv, men den er merket eksperimentell — og et lag som varierer fra kjøring til kjøring gir verken forutsigbar kostnad eller sammenlignbare resultater. Modellnavnene over er eksempler fra Microsoft Foundrys katalog, ikke et fastsatt oppsett; de kan byttes uten at noe annet endres.</p>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>De åtte stegene — første halvdel</h2>
<p class="say">De åtte stegene fra kartet i starten, nå med tallene fra kjøringen på veglys-eksempelet.</p>
<ul class="pts">
<li><span class="n">1</span><span><strong>Forstå prosjektet.</strong> Systemet navigerer kunnskapsbasen og henter tidligere vurderinger. <span class="dim">I kjøringen: fem dokumenter lest, og null tidligere vurderinger — vi starter blankt med vilje.</span></span></li>
<li><span class="n">2</span><span><strong>Lag en hypotese.</strong> Ett konkret tiltak med parametere og kostnadslinjer. <span class="dim">I kjøringen: skifte 2 500 eldre armaturer til LED. Påstått besparelse 2 100 000 kroner.</span></span></li>
<li><span class="n">3</span><span><strong>La den bli utfordret.</strong> Den andre modellen angriper begrunnelsen. <span class="dim">I kjøringen: den konkluderer med at resonnementet holder — altså grønt lys herfra.</span></span></li>
<li><span class="n">4</span><span><strong>Regn etter.</strong> Regnekoden finner taket og avgjør. <span class="dim">I kjøringen: <b>avvist</b> — anlegget gir dekning for høyst 1 769 915 kroner, og forslaget påsto 2 100 000.</span></span></li>
</ul>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>De åtte stegene — andre halvdel</h2>
<ul class="pts">
<li><span class="n">5</span><span><strong>Forbedre, med begrunnelsen i hånda.</strong> Avvisningen sendes tilbake, og forsøkene er tellet. <span class="dim">I kjøringen: nytt forslag, denne gangen innenfor.</span></span></li>
<li><span class="n">6</span><span><strong>Forkast eller foreslå.</strong> Et ferdig utfall forlater kjøringen, med begge kontrollenes svar festet til seg. <span class="dim">I kjøringen: godkjent, 445 500 kroner.</span></span></li>
<li><span class="n">7</span><span><strong>Ta imot fagvurderingen.</strong> Enten med én gang, eller fra en innboks flere dager senere. <span class="dim">I kjøringen: godkjent — men med forbehold om at bare ~79 % realiseres i drift.</span></span></li>
<li><span class="n">8</span><span><strong>Løft det godkjente inn i kunnskapsbasen.</strong> Porten åpnes bare av en menneskelig godkjennelse. <span class="dim">I kjøringen: forbeholdet er med i grunnlaget ved neste kjøring.</span></span></li>
</ul>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>Ett prosjekt, tre sekunder</h2>
<p class="say">Vi har kjørt systemet på ett veglysprosjekt: utskifting av eldre armaturer langs en fylkesvei. Kjøringen tar under tre sekunder og skriver ut hva den gjør underveis — den utskriften er tallene på de neste slidene hentet fra.</p>
<p class="say"><strong>Det ene å merke seg:</strong> maskinen legger fram et forslag, den andre modellen godkjenner begrunnelsen — og så avviser regnestykket det likevel.</p>
<p class="say dim">Deretter kjøres det samme prosjektet én gang til, etter at en fagperson har sagt sitt. Da viser det seg om vurderingen faktisk kom fram.</p>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>Det som skjedde med tallet</h2>
<div class="bars">
<div class="bar-row">
<div class="lbl"><span>Maskinens forslag — godkjent av den som leste begrunnelsen</span><b>avvist</b></div>
<div class="track"><div class="fill rejected" style="width:100%">2 100 000 kr</div></div>
</div>
<div class="bar-row">
<div class="lbl"><span>Så mye finnes det dekning for i kostnadslinjene forslaget peker på</span><b>taket</b></div>
<div class="track"><div class="fill limit" style="width:84.3%">1 769 915 kr</div></div>
</div>
<div class="bar-row">
<div class="lbl"><span>Det maskinen til slutt får godkjent, etter å ha prøvd på nytt</span><b>godkjent</b></div>
<div class="track"><div class="fill ok" style="width:21.2%">445 500 kr</div></div>
</div>
</div>
<p class="say" style="margin-top:18px"><strong>Slik leses figuren.</strong> Øverst står maskinens påstand. I midten står taket — så mye finner regnestykket dekning for i akkurat de kostnadslinjene forslaget peker på. Påstanden lå <em>over</em> taket, altså krevde den penger anlegget ikke kan gi, og ble avvist. Nederst står det maskinen fikk godkjent på neste forsøk.</p>
<p class="say dim">Taket er altså ikke en grense for hvor mye dere kan spare. Det regnes ut på nytt for hvert eneste forslag, og gjelder bare de linjene det forslaget rører.</p>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<p class="pull">Det er ikke en svakhet ved eksempelet.<br><strong>Det er produktet.</strong></p>
<p class="say">Vi viser med vilje en kjøring der maskinen tar feil først. Et system som alltid får rett i første forsøk, har ingen kontroll — det har bare flaks, og du vet ikke hvilken av delene du ser.</p>
<p class="say">Og tallene i eksempelet er små med vilje: ett anlegg, én kostnadslinje. I en portefølje er det summen over mange prosjekter som betyr noe — <strong>og det er nettopp derfor det er farlig hvis tallene ikke er kontrollert.</strong></p>
<p class="say dim">Verdien ligger i at avvisningen skjer <em>før</em> tallet når et menneske, ikke etter.</p>
</div>
</section>
<section class="slide" data-part="Del 5 · Kjøringen">
<div class="inner">
<div class="kicker">Del 5 · Kjøringen</div>
<h2>Maskinen får prøve på nytt — men tellet og begrenset</h2>
<p class="say">Avvisningen sendes tilbake til maskinen som en begrunnelse, ikke som et blankt nei. Den får vite <em>hvorfor</em> tallet ikke holdt, og kan foreslå noe mer nøkternt.</p>
<p class="say"><strong>Men forsøkene er tellet.</strong> Systemet får ikke holde på til noe glir gjennom. Det er forskjellen på en kontroll og en formalitet — og det er også det som gjør at kostnaden ved en kjøring er kjent på forhånd.</p>
</div>
</section>
<!-- ============ DEL 5 ============ -->
<section class="slide divider" data-part="Del 6 · Menneskene">
<div class="inner">
<div class="dl-no">6</div>
<div>
<h2>Menneskene</h2>
<p class="dl-q">Hvor kommer dere inn — og hva skjer med vurderingen dere avgir?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 6 · Menneskene">
<div class="inner">
<div class="kicker">Del 6 · Menneskene</div>
<h2>Du svarer når det passer deg</h2>
<ul class="pts">
<li><span class="n">1</span><span><strong>Ingen skjerm står og venter.</strong> Systemet kjører ferdig uten deg. Du kan svare samme dag, eller en uke senere — neste kjøring plukker det opp uansett.</span></li>
<li><span class="n">2</span><span><strong>Du skriver i ditt eget fagspråk.</strong> Vurderingen formuleres slik du ville formulert den til en kollega, ikke som utfylling av et skjema.</span></li>
<li><span class="n">3</span><span><strong>Du kan si nei.</strong> En avvisning fra deg er like verdifull som en godkjennelse — den forteller systemet noe det ikke visste.</span></li>
</ul>
</div>
</section>
<section class="slide" data-part="Del 6 · Menneskene">
<div class="inner">
<div class="kicker">Del 6 · Menneskene</div>
<h2>Bare det et menneske har godkjent, blir varig kunnskap</h2>
<div class="fig">
<svg viewBox="0 0 900 196" role="img" aria-label="En port slipper bare menneskegodkjent kunnskap inn i kunnskapsbasen">
<rect class="svg-box" x="16" y="16" width="256" height="58" rx="3"/>
<text class="svg-ink" x="36" y="40" font-size="15" font-weight="650">Maskinens eget svar</text>
<text class="svg-muted" x="36" y="61" font-size="13">udømt, rått</text>
<path class="svg-line" d="M276 45 H 396" stroke-dasharray="6 6"/>
<g stroke="var(--bad-fg)" stroke-width="3.5" stroke-linecap="round">
<path d="M412 33 L 436 57"/><path d="M436 33 L 412 57"/>
</g>
<text x="456" y="50" font-size="14" font-weight="650" fill="var(--bad-fg)">stoppes</text>
<rect x="16" y="122" width="256" height="58" rx="3" fill="var(--ok-bg)" stroke="var(--ok-fg)" stroke-width="2.5"/>
<text x="36" y="146" font-size="15" font-weight="650" fill="var(--ok-fg)">Godkjent av fagperson</text>
<text x="36" y="167" font-size="13" fill="var(--ok-fg)">med begrunnelse</text>
<path class="svg-line-hi" d="M276 151 H 560 Q 592 151 592 119 V 106" marker-end="url(#arG)"/>
<path d="M424 88 V 196" stroke="var(--accent)" stroke-width="2.5" stroke-dasharray="7 6" fill="none"/>
<text class="svg-accent" x="424" y="106" font-size="13" font-weight="700" text-anchor="middle">PORTEN</text>
<rect class="svg-box-hi" x="616" y="46" width="266" height="60" rx="3"/>
<text class="svg-ink" x="749" y="72" font-size="16" font-weight="650" text-anchor="middle">Kunnskapsbasen</text>
<text class="svg-muted" x="749" y="93" font-size="13" text-anchor="middle">det neste kjøring bygger på</text>
<defs><marker id="arG" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0 0 L8 4 L0 8 z" class="svg-accent"/></marker></defs>
</svg>
</div>
<p class="say">Kunnskapsbasen systemet leser fra, er stengt for maskinens egne svar. Et forslag blir ikke til «kunnskap» fordi maskinen laget det — det må gjennom en fagperson først.</p>
<p class="say"><strong>Grunnen er at et system som lærer av seg selv, driver av gårde.</strong> Det begynner å bekrefte sine egne antakelser, og etter noen runder er det umulig å se hvor det gikk galt.</p>
<p class="say dim">Porten inn er derfor stengt som standard, og bare en menneskelig godkjennelse åpner den.</p>
</div>
</section>
<section class="slide" data-part="Del 6 · Menneskene">
<div class="inner">
<div class="kicker">Del 6 · Menneskene</div>
<h2>Slik kommer vurderingen din tilbake neste gang</h2>
<div class="fig">
<svg viewBox="0 0 900 218" role="img" aria-label="Kjoring A, fagvurdering, kunnskapsbasen, og tilbake til kjoring B">
<rect class="svg-box" x="54" y="24" width="196" height="66" rx="3"/>
<text class="svg-ink" x="152" y="52" font-size="17" font-weight="650" text-anchor="middle">Kjøring A</text>
<text class="svg-muted" x="152" y="74" font-size="14" text-anchor="middle">0 tidligere vurderinger</text>
<path class="svg-line" d="M254 57 H 350" marker-end="url(#ar5)"/>
<rect class="svg-box-hi" x="356" y="24" width="196" height="66" rx="3"/>
<text class="svg-ink" x="454" y="52" font-size="17" font-weight="650" text-anchor="middle">Du dømmer</text>
<text class="svg-muted" x="454" y="74" font-size="14" text-anchor="middle">«realiseres ~79 % i drift»</text>
<path class="svg-line" d="M556 57 H 652" marker-end="url(#ar5)"/>
<rect class="svg-box" x="658" y="24" width="184" height="66" rx="3"/>
<text class="svg-ink" x="750" y="52" font-size="17" font-weight="650" text-anchor="middle">Kunnskaps-</text>
<text class="svg-ink" x="750" y="74" font-size="17" font-weight="650" text-anchor="middle">basen</text>
<path class="svg-line-hi" d="M750 96 V 138 Q 750 160 728 160 H 174 Q 152 160 152 138 V 100" marker-end="url(#ar5h)"/>
<text class="svg-accent" x="450" y="196" font-size="17" font-weight="650" text-anchor="middle">Kjøring B: 3 tidligere vurderinger ligger i grunnlaget</text>
<defs>
<marker id="ar5" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-muted"/></marker>
<marker id="ar5h" markerWidth="9" markerHeight="9" refX="8" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" class="svg-accent"/></marker>
</defs>
</svg>
</div>
<p class="say">Første kjøring startet med tom erfaringsbase — null tidligere vurderinger. Det er med vilje: uten den kontrollen kunne vi ikke skille «systemet lærte noe» fra «det lå der fra før».</p>
</div>
</section>
<section class="slide" data-part="Del 6 · Menneskene">
<div class="inner">
<div class="kicker">Del 6 · Menneskene</div>
<p class="pull">Læringen endret ikke svaret.<br>Den endret <strong>grunnlaget</strong> svaret ble formet på.</p>
<p class="say">Andre kjøring landet på samme tiltak til samme beløp. Det kan se ut som ingenting skjedde — men forskjellen er at fagpersonens forbehold nå var med da forslaget ble formet, uten at noen måtte si det på nytt.</p>
<p class="say dim">Over tid er det dette som er poenget: hver vurdering dere avgir, blir stående og virker på neste prosjekt.</p>
</div>
</section>
<!-- ============ DEL 6 ============ -->
<section class="slide divider" data-part="Del 7 · Ærlighet og status">
<div class="inner">
<div class="dl-no">7</div>
<div>
<h2>Ærlighet og status</h2>
<p class="dl-q">Hva har dere egentlig sett i dag — og hva har dere ikke sett?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 7 · Ærlighet og status">
<div class="inner">
<div class="kicker">Del 7 · Ærlighet og status</div>
<h2>Tre forbehold</h2>
<div class="cards">
<div class="card">
<span class="t">Svarene er skriptet</span>
<p>Det var ingen levende språkmodell involvert i kjøringen. Den viser at maskineriet virker — ikke at en modell ville foreslått nettopp dette. Grunnen er nøktern: modellkjøringer koster penger, og dette er bygget uten budsjett.</p>
</div>
<div class="card">
<span class="t">Kunnskapsbasen er laget for hånd</span>
<p>Et menneske har skrevet den. Det finnes en vei for å hente eksterne kilder inn i formatet automatisk, og å ta den i bruk for nye fagområder står for tur.</p>
</div>
<div class="card">
<span class="t">Tallene er modellerte</span>
<p>Ingen pilot har målt dem i drift. 445 500 kroner er hva beregningen gir for et eksempel — ikke en besparelse noen har realisert. Ingen bør sitere beløpet som en oppnådd gevinst.</p>
</div>
</div>
<p class="foot-note">Grunnregelen systemet er bygget på, er at det ikke får påstå mer enn det gjør. En demo som overselger, bryter med akkurat det den demonstrerer — derfor står disse tre like tydelig som resten.</p>
</div>
</section>
<section class="slide" data-part="Del 7 · Ærlighet og status">
<div class="inner">
<div class="kicker">Del 7 · Ærlighet og status</div>
<h2>Hva finnes i dag, og hva finnes ikke</h2>
<div class="stat">
<div class="stat-row"><span><span class="pill ok">Bygget</span></span><span>Hele kjeden, fra kunnskapsgrunnlag til lagret fagvurdering</span></div>
<div class="stat-row"><span><span class="pill ok">Bygget</span></span><span>Den blokkerende kontrollen — kan ikke slås av</span></div>
<div class="stat-row"><span><span class="pill ok">810 tester</span></span><span>Grønne, målt på nøyaktig den versjonen tallene her kommer fra</span></div>
<div class="stat-row"><span><span class="pill warn">Står for tur</span></span><span>Automatisk produksjon av kunnskapsbaser — mekanismen finnes, koblingen gjenstår</span></div>
<div class="stat-row"><span><span class="pill bad">Ikke gjort</span></span><span>Pilot på ekte prosjektdata</span></div>
</div>
<p class="foot-note">Koden er åpen og fritt tilgjengelig. Ingen lisenskostnad i selve rammeverket, og ingen binding til én leverandør.</p>
</div>
</section>
<!-- ============ DEL 7 ============ -->
<section class="slide divider" data-part="Del 8 · Veien videre">
<div class="inner">
<div class="dl-no">8</div>
<div>
<h2>Veien videre</h2>
<p class="dl-q">Hva ber vi om — og hva trenger vi fra dere i dag?</p>
</div>
</div>
</section>
<section class="slide" data-part="Del 8 · Veien videre">
<div class="inner">
<div class="kicker">Del 8 · Veien videre</div>
<p class="pull">Vi ber om å få prøve metoden på <strong>ekte tall</strong>, én gang.</p>
<p class="say">Å be om finansiering av et program før metoden har møtt ekte prosjektdata, ville vært å be om tillit vi ikke har målt oss fram til.</p>
<p class="say dim">Det er nøyaktig den feilen systemet selv er bygget for å unngå — så vi kan vanskelig gjøre den her.</p>
</div>
</section>
<section class="slide" data-part="Del 8 · Veien videre">
<div class="inner">
<div class="kicker">Del 8 · Veien videre</div>
<h2>Hva en pilot krever</h2>
<ul class="pts">
<li><span class="n">1</span><span><strong>Én portefølje med ekte kostnadstall.</strong> Ikke en stor en. Metoden trenger prosjekter med et oppgitt kostnadsoverslag å regne mot.</span></li>
<li><span class="n">2</span><span><strong>Navngitte fagpersoner som får dømme.</strong> Uten dem finnes ingen læring. Innsatsen per vurdering er liten, men den må være noens jobb.</span></li>
<li><span class="n">3</span><span><strong>Et modellbudsjett.</strong> Størrelsen avhenger av hvor mange prosjekter piloten omfatter, og er ikke regnet ut ennå.</span></li>
<li><span class="n">4</span><span><strong>En avtalt målestokk på forhånd.</strong> Hva skal piloten ha vist for at vi kaller den vellykket? Det bør bestemmes før, ikke etterpå.</span></li>
</ul>
</div>
</section>
<section class="slide" data-part="Del 8 · Veien videre">
<div class="inner">
<div class="kicker">Del 8 · Veien videre</div>
<h2>Slik forberedes en kjøring for et konkret prosjekt</h2>
<p class="say">Det er fem ting som må på plass før en kjøring kan gjøres på ekte tall. Det er verdt å vite at bare den første er ren teknikk:</p>
<ul class="pts">
<li><span class="n">1</span><span><strong>Sette opp kjøremiljøet</strong> i Microsoft Foundry Agent Service — der agentene og modellene faktisk kjører.</span></li>
<li><span class="n">2</span><span><strong>Bygge kunnskapsbasene.</strong> Den generelle fagbasen for prosjekttypen, og den prosjektspesifikke. <span class="dim">Dette er den tunge posten, og den er fagarbeid.</span></span></li>
<li><span class="n">3</span><span><strong>Koble på fagsystemene.</strong> Ta i bruk eksisterende koblinger der de finnes, og lage nye der de mangler — og bestemme hva systemet får spørre om.</span></li>
<li><span class="n">4</span><span><strong>Velge modell per rolle.</strong> Hvem foreslår, hvem utfordrer, og hvor mye det skal få koste.</span></li>
<li><span class="n">5</span><span><strong>Sette målet for kjøringen.</strong> Hva skal den lete etter, og hvilke tilnærminger vil dere ha vurdert?</span></li>
</ul>
<p class="foot-note">Punkt 2 og 5 kan ikke settes bort — de krever fagfolk som kjenner området. Punkt 1, 3 og 4 er oppsett som gjøres én gang og gjenbrukes.</p>
</div>
</section>
<section class="slide" data-part="Del 8 · Veien videre">
<div class="inner">
<div class="kicker">Del 8 · Veien videre</div>
<h2>Gjør mot metoden det den ber dere gjøre mot hvert forslag</h2>
<p class="say">Dere er de eneste i rommet som kan avgjøre det som betyr noe her. Så vi ber dere dømme den, på tre spørsmål:</p>
<ul class="pts">
<li><span class="n">1</span><span>Er dette <strong>gjenkjennelig</strong> fra ditt fagfelt — er det slik du ville formulert forbeholdene selv?</span></li>
<li><span class="n">2</span><span>Ville du <strong>brukt tid</strong> på et tall som har vært gjennom denne kontrollen?</span></li>
<li><span class="n">3</span><span>Er det <strong>verdt å prøve</strong> på ekte tall — og hvilken portefølje bør vi i så fall begynne med?</span></li>
</ul>
<p class="foot-note">Et ærlig nei på noen av disse er et nyttigere utfall i dag enn en høflig ja.</p>
</div>
</section>
<section class="slide" data-part="">
<div class="inner">
<div class="kicker">Oppsummert</div>
<h1 style="font-size:clamp(1.8rem,4.2vw,3.1rem)">Maskinen får foreslå.<br>Den får ikke godkjenne seg selv.</h1>
<p class="say" style="max-width:52ch">En metode for å vurdere kostnadstall har ikke troverdighet fordi den er teknisk velbygget. Den har troverdighet når fagfolk med ansvar sier at den regner riktig.</p>
<p class="say dim" style="max-width:52ch">Det er derfor vi står her, og ikke hos budsjettsiden.</p>
</div>
</section>
<div class="bar-ui">
<span><span class="where" id="where"></span></span>
<span>
<button class="btn" id="prev" aria-label="Forrige"></button>
<button class="btn" id="next" aria-label="Neste"></button>
<span class="counter" id="count" style="margin-left:14px"></span>
</span>
</div>
<script>
(function () {
var slides = Array.prototype.slice.call(document.querySelectorAll('.slide'));
var i = 0;
var count = document.getElementById('count');
var where = document.getElementById('where');
var prog = document.getElementById('prog');
function show(n) {
i = Math.max(0, Math.min(slides.length - 1, n));
slides.forEach(function (s, k) { s.classList.toggle('active', k === i); });
count.textContent = (i + 1) + ' / ' + slides.length;
where.textContent = slides[i].getAttribute('data-part') || '';
prog.style.width = ((i + 1) / slides.length * 100) + '%';
try { location.hash = String(i + 1); } catch (e) {}
}
function go(d) { show(i + d); }
document.addEventListener('keydown', function (e) {
var k = e.key;
if (k === 'ArrowRight' || k === 'ArrowDown' || k === 'PageDown' || k === ' ' || k === 'Enter') { go(1); e.preventDefault(); }
else if (k === 'ArrowLeft' || k === 'ArrowUp' || k === 'PageUp' || k === 'Backspace') { go(-1); e.preventDefault(); }
else if (k === 'Home') { show(0); e.preventDefault(); }
else if (k === 'End') { show(slides.length - 1); e.preventDefault(); }
else if (k === 'f' || k === 'F') {
if (document.fullscreenElement) { document.exitFullscreen(); }
else if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); }
e.preventDefault();
}
});
document.getElementById('next').addEventListener('click', function () { go(1); });
document.getElementById('prev').addEventListener('click', function () { go(-1); });
var start = null;
document.addEventListener('touchstart', function (e) { start = e.changedTouches[0].clientX; }, {passive: true});
document.addEventListener('touchend', function (e) {
if (start === null) return;
var dx = e.changedTouches[0].clientX - start;
if (Math.abs(dx) > 55) { go(dx < 0 ? 1 : -1); }
start = null;
}, {passive: true});
var h = parseInt((location.hash || '').replace('#', ''), 10);
show(isNaN(h) ? 0 : h - 1);
})();
</script>