Arkitektur & Operations

Det bedste AI-signal i danske virksomheder er manuelt middleware

Spørger du tech-pressen, er det bedste tegn på AI-modenhed, at en virksomhed ansætter en "Head of AI". Spørger du dataene fra 1.493 danske jobopslag i mid-market segmentet, er sandheden en helt anden.

Det stærkeste signal på, at en virksomhed er klar til AI, er når de søger koordinatorer, controllere og plannere til at fungere som manuelt middleware mellem systemer, der ikke taler sammen.

Når en virksomhed ansætter et menneske primært til at flytte, validere og vurdere data på tværs af ERP, CRM og indbakker, skriger arkitekturen på et agent-lag. Mennesker bliver brugt som manuelle API'er. Det er dyrt, langsomt og demotiverende. Her er dataene bag påstanden, og hvordan du som IT-chef omsætter signalet til faktisk arkitektur.

virksomheder.db (1.493 rows, 107 verified cases)
SELECT automation_target, COUNT(*) AS verified_cases
FROM ai_opportunities
WHERE revenue BETWEEN 25000000 AND 1000000000
GROUP BY automation_target ORDER BY verified_cases DESC;
automation_targetverified_casesdata_friction_point
workflow_compression31Routing & Godkendelser (Salg/Ops)
finance_automation29Faktura, Afstemning & Compliance
customer_service_agent26Support Triage & RMA Opslag
demand_gen_engine21Lead berigelse & CRM Datakvalitet

"Koordination" slår "AI" med længder i jobopslag

Frekvens af workflow-friktioner i en shortlist (n=40) af de mest automations-relevante jobopslag i segmentet 25 mio. - 1 mia. DKK.

"Koordination" / Tværgående bindeled
26
Support / Service Triage
23
Kvalitet / Compliance / Dokumentation
20
Logistik / Planlægning
16
Eksplicit AI / Automationssprog
7

Det bedste AI-signal er altså ikke, at virksomheden siger "AI". Det er, at virksomheden leder efter et overblik, fordi deres nuværende systemlandskab tvinger medarbejdere til at agere routere.

De 3 arketyper på "Menneskeligt Middleware"

Når man læser de konkrete jobopslag, træder der tre klare arketyper frem. Det er disse tre profiler, man som virksomhed ikke længere skal bygge teams omkring, men bygge agenter til at understøtte.

1. Data-validatoren (Compliance & Finance)

Dette er profilen, der ansættes til at sikre datakvalitet, fordi integrationerne mellem fagsystemer lækker eller fejler.

Envafors A/S (Datacontroller): "Du arbejder med fejl og datakvalitet i fire centrale systemer – målerdatasystemet, DataHub, afregningssystem og Utiligize – og sikrer, at data flyder korrekt, så kunderne faktureres præcist."

Arkitekturen: Et agent-lag trækker data fra de fire systemer via API, bruger en LLM som "reasoning engine" med et strengt defineret JSON-schema til at identificere årsagen til afvigelsen, og retter fejlen automatisk — med fallback til menneskelig godkendelse ved lav konfidens.

2. Triage & Routing (Support & Logistik)

Dette er profilen, hvis primære job er at læse ustruktureret input (emails), regne ud hvad det handler om, slå det op i et andet system, og videresende det til den rigtige afdeling.

EASYFOOD A/S (Supply Planner): "Du bliver det naturlige bindeled mellem indkøb, produktion, lager, planlægning og leverandører..."

Arkitekturen: Intelligent triage. En LLM læser indkommende henvendelser (intent classification), ekstraherer entiteter (ordrenumre, mangler), slår dem op i ERP-systemet, og opretter strukturerede sager direkte til den rette afdeling (inklusiv et udkast til svar).

3. Specifikations-oversætteren (Salg & Tilbud)

Profilen, der læser kundens rodede specifikationer og forsøger at mappe det til virksomhedens egne varenumre og kapacitet.

Louis Poulsen A/S (Customer Logistics Coordinator): "Du bliver deres primære kontaktperson i forhold til forespørgsler... og vil arbejde tæt sammen med Supply Chain og Shipping."

Arkitekturen: En multimodal agent, der kan læse PDF-tegninger og ustrukturerede mails, mappe kundens krav mod virksomhedens PIM-system via semantic search, og bygge et tilbudsudkast i CRM-systemet.

Arkitektur: Agentic Middleware

Vercel AI SDK / TypeScript
01. Webhook Intake

Event Trigger

Modtag ustruktureret input via mail eller webhooks.

02. LLM Reasoning

Structured Output

Tving LLM'en til at returnere deterministisk JSON via Zod.

03. Validation

Human-in-the-Loop

Afbryd flowet og eskalér til et menneske ved lav konfidens.

04. Execution

ERP Integration

Kald interne API'er med det verificerede payload.

