# Landvex Datamodell — De Tre Looparna ## 1. Obesvarade Frågor-loggen (Efterfrågeloopen) ```sql CREATE TABLE unanswered_questions ( id UUID PRIMARY KEY, question_text TEXT NOT NULL, customer_id UUID, vertical VARCHAR(50), geography VARCHAR(100), willingness_to_pay DECIMAL(10,2), confidence_required DECIMAL(3,2), timestamp TIMESTAMPTZ DEFAULT NOW(), resolved BOOLEAN DEFAULT FALSE, resolution_method VARCHAR(20), -- 'model', 'human', 'partner' resolution_cost DECIMAL(10,2), -- KPI-derivat days_to_resolve INT, revenue_potential DECIMAL(10,2) ); ``` ## 2. Sensor-nätverk (Utbudsloopen) ```sql CREATE TABLE sensor_network ( id UUID PRIMARY KEY, zoomer_id UUID, geography VARCHAR(100), acceptance_rate DECIMAL(5,2), avg_completion_time_hours DECIMAL(6,2), churn_30d BOOLEAN, credit_earnings_30d DECIMAL(10,2), -- Dynamisk prissättning current_credit_multiplier DECIMAL(3,2) DEFAULT 1.0, supply_tension_score DECIMAL(5,2) ); ``` ## 3. Modell-träning (Modellloopen) ```sql CREATE TABLE model_training ( id UUID PRIMARY KEY, mission_id UUID, uncertainty_score DECIMAL(5,4), demand_score DECIMAL(5,4), allocation_score DECIMAL(5,4), -- uncertainty * demand source_type VARCHAR(20), -- 'satellite', 'partner', 'human' cost_per_example DECIMAL(10,2), model_version VARCHAR(20), confidence_improvement DECIMAL(5,4), timestamp TIMESTAMPTZ DEFAULT NOW() ); ``` ## 4. Answer Rate-baslinje ```sql CREATE TABLE answer_rate_metrics ( date DATE PRIMARY KEY, total_questions INT, answered_by_model INT, answered_by_human INT, unanswered INT, answer_rate DECIMAL(5,2), median_time_to_truth_hours DECIMAL(6,2), cost_per_answer DECIMAL(10,2) ); ``` ## Dashboard Queries ### Answer Rate Trend ```sql SELECT date_trunc('week', date) as week, avg(answer_rate) as avg_answer_rate, avg(median_time_to_truth_hours) as avg_ttt FROM answer_rate_metrics WHERE date >= NOW() - INTERVAL '12 weeks' GROUP BY 1 ORDER BY 1; ``` ### Top Obesvarade (Roadmap) ```sql SELECT vertical, geography, COUNT(*) as count, AVG(willingness_to_pay) as avg_wtp FROM unanswered_questions WHERE resolved = FALSE AND timestamp >= NOW() - INTERVAL '30 days' GROUP BY 1, 2 ORDER BY count DESC LIMIT 20; ``` ### Supply Tension Heatmap ```sql SELECT geography, AVG(supply_tension_score) as tension, AVG(current_credit_multiplier) as multiplier FROM sensor_network WHERE churn_30d = FALSE GROUP BY 1 ORDER BY tension DESC; ```