Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Unreleased]

### Added — AI Bibliotek Project
- Prototype for a shared library where Danish public authorities publish and "hjemtage" (take home) AI assistants — initially OpenWebUI-based — so local use cases can scale nationally
- Single-page mock adapted from the Dansk Viden til Dansk AI SPA: self-signup, katalog with search and facets (kommune, sprogmodel, rammeværk, datafølsomhed), assistant detail with modelkort/readme/vidensopskrift and versioned JSON export, plus a "del assistent" flow — `localStorage` backend, teal primary color
- Report (`index.md`), estimeringsnotat with phased estimate and a drift/driftsomkostninger note, and mocks listing

### Added — Solceller i Universitetsparken hearing detail mock (deltag-aarhus)
- Second interactive prototype for deltag.aarhus.dk under `docs/public/projects/deltag-aarhus/mocks/uniparken/` — Lokalplan nr. 1245 om et solcelleanlæg på Universitetsparkens fællesplæne, med samme funktionalitet som Vosnæs-prototypen (784 høringssvar, åben/afsluttet variant, alle modaler, kort, statistik)
- Introduced a per-mock config layer (`mocks/js/config.js` + per-mock `window.DeltagMock.config` override) so plan number, deadlines, map center/clusters and active dataset are swappable without duplicating shared CSS/JS. The Vosnæs mock continues to use the file's defaults.
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ Taskfile.yml # Task automation (dev, build, lint
| `opkraevningsoverblik` | Opkrævningsoverblik | No |
| `roboway` | Roboway | No |
| `dansk-viden-til-dansk-ai` | Dansk Viden til Dansk AI | No |
| `ai-bibliotek` | AI Bibliotek | No |

## Conventions

Expand Down
12 changes: 12 additions & 0 deletions docs/.vitepress/sidebar.mts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,17 @@ const danskVidenTilDanskAi: DefaultTheme.SidebarItem[] = [
},
]

const aiBibliotek: DefaultTheme.SidebarItem[] = [
{
text: 'AI Bibliotek',
items: [
{ text: 'Overview', link: '/projects/ai-bibliotek/' },
{ text: 'Estimeringsnotat', link: '/projects/ai-bibliotek/estimeringsnotat' },
{ text: 'Interactive Mocks', link: '/projects/ai-bibliotek/mocks' },
],
},
]