// 1. Webhook endpoint der modtager rå tekst
export async function POST(req: Request) {
  const { subject, body, sender } = await req.json();
  
  if (!body) {
    return new Response("Missing content", { status: 400 });
  }

  // Klargør kontekst til agent-laget
  const context = `Sender: \${sender}\nSubject: \${subject}\n\${body}`;
  
  return await processWithAgent(context);
}
// 2. Definer Zod schema og kør Vercel AI SDK
import { generateObject } from 'ai';
import { z } from 'zod';

const triageSchema = z.object({
  intent: z.enum(['RMA', 'ORDER_STATUS', 'INVOICE']),
  orderId: z.string().nullable(),
  urgency: z.enum(['LOW', 'HIGH']),
  confidenceScore: z.number().min(0).max(1)
});

const { object } = await generateObject({
  model: openai('gpt-4o'),
  schema: triageSchema,
  prompt: `Analyser følgende email og ekstraher data:\n\${context}`
});
// 3. Sikkerhedsnet: Human-in-the-Loop (HITL)
// Tillad kun autonome handlinger ved høj konfidens

if (object.confidenceScore < 0.95 || !object.orderId) {
  
  await zendesk.createTicket({
    subject: "Manuel Triage Kræves",
    body: `Agent kunne ikke med sikkerhed parse sagen.`,
    priority: object.urgency
  });
  
  return { status: 'escalated_to_human' };
}
// 4. Deterministisk ERP Integration
// Nu ved vi, at vi har et validt orderId og en intent.

if (object.intent === 'RMA') {
  const erpResult = await dynamics365.createRmaDraft({
    orderReference: object.orderId,
    reason: "Agent Auto-Triage"
  });

  // Gør udkastet klar til at et menneske kan trykke "Godkend"
  await notifyStaff(`RMA klargjort for ordre \${object.orderId}`);
  
  return erpResult;
}

Production Audit Log (Observability)

Datadog / Langfuse
[14:02:11.402] [REQ_8F72C] INFO Webhook modtaget fra: [email protected]
[14:02:11.450] [REQ_8F72C] INFO Vercel AI SDK initieret (Model: claude-4-6-sonnet)
[14:02:12.102] [REQ_8F72C] LLM_RES Intent: INVOICE_DISCREPANCY | Confidence: 0.96
[14:02:12.115] [REQ_8F72C] API_CALL GET /api/v1/utiligize/meters?ref=82199
[14:02:12.301] [REQ_8F72C] API_RES 200 OK (124ms)
[14:02:12.310] [REQ_8F72C] EVAL Afvigelse fundet: DataHub[val] != Utiligize[val]
[14:02:12.355] [REQ_8F72C] ACTION Klargør ERP-opdatering (kræver human-in-the-loop godkendelse)
[14:02:12.802] [REQ_8F72C] AUDIT ✔️ Ticket oprettet i Dynamics 365 (Total exectuion: 1400ms)

Hvorfor er dette vigtigt for en IT-Chef?

Fordi det ændrer hele måden, du beregner ROI på et AI-projekt.

Når du bygger AI-agenter til at fjerne manuel middleware, bygger du ikke en "kreativ assistent" med uklar værdi. Du bygger kapacitetsfrigivelse. Du tager højtuddannede specialister, der i dag fungerer som "copy/paste-integrationer", og frigør dem til at lave det, de egentlig blev ansat til: kvalitetssikring, kundekontakt og komplekse vurderinger.

Hos Frobert bygger vi ikke AI, fordi det lyder smart. Vi bygger det, fordi traditionelle integrationer (point-to-point eller RPA) er for skrøbelige til ustruktureret data. Vi bygger enterprise-grade agentisk software, der tvinger LLM'er til at levere deterministiske data, systemerne kan stole på.


Executive Q&A: Fra signal til arkitektur (FAQ)

Hvordan spotter vi "manuelt middleware" i vores egen organisation?
Kig efter workflows, hvor en medarbejder skal have to eller flere fagsystemer åbne på samme tid for at træffe én beslutning. Hvis data overføres manuelt fra en mail til et system baseret på et menneskes "vurdering" af mailen, har I fundet et agent-surface.
Hvorfor ikke bare bygge en almindelig API-integration?
API'er kræver fuldstændig struktureret data i begge ender. Hvis inputtet er en PDF fra en leverandør, en rodet kunde-email eller afvigende stamdata, fejler en klassisk integration. En AI-agent bruger en LLM til at skabe struktur ud af det ustrukturerede, før den kalder API'et.
Er AI-agenter stabile nok til produktionsmiljøer?
Ja, hvis de arkitektureres korrekt. Vi bruger ikke LLM'er til at gætte data (hallucinationer), men som en logisk motor, der orkestrerer deterministiske API-kald via et strengt JSON schema (Zod), og beder et menneske om godkendelse ("Human-in-the-loop"), når usikkerheden er for høj.

Metode og Datagrundlag (Analysis Methodology)

Analysen bygger på et kvantitativt datasæt (n=1.493 jobopslag) fra danske virksomheder i segmentet 25 mio. til 1 mia. DKK. Data er indsamlet og filtreret med fokus på procesoptimering, system-interaktioner og automationspotentiale.