# Hämta utbudsjämförelse från Booli Insights

## Källa

- **Dashboard:** Booli Insights (Evidence.dev)
- **Sida:** <https://insights.booli.se/benchmarking/jamforelse_konkurrenter/>
- **Tabell:** `inventory_staging__competition_benchmarking`
- **Granularitet:** Daglig (aggregeras till månadsmedeltal vid hämtning)
- **Historik:** jan 2023 → pågående

## Kolumner i källtabellen

| Kolumn | Typ | Beskrivning |
|--------|-----|-------------|
| date | TIMESTAMP | Datum (daglig) |
| booli_listings_upcoming | DOUBLE | Booli snart till salu |
| booli_listings_for_sale | DOUBLE | Booli till salu |
| hemnet_listings_upcoming | DOUBLE | Hemnet snart till salu |
| hemnet_listings_for_sale | DOUBLE | Hemnet till salu |
| boneo_listings_upcoming | DOUBLE | Boneo snart till salu |
| boneo_listings_for_sale | DOUBLE | Boneo till salu |
| booli_reported_sales | DOUBLE | Booli rapporterade försäljningar |
| hemnet_reported_sales | DOUBLE | Hemnet rapporterade försäljningar |
| updated_at | TIMESTAMP | Senast uppdaterad |

## Hämtningsrutin (månadsvis)

Kräver inloggning på insights.booli.se. Använd `fetch-booli-insights.js`
i DevTools-konsolen eller via Claude i Chrome MCP.

### Steg 1: Initiera

```js
// Klistra in fetch-booli-insights.js i konsolen (om det inte redan är laddat)
await BooliInsights.init();
```

### Steg 2: Hämta månadsmedeltal

```js
window.__rows = await BooliInsights.query(
  'inventory_staging__competition_benchmarking',
  `SELECT 
    CAST(DATE_TRUNC('month', date) AS VARCHAR) as month,
    ROUND(AVG(booli_listings_upcoming)) as booli_upcoming,
    ROUND(AVG(booli_listings_for_sale)) as booli_for_sale,
    ROUND(AVG(booli_listings_upcoming + booli_listings_for_sale)) as booli_total,
    ROUND(AVG(hemnet_listings_upcoming)) as hemnet_upcoming,
    ROUND(AVG(hemnet_listings_for_sale)) as hemnet_for_sale,
    ROUND(AVG(hemnet_listings_upcoming + hemnet_listings_for_sale)) as hemnet_total,
    ROUND(AVG(boneo_listings_upcoming)) as boneo_upcoming,
    ROUND(AVG(boneo_listings_for_sale)) as boneo_for_sale,
    COUNT(*) as days
  FROM t 
  GROUP BY DATE_TRUNC('month', date)
  ORDER BY month`
);
window.__rows.length;
```

### Steg 3: Ladda ned som CSV

```js
BooliInsights.downloadCsv(window.__rows, 'competition_benchmarking_monthly.csv');
```

### Steg 4: Uppdatera prototyp-koparstrategi.html

Uppdatera arrayerna i `D`-objektet i `<script>`-blocket:

- `inventoryPeriods` — månadsetiketter, format `'jan 23'`
- `booliTotal`, `hemnetTotal` — totalt utbud (upcoming + for_sale)
- `booliUpcoming`, `hemnetUpcoming` — snart till salu
- `booliForSale`, `hemnetForSale` — till salu

Uppdatera även KPI-värdena i de tre `data-panel`-blocken under
rubriken "Utbudsjämförelse — grafsektion" (senaste månadens siffror
och procentuella skillnader).

## Senast hämtad

- **Datum:** 2026-04-12
- **Period:** jan 2023 → apr 2026 (40 månader, april ofullständig: 11 dagar)
- **Sparad som:** `data/competition_benchmarking_monthly.csv`

## Viktiga observationer

- **Booli totalt utbud** konsekvent ~60–80 % större än Hemnet under hela perioden.
- **Förmarknaden** driver hela skillnaden — Booli har 4–5× fler STS-annonser.
- **Säsongsmönster:** Utbudet toppar i sep–okt och bottnar i dec–jan.
- **April-data** är ofullständig (11 av ~30 dagar) — använd mars som senaste
  fullständiga månad vid rapportering.