const designSystem: DefaultTheme.SidebarItem[] = [
{
text: 'Design System',
Expand All @@ -134,6 +145,7 @@ export function sidebar(): DefaultTheme.Sidebar {
'/projects/opkraevningsoverblik/': opkraevningsoverblik,
'/projects/roboway/': roboway,
'/projects/dansk-viden-til-dansk-ai/': danskVidenTilDanskAi,
'/projects/ai-bibliotek/': aiBibliotek,
'/projects/design-system/': designSystem,
}
}
Expand Down
4 changes: 4 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,8 @@ features:
details: Fælles offentlig service til indsamling og deling af danske publikationer som grundlag for dansk AI — med AI-katalogisering, syv rettighedsniveauer og delbare samlinger.
link: /projects/dansk-viden-til-dansk-ai/
linkText: View project
- title: AI Bibliotek
details: Fælles bibliotek hvor danske myndigheder kan dele og hjemtage AI-assistenter — med katalog, søgning, modelkort, vidensopskrift og versioneret JSON-eksport, så lokale use cases kan skaleres nationalt.
link: /projects/ai-bibliotek/
linkText: View project
---
54 changes: 54 additions & 0 deletions docs/projects/ai-bibliotek/estimeringsnotat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<small>**Project:** AI Bibliotek · **Status:** Estimat (pitch)</small>

# AI Bibliotek — Estimeringsnotat

**Dato:** maj 2026
**Projekt:** AI Bibliotek — deling af AI-assistenter på tværs af offentlige myndigheder
**Fase:** Pitch / oplæg (uge 23)

::: info Bemærkning
Notatet er bevidst holdt på et overordnet niveau. Det er et oplæg, ikke et tilbud — formålet er at give en størrelsesorden og efterlade manøvrerum i den videre proces. Estimaterne er grove og afhænger af de afklaringer, der er beskrevet i [hovednotatet](./).
:::

---

## Overordnet estimat

Estimatet er delt i faser, så projektet kan startes småt og udvides, efterhånden som koncept og behov afklares.

| Fase | Indhold | Estimat | Tidshorisont |
|---|---|---|---|
| **Fase 0 — Afklaring** | Standard for assistent-format, governance, hvad er åbent vs. bag login, rettigheder til delt JSON | 60–120 t. | 3–5 uger |
| **Fase 1 — MVP (v0.1)** | Webapp, simpel brugerstyring, katalog med søgning/filtre, assistent-side, JSON-eksport, del/upload-flow, OpenWebUI-tag | 350–550 t. | 2–3 mdr. |
| **Fase 2 — Udvidelser** | Flere versioner i drift, AI-genererede tags, forbedret datagrundlags-opskrift, flere rammeværk | 250–450 t. | 2–3 mdr. |
| **Fase 3 — Økosystem (på sigt)** | Tools & skills, ratings, API, abonnement/advisering, testcases | 400–800 t. | Løbende |
| **Sum (fase 0–2)** | | **660–1.120 t.** | **ca. 5–8 mdr.** |

Fase 3 er medtaget for fuldstændighedens skyld og er ikke en del af det anbefalede første skridt.

### Anbefalet første skridt

Fase 0 + Fase 1 leverer en brugbar MVP, der kan opfylde succeskriteriet: to AarhusAI-assistenter delt i biblioteket og inviterede OS2ai-testkommuner. Estimat **410–670 t.**, tidshorisont **ca. 3–4 måneder**.

---

## Opmærksomhedspunkt: drift og driftsomkostninger

Et bibliotek af denne type er ikke et "byg og glem"-projekt. Den væsentligste langsigtede omkostning er **drift**, ikke selve udviklingen. Følgende skal afklares tidligt:

- **Hosting og ejerskab.** Hvem driver og betaler for platformen? OS2/OS2ai-fællesskab, en værtskommune, eller en central aktør? Driften skal have en fast ejer, ellers forfalder biblioteket.
- **Løbende vedligehold.** Sikkerhedsopdateringer, afhængigheder, brugerstyring og support koster typisk **15–25 % af udviklingsestimatet pr. år**. For fase 0–2 svarer det groft til **100–280 t./år**.
- **Indholdsmoderering og kvalitet.** Delte assistenter skal kunne reviewes — er JSON'en trygt at dele, er metadata korrekt, er datafølsomheden vurderet rigtigt? Det kræver en governance-proces og dermed tid, ikke kun teknik.
- **Versionering over tid.** Når en kommune opdaterer en delt assistent, skal abonnenter adviseres og gamle versioner håndteres. Det vokser med antallet af assistenter og kommuner.
- **Compute.** Selve assistenterne kører lokalt i den enkelte kommune — biblioteket hoster ikke modeller. Driftsomkostningen til AI-inferens ligger derfor hos den hjemtagende kommune, ikke hos biblioteket. Det holder bibliotekets egne driftsomkostninger lave og forudsigelige.

**Konklusion:** udviklingsomkostningen er en engangsinvestering; driften er en løbende forpligtelse, der skal have et budget og en ejer fra dag ét.

---

## Forudsætninger og forbehold

- Estimaterne forudsætter genbrug af eksisterende ITKdev-fundament (auth, design, hosting-mønstre).
- De forudsætter, at OpenWebUIs eksportformat kan bruges som udgangspunkt for assistent-JSON.
- Større usikkerheder: standardisering på tværs af rammeværk, juridisk afklaring af deling af systemprompter/datagrundlag, og governance-modellen.
- Tallene er grove pitch-estimater og skal kvalificeres i fase 0.
129 changes: 129 additions & 0 deletions docs/projects/ai-bibliotek/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
<small>**Project:** AI Bibliotek · **Status:** Prototype · **Date:** May 2026</small>

# AI Bibliotek

**Et fælles bibliotek hvor danske myndigheder kan dele og hjemtage AI-assistenter — så lokale use cases kan skaleres op på nationalt niveau.**

---

## Baggrund

I Storskalaprojektet udvikles AI-assistenter til konkrete kommunale opgaver — borgerservice, sagsbehandling, journalisering, mødereferater og meget mere. Assistenterne bygges i dag typisk lokalt i den enkelte kommune, ofte oven på OpenWebUI, og bliver sjældent delt på tværs. Det betyder, at den samme assistent reelt udvikles flere gange parallelt i forskellige kommuner.

Samtidig efterspørger OS2ai-kommunerne en måde at genbruge hinandens arbejde på: hvis Aarhus har bygget en velfungerende FAQ-assistent til borgerservice, bør Odense kunne hjemtage den, tilpasse den lokalt og tage den i brug — uden at starte forfra.

Et AI-bibliotek kan udstille assistenterne ét sted, så de kan fremsøges, vurderes og hjemtages. På sigt kan det samme bibliotek rumme tools, skills og hele økosystemet omkring assistenterne — og måske brede sig ud over kommunegrænserne til hele det offentlige Danmark.

## Formål

Prototypen undersøger spørgsmålet: **Hvordan kan et fælles bibliotek for delte AI-assistenter se ud i praksis — så en assistent udviklet i én kommune kan hjemtages og anvendes i en anden?**

Biblioteket skal understøtte to bevægelser:

- **Dele** — en kommune udstiller en assistent, den har udviklet lokalt, sammen med dens datagrundlag (i opskriftsform), modelkort og readme
- **Hjemtage** — en anden kommune fremsøger, vurderer og henter assistenten (eksporterer dens JSON) og bygger sit eget lokale datagrundlag efter opskriften

## Hvad prototypen viser

Prototypen er en single-page application, der bruger `localStorage` som backend og simulerer AI-understøttet metadata med en kort spinner. Den er et **visuelt og funktionelt diskussionsgrundlag** — teksten er illustrativ (lorem-agtig, men realistisk), netop fordi det er en visualisering af et koncept og ikke en færdig løsning.

### Forsiden

Hero med søgefelt, kort introduktion og statistik (antal assistenter, deltagende kommuner, antal sprogmodeller). En rail med "Senest opdateret" og en sektion der **teaser fremtidige muligheder** (tools, skills, ratings, API, abonnement, testcases) som "kommer snart".

### Registrering og login

Simpel brugerflade hvor en medarbejder kan oprette en konto (i første omgang opret sig selv) eller logge ind. Brugere gemmes i `localStorage`. Ingen reel auth — kun til demoformål.

### Katalog og søgning

Fritekstsøgning kombineret med facetter: **oprindelseskommune, sprogmodel, rammeværk** (i dag OpenWebUI) og **datafølsomhed** (almindelige personoplysninger / fortrolige / personfølsomme). Resultater vises som kort med badges.

### Assistent-side

Detaljevisning af en enkelt assistent med adskilte visninger:

- **Beskrivelse** — assistentens formål
- **Modelkort** — hvilken sprogmodel, kontekstvindue, parametre og hvilke hensyn der er til assistenten
- **Readme** — praktisk dokumentation
- **Viden** — *i opskriftsform*: hvad den enkelte kommune selv skal levere af datagrundlag lokalt (de faktiske vidensfiler kan sjældent deles på tværs af kommuner)
- **JSON** — vælg blandt **flere versioner** af assistenten og **eksportér** den valgte version som en JSON-fil (datagrundlag svarende til OpenWebUIs eksportformat)

Metadata i sidepanelet: oprindelseskommune, sprogmodel, rammeværk, datafølsomhed, dato for oprettelse og opdatering samt antal versioner. En **OpenWebUI-tag** markerer rammeværket, så biblioteket med tiden kan rumme assistenter til flere typer rammeværk.

### Del assistent

Et flow hvor en kommune udstiller en assistent: indsæt eller upload assistentens OWUI-JSON → systemet foreslår metadata (navn, beskrivelse, tags, sprogmodel) → kommunen gennemgår, vælger datafølsomhed og udgiver. Kvittering med permalink.

### Mine assistenter & favoritter

Personligt overblik over egne delte assistenter samt en favoritliste, begge gemt i `localStorage`.

---

## Krav (v0.1)

- Webapplikation med simpel brugerstyring (opret sig selv)
- En assistent består af — og skal kunne udvides uendeligt med — mindst: eksporterbar **JSON** (datagrundlag svarende til OpenWebUI), **viden/filer i opskriftsform**, **modelkort**, **readme** og en **beskrivelse**
- Metadata: sprogmodel, viden, dato for oprettelse/opdatering, oprindelseskommune samt om assistenten er beregnet til personfølsomme / fortrolige / almindelige personoplysninger
- Flere versioner af JSON på samme assistent
- Det skal være muligt at tilføje nye entiteter (fx tools og skills) på sigt
- En assistent skal kunne tagges med sit rammeværk (OpenWebUI i dag), så biblioteket senere kan rumme flere rammeværk
- AI-genererede tags (evt.)
- Forskellige filtrerings- og søgemuligheder

---

## Afklarende spørgsmål

Prototypen er et diskussionsgrundlag, ikke en implementeringsklar løsning. En række forhold skal afklares inden et reelt system bygges.

### Hvad må udstilles åbent — og hvad skal bag login?

I prototypen er **kataloget offentligt at browse**, mens det at **dele og eksportere** kræver login. Det er en antagelse, ikke en beslutning. Skal selve eksistensen af en assistent (navn, formål, kommune) være åben, mens JSON og modelkort er bag login? Eller skal hele biblioteket være lukket for ikke-myndigheder?

### Hvad er der i JSON-filerne?

Kan vi ukritisk dele indholdet af en OWUI-assistents JSON? Systemprompter kan indeholde interne formuleringer, henvisninger til konkrete sager eller forudsætninger, der ikke bør deles bredt. Der skal tages stilling til, hvad der reviewes inden deling.

### Hvordan fungerer download og upload på tværs af forskellige løsninger?

Biblioteket forudsætter, at en assistent eksporteret ét sted kan importeres et andet sted. Hvor ens skal afsender- og modtagermiljøet være? Hvad sker der, når en kommune kører en anden version af OpenWebUI — eller et helt andet rammeværk?

### Er der en standard for assistenter?

Findes der en standard (JSON, XML eller andet) for, hvordan en assistent beskrives og overdrages? OpenWebUIs eksportformat er udgangspunktet, men en bibliotek-standard på tværs af rammeværk vil kræve en aftalt struktur.

### Datagrundlaget

De faktiske vidensfiler kan sjældent deles på tværs af kommuner (interne data, persondata, rettigheder). Prototypen løser det ved at beskrive datagrundlaget **i opskriftsform**, så den enkelte kommune selv kan opbygge sit lokale grundlag. Er opskriftsformen tilstrækkelig, eller skal der mere standardisering til?

---

## På sigt

Følgende er ikke en del af v0.1, men biblioteket skal kunne rumme det. I prototypen er mulighederne teaset som "kommer snart":

- Deling af **tools** og **skills**
- Mulighed for at **rate** assistenter, tools og skills
- **API** så man kan oprette og vedligeholde assistenter fra egen løsning
- Mulighed for at **abonnere** på en assistent og få besked ved ændringer (og dermed hente ny version)
- Deling af **testcases og resultater** på en assistent

---

## Succeskriterie

At der er delt **to AI-assistenter fra AarhusAI** i AI-biblioteket. Derudover inviteres andre OS2ai-kommuner til at være testkommuner — både til at dele lokalt udviklede assistenter og til at tage delte assistenter i anvendelse lokalt.

---

## Drift og økonomi

Se [Estimeringsnotat](./estimeringsnotat) for økonomisk estimat, tidshorisont og opmærksomhedspunkter om drift og driftsomkostninger.

---

## Interaktiv prototype

<a href="/research-projects/projects/ai-bibliotek/mocks/index.html" class="mock-button" target="_blank">Åbn prototypen ↗</a>
8 changes: 8 additions & 0 deletions docs/projects/ai-bibliotek/mocks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<small>**Project:** AI Bibliotek</small>

# Interaktive Mocks

---

**<a href="/research-projects/projects/ai-bibliotek/mocks/index.html" target="_blank">AI Bibliotek — prototype ↗</a>**
Single-page prototype hvor danske myndigheder kan dele og hjemtage AI-assistenter. Katalog med søgning og facetter (kommune, sprogmodel, rammeværk, datafølsomhed), assistent-side med modelkort, readme, vidensopskrift og versioneret JSON-eksport, samt et flow til at dele en assistent. Bruger `localStorage` som backend.
Loading
Loading