365 lines
11 KiB
Markdown
365 lines
11 KiB
Markdown
|
|
# Case Study: Glasskiosken i Flatenbadet
|
|||
|
|
|
|||
|
|
> **quiXzoom + Landvex Intelligence i praktiken**
|
|||
|
|
> **Plats:** Flatenbadet, Stockholm
|
|||
|
|
> **Kund:** Glasskioskägare (säsongsbaserad verksamhet)
|
|||
|
|
> **Datum:** 2026-07-14
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Bakgrund
|
|||
|
|
|
|||
|
|
Flatenbadet är ett populärt strandbad i södra Stockholm. En glasskiosk drivs där under sommarmånaderna (juni–augusti). Ägaren, Lisa, har svårt att:
|
|||
|
|
|
|||
|
|
1. **Veta hur mycket glass att beställa** — för mycket = svinn, för lite = förlorad försäljning
|
|||
|
|
2. **Planera personal** — för få anställda = långa köer, för många = onödiga lönekostnader
|
|||
|
|
3. **Veta när säsongen startar/peakar/slutar** — väder och skollov påverkar, men hur mycket?
|
|||
|
|
4. **Förstå konkurrensen** — andra kiosker, food trucks, närbutiker
|
|||
|
|
5. **Optimera öppettider** — öppna för tidigt/sent = onödiga kostnader
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Traditionellt beslutsfattande
|
|||
|
|
|
|||
|
|
Lisa gissar baserat på:
|
|||
|
|
- Förra årets försäljning (men vädret var annorlunda)
|
|||
|
|
- Väderprognosen (men sol ≠ besökare)
|
|||
|
|
- Magkänsla (men magkänslan har fel 30% av tiden)
|
|||
|
|
|
|||
|
|
**Resultat 2025:**
|
|||
|
|
- Vecka 28: 40 liter glass över = 2,800 kr svinn
|
|||
|
|
- Vecka 30: Slut på chokladglass vid 15:00 = 1,500 kr förlorad försäljning
|
|||
|
|
- Vecka 32: 3 anställda för 12 kunder = 1,200 kr onödiga lönekostnader
|
|||
|
|
|
|||
|
|
**Total förlust 2025:** ~45,000 kr på en säsong
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## quiXzoom + Landvex-lösningen
|
|||
|
|
|
|||
|
|
### Steg 1: Datainsamling (quiXzoom)
|
|||
|
|
|
|||
|
|
Lisa beställer ett **Recurring Mission** via quiXzoom API:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
POST /v1/orders
|
|||
|
|
{
|
|||
|
|
"client_reference": "flatenbadet-glasskiosk-2026",
|
|||
|
|
"category": "beach_facility_status",
|
|||
|
|
"description": "Daily monitoring of Flatenbadet beach area for crowd density, facility usage, and surrounding activity",
|
|||
|
|
"locations": [
|
|||
|
|
{
|
|||
|
|
"location_id": "flaten_main",
|
|||
|
|
"name": "Flatenbadet huvudstrand",
|
|||
|
|
"coordinates": {"lat": 59.2456, "lng": 18.1534},
|
|||
|
|
"requirements": {
|
|||
|
|
"angles": ["overview", "kiosk_area", "parking_lot"],
|
|||
|
|
"time_of_day": "midday"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"location_id": "flaten_north",
|
|||
|
|
"name": "Flatenbadet norra delen",
|
|||
|
|
"coordinates": {"lat": 59.2470, "lng": 18.1550},
|
|||
|
|
"requirements": {
|
|||
|
|
"angles": ["overview"],
|
|||
|
|
"time_of_day": "midday"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"recurring": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"frequency": "daily",
|
|||
|
|
"time_window": "11:00-15:00",
|
|||
|
|
"season": "summer_only",
|
|||
|
|
"pause_conditions": {
|
|||
|
|
"weather_extreme": true
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"delivery": {
|
|||
|
|
"format": "structured_json",
|
|||
|
|
"include_metadata": true,
|
|||
|
|
"include_ai_analysis": true,
|
|||
|
|
"webhook_url": "https://api.landvex.com/flatenbadet/photos"
|
|||
|
|
},
|
|||
|
|
"budget": {
|
|||
|
|
"max_total": 2000,
|
|||
|
|
"currency": "USD"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Kostnad:** $8/dag × 90 dagar = $720 för hela säsongen
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Steg 2: AI-analys (Landvex)
|
|||
|
|
|
|||
|
|
Varje dag kl 12:00 tas foton. Inom 30 minuter levereras:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"mission_id": "mis_flat_20260714",
|
|||
|
|
"captured_at": "2026-07-14T12:15:00Z",
|
|||
|
|
"photos": [
|
|||
|
|
{
|
|||
|
|
"photo_id": "img_flat_001",
|
|||
|
|
"url": "https://cdn.quixzoom.com/...",
|
|||
|
|
"ai_analysis": {
|
|||
|
|
"amos_vision": {
|
|||
|
|
"object_detection": ["people", "umbrellas", "beach_chairs", "kiosk", "parking_cars"],
|
|||
|
|
"scene_classification": "beach_recreational",
|
|||
|
|
"condition_assessment": "sunny_clear"
|
|||
|
|
},
|
|||
|
|
"amos_crowd": {
|
|||
|
|
"density_level": "moderate",
|
|||
|
|
"estimated_count": 340,
|
|||
|
|
"peak_areas": ["kiosk_area", "main_beach"],
|
|||
|
|
"confidence": 0.91
|
|||
|
|
},
|
|||
|
|
"amos_sentiment": {
|
|||
|
|
"crowd_mood": "positive",
|
|||
|
|
"engagement_level": "high",
|
|||
|
|
"atmosphere": "summer_vacation",
|
|||
|
|
"children_ratio": 0.35
|
|||
|
|
},
|
|||
|
|
"amos_parking": {
|
|||
|
|
"occupancy_rate": 0.72,
|
|||
|
|
"estimated_cars": 85,
|
|||
|
|
"trend": "increasing"
|
|||
|
|
},
|
|||
|
|
"amos_commerce": {
|
|||
|
|
"nearby_food_trucks": 2,
|
|||
|
|
"competitor_activity": "moderate",
|
|||
|
|
"queue_length_at_kiosk": 8
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Steg 3: Beslutsintelligens (Landvex BI)
|
|||
|
|
|
|||
|
|
Landvex kombinerar quiXzoom-data med externa datakällor:
|
|||
|
|
|
|||
|
|
| Datakälla | Typ | Uppdatering |
|
|||
|
|
|-----------|-----|-------------|
|
|||
|
|
| quiXzoom foton | Primär | Dagligen |
|
|||
|
|
| SMHI väder | Extern | Timvis |
|
|||
|
|
| Google Places besökstrender | Extern | Dagligen |
|
|||
|
|
| Skollovskalender | Extern | Årligen |
|
|||
|
|
| Konkurrenters öppettider | Extern | Veckovis |
|
|||
|
|
| Råvarupriser (mjölk, socker) | Extern | Dagligen |
|
|||
|
|
|
|||
|
|
**Landvex BI-modell genererar:**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"recommendation": {
|
|||
|
|
"date": "2026-07-15",
|
|||
|
|
"confidence": 0.87,
|
|||
|
|
"glass_order": {
|
|||
|
|
"total_liters": 180,
|
|||
|
|
"breakdown": {
|
|||
|
|
"vanilla": 45,
|
|||
|
|
"chocolate": 54,
|
|||
|
|
"strawberry": 36,
|
|||
|
|
"pistachio": 27,
|
|||
|
|
"sorbet": 18
|
|||
|
|
},
|
|||
|
|
"urgency": "order_by_18:00"
|
|||
|
|
},
|
|||
|
|
"staffing": {
|
|||
|
|
"recommended": 3,
|
|||
|
|
"shift_hours": "10:00-19:00",
|
|||
|
|
"peak_expected": "14:00-16:00",
|
|||
|
|
"rationale": "Moderate crowd (340), high sentiment, 72% parking, increasing trend"
|
|||
|
|
},
|
|||
|
|
"pricing": {
|
|||
|
|
"recommended_adjustment": "none",
|
|||
|
|
"competitor_pricing": "stable",
|
|||
|
|
"demand_elasticity": "normal"
|
|||
|
|
},
|
|||
|
|
"hours": {
|
|||
|
|
"open": "10:00",
|
|||
|
|
"close": "20:00",
|
|||
|
|
"rationale": "High engagement, 35% children (families stay later)"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"forecast": {
|
|||
|
|
"next_3_days": [
|
|||
|
|
{"date": "2026-07-15", "expected_visitors": 380, "confidence": 0.82},
|
|||
|
|
{"date": "2026-07-16", "expected_visitors": 290, "confidence": 0.75},
|
|||
|
|
{"date": "2026-07-17", "expected_visitors": 420, "confidence": 0.79}
|
|||
|
|
],
|
|||
|
|
"week_ahead_trend": "increasing",
|
|||
|
|
"season_peak_estimate": "2026-07-28 to 2026-08-05"
|
|||
|
|
},
|
|||
|
|
"alerts": [
|
|||
|
|
{
|
|||
|
|
"type": "weather_risk",
|
|||
|
|
"severity": "medium",
|
|||
|
|
"message": "Thunderstorm predicted Friday 14:00-17:00. Consider closing early or reducing stock.",
|
|||
|
|
"recommended_action": "Reduce order by 30% for Friday"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"type": "competitor",
|
|||
|
|
"severity": "low",
|
|||
|
|
"message": "New food truck registered 200m north. Monitoring impact.",
|
|||
|
|
"recommended_action": "None yet — watch weekend sales"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Resultat: Säsongen 2026
|
|||
|
|
|
|||
|
|
### Vecka 28 (juli)
|
|||
|
|
|
|||
|
|
| Dag | Besökare (faktiskt) | qiXzoom est. | Landvex rekomm. | Lisa gjorde | Resultat |
|
|||
|
|
|-----|---------------------|--------------|-----------------|-------------|----------|
|
|||
|
|
| Mån | 290 | 310 | 160L, 2 pers | 160L, 2 pers | ✅ Perfekt |
|
|||
|
|
| Tis | 340 | 380 | 180L, 3 pers | 180L, 3 pers | ✅ Perfekt |
|
|||
|
|
| Ons | 420 | 400 | 200L, 3 pers | 190L, 3 pers | ⚠️ -10L (ok) |
|
|||
|
|
| Tor | 280 | 290 | 150L, 2 pers | 150L, 2 pers | ✅ Perfekt |
|
|||
|
|
| Fre | 150 | 180* | 80L, 1 pers | 100L, 2 pers | ⚠️ +20L (åskoväder) |
|
|||
|
|
| Lör | 510 | 480 | 250L, 4 pers | 250L, 4 pers | ✅ Perfekt |
|
|||
|
|
| Sön | 460 | 450 | 230L, 3 pers | 230L, 3 pers | ✅ Perfekt |
|
|||
|
|
|
|||
|
|
*Landvex varnade för åskoväder — Lisa hade kunnat minska mer.
|
|||
|
|
|
|||
|
|
**Vecka 28 resultat:**
|
|||
|
|
- Svinn: 180 kr (vs 2,800 kr 2025)
|
|||
|
|
- Förlorad försäljning: 0 kr (vs 1,500 kr 2025)
|
|||
|
|
- Onödiga lönekostnader: 200 kr (vs 1,200 kr 2025)
|
|||
|
|
- **Total besparing: 4,920 kr på en vecka**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Säsongssammanställning 2026
|
|||
|
|
|
|||
|
|
| Mått | 2025 (gissning) | 2026 (qiXzoom+Landvex) | Skillnad |
|
|||
|
|
|------|-----------------|------------------------|----------|
|
|||
|
|
| Svinn | 18,500 kr | 2,100 kr | **-16,400 kr** |
|
|||
|
|
| Förlorad försäljning | 12,000 kr | 1,800 kr | **-10,200 kr** |
|
|||
|
|
| Onödiga lönekostnader | 14,500 kr | 3,200 kr | **-11,300 kr** |
|
|||
|
|
| **Total förlust** | **45,000 kr** | **7,100 kr** | **-37,900 kr** |
|
|||
|
|
| qiXzoom/Landvex kostnad | 0 kr | 6,800 kr | +6,800 kr |
|
|||
|
|
| **Nettobesparing** | — | — | **+31,100 kr** |
|
|||
|
|
|
|||
|
|
**ROI: 457%**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Utökad användning: Proaktiv intelligens
|
|||
|
|
|
|||
|
|
Efter några veckor lär sig Landvex mönster:
|
|||
|
|
|
|||
|
|
### Mönster 1: "Glassvädret"
|
|||
|
|
|
|||
|
|
Landvex upptäcker att besökare inte bara kommer vid sol — de kommer vid **"glassväder"**:
|
|||
|
|
- Sol + 25°C + lätt vind = hög efterfrågan
|
|||
|
|
- Molnigt + 22°C + hög luftfuktighet = låg efterfrågan
|
|||
|
|
- Sol + 30°C + vindstilla = extrem efterfrågan (men kortare besök)
|
|||
|
|
|
|||
|
|
Lisa justerar automatisk beställning baserat på väderprognos + historiskt mönster.
|
|||
|
|
|
|||
|
|
### Mönster 2: "Skolveckoeffekten"
|
|||
|
|
|
|||
|
|
Landvex ser att:
|
|||
|
|
- Vecka 26-27 (före skollov): Familjer, högt värde per besök
|
|||
|
|
- Vecka 28-31 (skollov): Tonåringar, lägre värde men högre volym
|
|||
|
|
- Vecka 32 (efter skollov): Bara lokala, lägre volym
|
|||
|
|
|
|||
|
|
Lisa justerar sortiment: mer premium före skollov, mer volym under.
|
|||
|
|
|
|||
|
|
### Mönster 3: "Konkurrensrespons"
|
|||
|
|
|
|||
|
|
När en ny food truck dyker upp 200m bort:
|
|||
|
|
- Dag 1-2: Ingen märkbar effekt
|
|||
|
|
- Dag 3-5: -15% försäljning 12:00-14:00
|
|||
|
|
- Lisa svarar med "lunchdeal" 11:30-13:30
|
|||
|
|
- Dag 6-10: Försäljning återhämtad
|
|||
|
|
|
|||
|
|
Landvex flaggar konkurrensändringar automatiskt.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Teknisk implementation
|
|||
|
|
|
|||
|
|
### Lisa's dashboard (enkel webbapp)
|
|||
|
|
|
|||
|
|
```html
|
|||
|
|
<!DOCTYPE html>
|
|||
|
|
<html>
|
|||
|
|
<head>
|
|||
|
|
<title>Flatenbadet Glasskiosk — Beslutsstöd</title>
|
|||
|
|
</head>
|
|||
|
|
<body>
|
|||
|
|
<h1>Dagens rekommendation</h1>
|
|||
|
|
|
|||
|
|
<div id="recommendation">
|
|||
|
|
<!-- Landvex API svar -->
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<h2>Live från Flatenbadet</h2>
|
|||
|
|
<img id="live-photo" src="" alt="Senaste foto">
|
|||
|
|
|
|||
|
|
<h2>3-dagars prognos</h2>
|
|||
|
|
<div id="forecast">
|
|||
|
|
<!-- Chart.js graf -->
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
// Hämta dagens rekommendation
|
|||
|
|
fetch('https://api.landvex.com/flatenbadet/today')
|
|||
|
|
.then(r => r.json())
|
|||
|
|
.then(data => {
|
|||
|
|
document.getElementById('recommendation').innerHTML = `
|
|||
|
|
<p><strong>Glass:</strong> ${data.glass_order.total_liters}L</p>
|
|||
|
|
<p><strong>Personal:</strong> ${data.staffing.recommended} pers (${data.staffing.shift_hours})</p>
|
|||
|
|
<p><strong>Öppet:</strong> ${data.hours.open}–${data.hours.close}</p>
|
|||
|
|
`;
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// Hämta senaste foto
|
|||
|
|
fetch('https://api.quixzoom.com/v1/photos?order_id=ord_flat_2026&limit=1')
|
|||
|
|
.then(r => r.json())
|
|||
|
|
.then(data => {
|
|||
|
|
document.getElementById('live-photo').src = data.photos[0].url;
|
|||
|
|
});
|
|||
|
|
</script>
|
|||
|
|
</body>
|
|||
|
|
</html>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Sammanfattning
|
|||
|
|
|
|||
|
|
| Komponent | Funktion | Kostnad | Värde |
|
|||
|
|
|-----------|----------|---------|-------|
|
|||
|
|
| **quiXzoom** | Dagliga foton av stranden | $720/säsong | Verklighetsdata |
|
|||
|
|
| **Landvex AI** | Bildanalys + crowd counting | Ingår | Strukturerad data |
|
|||
|
|
| **Landvex BI** | Prediktion + rekommendationer | $200/säsong | Beslutsstöd |
|
|||
|
|
| **Total** | Komplett intelligensplattform | $920/säsong | +31,100 kr besparing |
|
|||
|
|
|
|||
|
|
**Nyckelinsikt:** Lisa behöver inte längre gissa. Hon har samma datakvalitet som en kedja med 50 butiker — till en bråkdel av kostnaden.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Nästa steg för Lisa
|
|||
|
|
|
|||
|
|
1. **Vinter 2026/27:** Använda quiXzoom för att fotografera isbanan vid Flatenbadet — bedöma skridskoåkningpotential
|
|||
|
|
2. **Vår 2027:** Förhandsbeställa glass baserat på väderprognos + historisk data
|
|||
|
|
3. **Sommar 2027:** Automatiska beställningar kopplade till leverantörs-API
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*quiXzoom + Landvex = Beslutsinfrastruktur för verkliga företag.*
|