golden-safe

Golden Safe — KBO Intelligence Pipeline

V4G M&A Intelligence · Ventures4Growth
KBO-based succession intelligence platform for the Belgian mid-market


What this repo contains

Component Description
automation/kbo_update.py Monthly KBO Full extract ingestion pipeline
automation/generate_dashboard.py Monthly succession intelligence dashboard generator
run_monthly_kbo.bat One-click monthly workflow (download zip → ingest → dashboard → publish)
dashboards/ Generated HTML dashboards — published via GitHub Pages
sql/ Schema, views, indexes, RPC functions
docs/ Architecture and reference documentation

Monthly workflow

Step 1 — Download KBO extract
Download the latest KboOpenData_NNNN_YYYY_MM_DD_Full.zip from
statbel.fgov.be
Drop it in KBO_Inbox/

Step 2 — Run the batch script

Double-click: run_monthly_kbo.bat

The script runs automatically:

  1. Dry-run check — shows what will be processed
  2. Waits for confirmation → press Enter
  3. KBO ingest (~90 minutes)
  4. Dashboard generation (~10 seconds via fn_dashboard_stats RPC)
  5. Git commit + push → live on intel.v4g.com

Database

Supabase project: rirkgpsdcaxnowwmliof
Stack: PostgreSQL 15 · PostgREST · Supabase Storage

Core tables

Table Rows Description
bce_company_index ~1.97M All KBO enterprises (active + inactive)
bce_activity ~3.87M Filtered NACE activities (B2B only)
dim_nace_v4g 84 NACE division → V4G sector taxonomy v2.0
dim_postcode_nuts3 ~2,600 Postcode → NUTS3 region mapping
bce_corrections Manual gold record corrections
kbo_ingest_log Audit log per monthly run

Key views

View Description
vw_company_sector_enriched Base view: company + sector + lifecycle + NUTS3
mv_company_sector_enriched Materialized version — refreshed after each ingest

RPC functions

Function Returns Description
fn_dashboard_stats() JSON All dashboard KPIs in one call: lifecycle, clusters, NUTS3, age curve, extract info

Taxonomy

V4G Sector Taxonomy v2.0 — 23 sectors across 8 supergroups

Scope Meaning
CORE Strategic priority — full B2B coverage
ADJACENT Mandate-driven — include
SELECTIVE B2B filter required
OUT Out of scope (Retail B2C, Public, Primary & Extractives)

Lifecycle stages

Stage Age Sourcing action
Starter 0–4y Pipeline development
Expansion 5–9y Pipeline development
Established 10–14y Early monitoring
Mature 15–24y Monitor
Prime Cash Cow 25–39y Approach
Legacy / Succession 40y+ Urgent outreach

Dashboard

Live: http://intel.v4g.com/dashboards/
Archive: all monthly extracts preserved as standalone HTML files
Generated: python automation/generate_dashboard.py

Tab 1 — Succession Intelligence

Tab 2 — Regional Intelligence

Key numbers (Extract 309 · 2026-03-23)

Metric Value
B2B universe 885,461
Deal zone (25y+) 142,522 (16.1%)
Corporate universe 85,500
Corporate deal zone 38,596 (45.1%)

Configuration

automation/golden_safe.env — never committed to Git:

SUPABASE_URL=https://rirkgpsdcaxnowwmliof.supabase.co
SUPABASE_SERVICE_KEY=eyJ...
DB_HOST=db.rirkgpsdcaxnowwmliof.supabase.co
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=...
INBOX_DIR=C:\Users\chris\OneDrive\Documents\GitHub\golden-safe-repo\KBO_Inbox
PSQL_BIN=C:\Program Files\PostgreSQL\17\bin\psql.exe

Security notes


Changelog

Date Extract Changes
2026-03-24 309 ADMIN_SUP reclassified to ADJACENT (+73,615 companies) · MV rebuild · NUTS3 regional tab · two main dashboard tabs · fn_dashboard_stats updated with NUTS3
2026-03-23 309 Extract 309 ingested · dashboard generator v3.0 · GitHub Pages live on intel.v4g.com · run_monthly_kbo.bat
2026-02-27 283 Initial pipeline · taxonomy v2.0 · materialized view · KBO bridge