# Booli Insights – data för köparstrategin

## Hämtade dataset

- `monthly_engagement.csv` — månadsvisa aggregat från tabellen
  `activity_mart__monthly_engagement` på insights.booli.se.
  Täcker **januari 2024 – mars 2026** (27 rader).
  Kolumner:
  `year, month, month_name, total_visitors, active_logged_in_users,
  web_sessions, app_sessions, web_time_spent_sec, app_time_spent_sec,
  saved_listings, unique_users_saved_listings,
  saved_searches, unique_users_saved_searches`.

- `competition_benchmarking_monthly.csv` — månadsmedeltal från tabellen
  `inventory_staging__competition_benchmarking` på insights.booli.se.
  Täcker **januari 2023 – april 2026** (40 rader, april ofullständig).
  Kolumner:
  `month, booli_upcoming, booli_for_sale, booli_total,
  hemnet_upcoming, hemnet_for_sale, hemnet_total,
  boneo_upcoming, boneo_for_sale, days`.
  Se `fetch-competition-benchmarking.md` för hämtningsrutin.

## Så här hämtar vi mer data senare

Insights är en Evidence.dev-dashboard som renderar alla tabeller till
parquet-filer under `/data/booli_data/<tabell>/<hash>/<tabell>.parquet`
och indexerar dem i `/data/manifest.json`. Datat kräver Booli-SSO, så
allt måste köras i en inloggad webbläsarflik.

Rutinen `fetch-booli-insights.js` laddar `duckdb-wasm` från jsDelivr,
registrerar parquet-filen och exponerar ett litet API:

```js
// 1. Kör hela filen i DevTools-konsolen på valfri insights.booli.se-sida
// 2. Initiera (laddar duckdb-wasm):
await BooliInsights.init();

// 3. Lista alla tillgängliga tabeller:
await BooliInsights.listTables();

// 4. Kör SQL mot en tabell (använd alias "t" i SQL:en):
const rows = await BooliInsights.query(
  'activity_mart__monthly_engagement',
  "SELECT * FROM t WHERE year >= 2025 ORDER BY year, month"
);

// 5. Ladda ned som CSV i webbläsaren:
BooliInsights.downloadCsv(rows, 'monthly_engagement_2025.csv');
```

### Tillgängliga tabeller (från manifestet 2026-04-08)

- `acquisition_staging__lead_conversions_from_format`
- `activity_mart__daily_engagement`
- `activity_mart__daily_user_activity`
- `activity_mart__monthly_engagement`
- `booli_data_quality`
- `booli_push_statistics`
- `created_estimations`
- `inventory_staging__annual_reports`
- `inventory_staging__competition_benchmarking`
- `lead_events_attribution`
- `leads_staging__lead_conversions`
- `leasure_metrics__click_magnets`
- `product_mart__notifications_summary`
- `product_mart__saved_searches`
- `sbab_conversions`

### Via Claude (Chrome MCP)

Claude kan köra samma rutin via `javascript_tool` på den öppnade
fliken. Eftersom tool-svar är storleksbegränsade lägger Claude
resultatet på `window.__rows` och läser sedan i slice:ar, t.ex.:

```js
await BooliInsights.init();
window.__rows = await BooliInsights.query('<tabell>', '<sql>');
window.__rows.length
// → läs window.__rows.slice(0,5) osv.
```
