Intelligent Carrier Matching
- Lokation (0-30p): Serviceområde og rutekorridor
- Kapacitet (0-25p): Ample/god/begrænset
- Service (0-20p): Express, tung, hazmat, køle
- Rating (0-15p): Stjerner, erfaring, verificering
- Pris (0-10p): Budgetudnyttelse
- Min. 40 point cutoff · 15 parallelle scoringer
Carrier Marketplace PRO+
- 5 visninger: Discover, Map, Analytics, Compare, Saved
- Favoritter, proximity matching, gemte søgninger
- PostgreSQL FTS med relevansscore
- Carrier profil: specialisering, forsikring, priskonfig
- Quote request til flere vognmænd
Marketplace Intelligence ADMIN
Temperatur
bids/job × fill_rate / time_to_first_bid
Match Efficiency
Final matches / candidates. 48-cyklus rolling.
Carrier Liquidity
Aktive vognmænd / aktive jobs. Healthy ≥ 2.0
Utilization
Vognmænd med matches / aktive. Target > 50%
Korridorprofit
Rute-specifikke margins og volumener
Budhastighed
Tid fra job til første bud
Demand Heatmap
Geografisk efterspørgsel, cellebaseret
Win-Rate
Accepterede / afgivne bud pr. vognmand
Flådestyring
- Reg.nr., VIN, fabrikat, model, Euro-klasse
- Kapacitet: vægt, volumen, dimensioner, aksler
- ADR farligt gods, compliance-udløb
- 5 statuser: Aktiv, Inaktiv, Vedligehold, Reparation, Solgt
Real-Time GPS & Geofencing
- Live position via SignalR (1 sek. throttle)
- Admin kontrolrum med live kort
- Geofence: pickup, levering, forbudt
- GeoJSON polygoner, ray-casting detektion
- Entry/exit-events med auto-varsler
Ruteoptimering PRO+
- Multi-stop, pris- eller tidsoptimering
- Omkostning: brændstof, chauffør, vejafgift
- ETA: trafik (+15% myldretid), køretøjstype
- Multi-job: op til 20 jobs pr. rute
- HERE Maps + Haversine fallback
Køretøjsopslag — Nummerplade & VIN
MotorAPI.dk (Danmark)
- Opslag via reg.nr. eller VIN (ISO 3779)
- 20+ felter: fabrikat, model, Euro-klasse, totalvægt
- Polly circuit breaker, Redis 24h cache
Global Readiness
- VIN er international (ISO 3779) — virker globalt
- Normaliseret output, provider-agnostisk resilience
- Udvidelse: GIBDD (RU), KBA (DE), eNaTIS (ZA), NHTSA (US)
AI Computer Vision
Chauffør fotograferer godset. llama3.2-vision:11b analyserer:
- Volumenestimering fra foto
- Vægtvurdering pr. godskategori
- Godsklassificering (type, tilstand)
- 100% lokal — nul data til cloud
ENTERPRISE
Intelligent Matching
100-point scoring i 5 dimensioner:
- Geospatial Proximity (30p)
- Kapacitetsanalyse (25p)
- Specialiseringsmatch (20p)
- Rating & Erfaring (15p)
- Prisoptimering (10p)
Prædiktiv Analytics
- ETA Prediction — trafik, vejr, køretøj
- Fuel Forecast — Brent/WTI → DKK
- Demand Heatmap — geografisk prognose
- Marketplace Temperature
- Corridor Profitability
Komplet AI/ML Capability Map
1. Computer Vision
Godsanalyse, Ollama lokal
2. Multi-Faktor Matching
100p scoring, parallel
3. Route Corridor
Geografisk korridormatch
4. Candidate Reduction
Pre-filtrering
5. ETA Prediction
Trafik, vejr, køretøj
6. Cost Optimization
Brændstof, chauffør, CO2
7. Demand Heatmap
Cellebaseret analyse
8. Fuel Forecast
Brent/WTI prognose
9. Behavioral Analysis
Cold/Warm/Hot konvertering
10. A/B Experiments
Upgrade prompt-varianter
11. Marketplace Intel
8 sundhedsmålinger
12. GreenScore
11 køretøjstyper × CO2
13. Proximity Match
Geo-nærhed, kapacitet
14. Full-Text Search
FTS, relevansscore
15. Anomaly Detection
Misbrug-detektion
16. Geofence Detection
Ray-casting realtid
Al AI kører lokalt via Ollama. Ingen data til OpenAI, Google eller andre cloud-tjenester. Fuld datakontrol, EU-compliance, ingen leverandør-lock-in.
Hetzner Dedicated Server — Faktisk Hardware
64 GB
RAM
AMD Ryzen 5 3600 · 55 GB ledig
12
CPU Tråde
6-Core @ 3.6 GHz
464 GB
NVMe SSD
291 GB ledig (35% brugt)
Nuværende Forbrug vs. Kapacitet
| Container | RAM Allokeret | RAM Brugt | Udnyttelse |
| Backend (prod) | 8 GB | 249 MB | 3% |
| Frontend (prod) | 4 GB | 107 MB | 3% |
| PostgreSQL | 8 GB | 252 MB | 3% |
| PostgreSQL Replica | 4 GB | 53 MB | 1% |
| PgBouncer | 256 MB | 3 MB | 1% |
| Redis | 1 GB | 10 MB | 1% |
| Supabase GoTrue | 2 GB | 20 MB | 1% |
| Supabase PostgREST | 2 GB | 171 MB | 8% |
| Kong API Gateway | 2 GB | 1.2 GB | 60% |
| Prometheus | 2 GB | 158 MB | 8% |
| Grafana | 1 GB | 111 MB | 11% |
| Loki + Tempo | 4 GB | 119 MB | 3% |
| Fuel Scraper | 1 GB | 113 MB | 11% |
| Staging (backend+frontend) | 6 GB | 269 MB | 4% |
| Total allokeret | ~46 GB af 64 GB | ~4% gns. |
Opskaleringsmuligheder
Vertikal Skalering (Nuværende Server)
- 55 GB RAM ledig — backend kan opskaleres fra 8→32 GB uden hardware-ændring
- 291 GB disk ledig — plads til yderligere databaser og logs
- Gennemsnitlig container-udnyttelse: ~4% — massiv headroom
- Hetzner AX41-NVMe kan opgraderes til 128 GB RAM
- Backend container bruger 249 MB af 8 GB — kan håndtere 10-20x nuværende load
- PostgreSQL bruger 252 MB af 8 GB — klar til millioner af rækker
- Redis bruger 10 MB af 1 GB — 99% kapacitet tilgængelig
Horisontal Skalering (Fremtidig)
- Docker Swarm / Kubernetes — containere kan replikeres
- PostgreSQL read replicas — allerede konfigureret (replica kører)
- PgBouncer connection pooling — allerede aktiv
- Redis cluster — kan opgraderes fra standalone
- CDN / Cloudflare — frontend allerede CDN-klar (static export)
- Flere Hetzner servere — Tailscale VPN til cluster
- Load balancer — Caddy understøtter upstream balancing
App-Niveau Grænser (Kode)
Kestrel Server
- Max forbindelser: 1.000
- Max brugere: 10.000
- Max req/s: 1.000
- Thread pool: 50–500
- Emergency throttle: 95%
Database Pools
- DB pool: 2–50 conn.
- Observability pool: 2–20
- Redis: 1 GB max (LRU)
- Timeout: 30s std, 300s GDPR
Alle grænser er konfigurerbare
- Kestrel: via appsettings.json
- DB pool: via connection string
- Rate limits: via Redis config
- Docker: via compose limits
- Nul kodeændringer for opskalering
1.677 Tests
1.133
Backend Unit
50 filer · xUnit
506
E2E Playwright
52 filer · 14 kat.
20
Integration
Auth, Search, Stripe
22 Baggrundsjob
Real-Time (5–15 min)
- Bid velocity: 5 min
- Job escalation: 5 min
- Dashboard refresh: 5 min
- Marketplace temp.: 10 min
- Match efficiency: 10 min
- GreenScore: 15 min
Periodisk (30 min–24h)
- Carrier liquidity: 30 min
- Demand heatmap: 30 min
- Sessionsrydning: 1 time
- Kreditoptankning: dagligt 03:00
- GDPR-oprydning: dagligt