| Dato | Kat. | Debitornr. | Kundenavn | Salgspris | DB1 | DB2 | DB3 | DG3% | Kostpris | Antal | Status |
|---|
| Dato | Kat. | Debitornr. | Kundenavn | Salgspris | DB1 | DB2 | DB3 | DG3% | Kostpris | Antal | Status |
|---|
DB Assistenten analyserer Procudans egne historiske salgspriskalkulationer og budgetdata for at give sælgerne et kvalificeret, datadrevet udgangspunkt for prissætning. Systemet erstatter ikke sælgerens vurdering — det supplerer den med indsigt der ellers ville kræve manuel gennemgang af mange systemer. Grundlaget er ... kalkulationer fra 2024–2026 på tværs af ... unikke vare/debitor kombinationer. Systemet anvender outlier-detektion (IQR-metode) til automatisk at identificere og udelukke fejlregistreringer og engangstilfælde fra beregningerne. En volatilitetsalgoritme viser prisspænd baseret på historisk spredning i DG1%. To tværgående metoder sammenligner kundens DB3 med andre kunder — både inden for samme kategori (peers) og på tværs af alle kundekategorier (kategori-landskab). Datagrundlaget opdateres løbende og tæller dynamisk fra de faktiske kalkulationer i systemet. Anbefalinger vises som et DB/DG-interval baseret på de 6 metoders udfald samt historisk prisvolatilitet — ikke kun et enkelt tal. Dette giver sælgeren et tydeligt billede af forhandlingsrummet. Prisassistenten anvender en dedikeret Anthropic API-nøgle til separat omkostningstracking. AI-modellen kan skiftes direkte i appen under Udviklingsindstillinger til sammenligning af modelkvalitet under prototype-fasen.
Procudan opererer med tre DB-niveauer. At forstå forskellen er avgørende for at bruge systemet rigtigt:
Eksempel: En kunde på Island kan have høj DB1 fordi fragtomkostningen er inkluderet i prisen — men lav DB3 når fragten trækkes fra. En lokal kunde der selv henter varen kan have lavere DB1 men højere DB3. DB1 alene siger derfor intet om hvor lønsom kunden reelt er — det gør DB3.
Systemet er opdelt i tre faner efter dette princip:
Tilsvarende findes DG1%, DG2% og DG3%. DG1% bruges til budget og booking men er upålidelig til sammenligning. DG3% er ren indtjeningsgrad og sammenlignelig på tværs af kunder.
Systemet kender Procudans faktiske prissætningshistorik — ikke generiske markedspriser. Hver historisk kalkulation indeholder kostpris, salgspris, dækningsgrad og mængde. Budgetdata for 2026 indgår som en selvstændig reference. Kundekategorier (M, A, B, C) er integreret fra ABCM-systemet.
Systemet identificerer og ekskluderer statistiske outliers fra beregningerne. En kalkulation flagges kun som outlier hvis den både afviger statistisk fra IQR-grænserne OG afviger mere end 50% fra medianværdien. Dette sikrer at reelle salg med usædvanlig høj eller lav DB ikke fejlagtigt ekskluderes — kun åbenlyse fejlregistreringer og ekstreme engangstilfælde filtreres fra.
Seks uafhængige beregningsmetoder giver hver sit bud på salgsprisen. Ingen enkelt metode er facit — tilsammen tegner de et billede af hvad der er sandsynligt, hvad budgettet forventer, hvad markedet beder om, og hvor usikker beregningen er. Metode 1-4 arbejder på DB1-basis (inkl. alle omkostninger, budgetsammenligneligt). Metode 5-6 arbejder på DB3-basis (rent, sammenligneligt på tværs af kunder).
| Hvad svarer den på? | Metode | Formel | Datakilde |
|---|---|---|---|
| Hvad har VI solgt denne vare til — til DENNE specifikke kunde? | ● Metode 1 Historisk vægtet DG |
Pris = Kostpris / (1 − DG_vaegt / 100) DG_vaegt = Σ(DG_i × w_i) / Σ(w_i) w_i = mængde |
KALK + HIST |
| Hvad REGNEDE VI MED at tjene på denne vare til denne kunde i budgettet? | ● Metode 2 Budget 2026 reference |
Pris = Kostpris + Budget_DB_pr_enhed DG_budget = Budget_DB / Pris × 100 |
BUDGET |
| Hvad er det bedste bud når vi vejer denne kundes historik og budget sammen? | ● Metode 3 Kombineret algoritme |
a3 = vægtet gennemsnit af Metode 1 og 2: w1 (Metode 1): min(0,70 ; 0,40 + antal_kalk × 0,05) w2 (Metode 2): resterende vægt (1 − w1) Normaliseres hvis kun én kilde er tilgængelig. s3 = kost / (1 − a3 / 100) |
KALK (vare/debitor historik) + BUDGET (plan 2026). Historik vægter mere jo flere kalkulationer — max 70%. Ren DB1-basis. |
| Hvor USIKRE er vi — og hvad er det realistiske spænd at lande i? | ● Metode 4 Volatilitetsanalyse |
σ = std.afv. på DG1% i renset historik Spænd: [Kost/(1−(DG_komb−σ)/100) ; Kost/(1−(DG_komb+σ)/100)] Lav: σ < 3 pp | Middel: 3–8 pp | Høj: σ > 8 pp Konstanter: VOLATIL_LAV = 3, VOLATIL_HOJ = 8 |
HIST (renset) |
| Betaler denne kunde det samme DB3 som andre kunder i SAMME kategori på denne vare? | ● Metode 5 Kategori-peers |
Finder andre debitorer med samme ABCM-kategori der har købt varen (alle kalkulationer). peer_snit = mængde-vægtet DB3 Sammenligner kundens eget DB3 mod peer-snittet. Outlier-filtreret (IQR + median). Konstant: PEER_MIN_KUNDER = 1 |
HIST (andre debitorer, samme kategori, alle kalkulationer) + KATEGORI. Negative DB3 og outliers udeladt. Status-filtreret når toggle ON. |
| Hvordan fordeler DB3 sig på tværs af ALLE kundekategorier (M/A/B/C) for denne vare? | ● Metode 6 Kategori-landskab |
DB3-snit beregnes separat pr. kategori (M/A/B/C) for andre kunder der har købt varen (alle kalkulationer). Mængde-vægtet pr. kategori. Aktuel kunde ekskl. Viser om mindre kunder (B/C) har højere DB3 end større kunder (M/A) som forventet. Outlier-filtreret (IQR + median) pr. kategori. |
HIST (alle andre debitorer for varenr., grupperet på ABCM-kategori, alle kalkulationer). Debitorer uden kategori udelades. Negative DB3 og outliers udeladt. Status-filtreret når toggle ON. |
Hver historisk kalkulation har et udfaldsfelt: Vundet, Tabt, Forældet eller Åben. Via togglen 'Anvend status i beregninger' i toolbar kan status aktiveres som et aktivt signal. Når toggle er OFF vises status stadig i historiktabellerne som information — det er kun beregningerne og AI-kaldene der slås fra. Bemærk: data har en vis usikkerhed da Tabt ikke altid afspejler det reelle kommercielle udfald — brug med omtanke.
| Område | Status OFF | Status ON |
|---|---|---|
| Metode 1 status-vægt | Alle records vægtes ens | Vundet ×1,2 · Tabt ×0,4 · Forældet ×0,1 |
| Metode 5 og 6 (tværgående) | Alle udfald medtages i DB3-beregning | Tabt og Forældet ekskluderes helt fra peer- og kategori-beregning |
| IQR outlier-detektion | Uændret | Forældet ekskluderes inden IQR-beregning |
| histTxt til AI-kald | Ingen status per record | Status vises per record i historikken |
| Tværgående AI (Kald 2) | Alle udfald indgår i DB3-grundlag | Tabt og Forældet ekskluderes helt fra peer- og kategori-data |
| AI system-prompt | Ingen instruktion om status | Vundet = stærkt signal, Tabt = advarsel om prisniveau |
| Historiktabeller (visning) | Status-kolonne vises | Status-kolonne vises — uændret |
| Stamdata-banner (visning) | Udfaldsfordeling vises | Udfaldsfordeling vises — uændret |
Status-kolonnen og udfaldsfordelingen vises altid uanset toggle — det er information til sælgeren. Det er kun beregningerne og AI-kaldene der skifter adfærd.
DB3-metoderne (5 og 6) beregnes nu live med 180-dages vindue og respekterer status-toggle: når status er aktiv ekskluderes Tabt og Forældet helt fra beregningen.
Tre AI-kald afvikles sekventielt ved hver beregning. Dataanalytikeren kører først og identificerer mønstre og trends i det historiske data. Derefter analyserer tværanalytikeren, hvordan kundens DB3 forholder sig til andre kunder på samme vare på tværs af kundekategorier. Begge analytikers observationer sendes som kontekst til prisstrategen, der laver den endelige anbefaling. Kald 1 og 2 afvikles automatisk ved beregning — Kald 3 startes af sælgeren.
services/api/src/ai/politik.js) — appen beder om et niveau, ikke om en model.
Kald via @procudan/ai → POST /api/ai/svar. API-nøglen forlader aldrig serveren.Herunder kan du læse de præcise instruktioner AI'en modtager ved hver beregning.
services/api/prompts/ for at justere adfærd.Indlæser...
services/api/prompts/ for at justere adfærd.Indlæser...
services/api/prompts/ for at justere adfærd.Indlæser...
services/api/src/ai/politik.js) og kan skiftes ud uden at
denne app aendres. Appen beder om et niveau — hvor grundigt
der skal taenkes — og platformen oversaetter det.
Funktioner vi har overvejet og bevidst valgt fra — med begrundelse. Dokumenteret så vi ikke genopfinder hjulet.