import { MatchStrength, MatchStatus, RiskLevel } from '../domain/enums'
import type { Match } from '../domain/match'

export const mockMatches: Match[] = [

  // ───────────────────────────────────────────────────────────────────────────
  // need-001 · Innovatech AG · OFFICE Zürich · 600–1000m² · max CHF 45/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-001',
    propertyId: 'prop-001',
    needId: 'need-001',
    matchScore: 88,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 92, softFactorScore: 85, confidenceModifier: 0.97, dataQualityModifier: 0.92, totalScore: 88 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 95, contribution: 19, explanation: '850m² liegt im Zielkorridor (600–1000m²)' },
      { criterion: 'ÖV-Anbindung', weight: 0.20, score: 90, contribution: 18, explanation: '4 Min. zur S-Bahn, Kriterium erfüllt' },
      { criterion: 'Standort', weight: 0.15, score: 88, contribution: 13.2, explanation: 'Zürich-West trifft bevorzugte Lage' },
    ],
    negativeFactors: [
      { criterion: 'Mietpreis', weight: 0.15, score: 76, contribution: 11.4, explanation: 'CHF 38/m² liegt über Wunschbudget von CHF 35/m²' },
    ],
    tradeoffs: [
      { criterion: 'Budget', concern: 'Mietpreis 8% über Budget-Maximum', severity: 'MEDIUM', mitigation: 'Verhandlungspotenzial vorhanden – Objekt leer seit 3 Monaten' },
    ],
    explainabilitySummary: 'Starker Match aufgrund idealer Lage und Fläche. Einziger Vorbehalt ist der Mietpreis, der knapp über dem Budget liegt, aber verhandelbar erscheint.',
    confidenceLevel: 0.92,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    alternativeStrategies: [
      { title: 'Kleinere Einheit im gleichen Gebäude', description: '650m² verfügbar ab Q3 2025, CHF 35/m²', expectedScore: 82 },
    ],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:00:00Z',
    updatedAt: '2025-05-10T08:00:00Z',
  },

  {
    id: 'match-002',
    propertyId: 'prop-004',
    needId: 'need-001',
    matchScore: 62,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 72, softFactorScore: 62, confidenceModifier: 0.68, dataQualityModifier: 0.55, totalScore: 62 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 78, contribution: 15.6, explanation: '1150m² überschreitet Zielkorridor leicht (600–1000m²)' },
    ],
    negativeFactors: [
      { criterion: 'Objekttyp', weight: 0.25, score: 30, contribution: 7.5, explanation: 'MIXED-Fläche – Bedarf ist OFFICE, Typ-Mismatch' },
      { criterion: 'Standort', weight: 0.20, score: 55, contribution: 11, explanation: 'Zürich Kreis 4 ist nicht Zürich-West – andere Lage' },
      { criterion: 'Mietpreis', weight: 0.15, score: 40, contribution: 6, explanation: 'CHF 52/m² ist 15% über Budget-Maximum (CHF 45/m²)' },
      { criterion: 'Datenqualität', weight: 0.10, score: 40, contribution: 4, explanation: 'Externe Quelle – Mietpreis und Verfügbarkeit nicht bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Objekttyp', concern: 'MIXED-Fläche statt reiner Bürofläche – Nutzungseinschränkungen möglich', severity: 'HIGH' },
      { criterion: 'Budget', concern: 'Mietpreis 15% über Budget-Maximum', severity: 'HIGH' },
      { criterion: 'Standort', concern: 'Kreis 4 ist nicht Zürich-West – längere Pendeldistanz für Innovatech-Team', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Schwacher Match aufgrund Typ-Mismatch (MIXED statt OFFICE), falschem Stadtteil (Kreis 4 ≠ Zürich-West) und Budgetüberschreitung von 15%.',
    confidenceLevel: 0.55,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Daten aus Drittquelle unvollständig', 'Mietpreis nicht verifiziert', 'Typ-Mismatch'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:05:00Z',
    updatedAt: '2025-05-10T08:05:00Z',
  },

  {
    id: 'match-005',
    propertyId: 'prop-007',
    needId: 'need-001',
    matchScore: 86,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 89, softFactorScore: 83, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 86 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 92, contribution: 18.4, explanation: '720m² im Zielkorridor (600–1000m²)' },
      { criterion: 'Standort', weight: 0.20, score: 90, contribution: 18, explanation: 'Zürich Oerlikon – bevorzugte Lage' },
      { criterion: 'Budget', weight: 0.15, score: 90, contribution: 13.5, explanation: 'CHF 36/m² deutlich unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Prestige', weight: 0.10, score: 72, contribution: 7.2, explanation: 'Prestige-Score 72 leicht unter Mindestanforderung 70 – ok' },
    ],
    tradeoffs: [],
    explainabilitySummary: 'Starker Match in Zürich Oerlikon. Fläche, Budget und ÖV-Anbindung erfüllen alle Hauptkriterien. Bewertung analog zu prop-001.',
    confidenceLevel: 0.91,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:20:00Z',
    updatedAt: '2025-05-10T08:20:00Z',
  },

  {
    id: 'match-006',
    propertyId: 'prop-013',
    needId: 'need-001',
    matchScore: 72,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 80, softFactorScore: 68, confidenceModifier: 0.96, dataQualityModifier: 0.92, totalScore: 72 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 88, contribution: 17.6, explanation: 'Zürich Altstetten – akzeptable Lage' },
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 45/m² exakt im Budget-Limit' },
    ],
    negativeFactors: [
      { criterion: 'Nutzungsart', weight: 0.15, score: 60, contribution: 9, explanation: 'MIXED-Fläche, Bedarf ist OFFICE – Teileignung' },
      { criterion: 'Fläche', weight: 0.20, score: 65, contribution: 13, explanation: '1300m² überschreitet Maximum von 1000m² deutlich' },
    ],
    tradeoffs: [
      { criterion: 'Nutzungsart', concern: 'Gemischt genutzte Fläche – Büroanteil nicht spezifiziert', severity: 'MEDIUM', mitigation: 'Aufteilung klären, evtl. nur Büroanteil mieten' },
    ],
    explainabilitySummary: 'Moderater Match – Lage und Budget stimmen, aber die Fläche ist zu gross und der gemischte Nutzungstyp passt nur teilweise.',
    confidenceLevel: 0.82,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Büroanteil der Gesamtfläche unklar'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:25:00Z',
    updatedAt: '2025-05-10T08:25:00Z',
  },

  {
    id: 'match-008',
    propertyId: 'prop-023',
    needId: 'need-001',
    matchScore: 62,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 85, softFactorScore: 69, confidenceModifier: 0.54, dataQualityModifier: 0.36, totalScore: 62 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 85, contribution: 17, explanation: 'Zürich-Nord / Seebach – bevorzugter Kanton ZH' },
      { criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 38/m² unter Maximum von CHF 45/m²' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 32, contribution: 4.8, explanation: '54% Signalwahrscheinlichkeit – unbestätigt' },
      { criterion: 'Datenqualität', weight: 0.10, score: 20, contribution: 2, explanation: 'Probabilistisches Signal, Felder fehlen' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Auszug von aktuellem Mieter nicht bestätigt', severity: 'HIGH', mitigation: 'Als Frühindikator beobachten' },
    ],
    explainabilitySummary: 'Gute Lage in Zürich mit passendem Budget, aber Future-Signal mit mittlerer Konfidenz. Empfehlung: Beobachten.',
    confidenceLevel: 0.46,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Auszug des Mieters nicht bestätigt', 'Daten unvollständig'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:35:00Z',
    updatedAt: '2025-05-10T08:35:00Z',
  },

  {
    id: 'match-009',
    propertyId: 'prop-015',
    needId: 'need-001',
    matchScore: 55,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 68, softFactorScore: 60, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 55 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '650m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.15, score: 90, contribution: 13.5, explanation: 'CHF 38/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.20, score: 35, contribution: 7, explanation: 'Luzern ist eine andere Stadt und ein anderer Kanton – nicht Zürich' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Luzern liegt 55 km von Zürich – kein Pendeln möglich', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Luzern passt nicht zu Zürich-West. Trotz passendem Budget und Fläche ist die Lage nicht kompatibel.',
    confidenceLevel: 0.55,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort ausserhalb bevorzugter Region'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:40:00Z',
    updatedAt: '2025-05-10T08:40:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-002 · Schweizer Logistik GmbH · LOGISTICS Basel · 1500–4000m² · max CHF 18/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-003',
    propertyId: 'prop-002',
    needId: 'need-002',
    matchScore: 91,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 94, softFactorScore: 89, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 91 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.25, score: 96, contribution: 24, explanation: '2400m² im Zielkorridor (1500–4000m²)' },
      { criterion: 'Autobahnanschluss', weight: 0.20, score: 92, contribution: 18.4, explanation: 'A2-Anschluss ca. 4 Min., Kriterium erfüllt' },
      { criterion: 'Budget', weight: 0.20, score: 88, contribution: 17.6, explanation: 'CHF 14/m² liegt unter Maximum von CHF 18/m²' },
    ],
    negativeFactors: [
      { criterion: 'Erweiterungspotenzial', weight: 0.05, score: 70, contribution: 3.5, explanation: '800m² Erweiterung möglich, aber begrenzt' },
    ],
    tradeoffs: [],
    explainabilitySummary: 'Sehr starker Match. Fläche, Anbindung und Budget passen exzellent. Hohe Datenqualität aus internem Portfolio bestätigt Verlässlichkeit.',
    confidenceLevel: 0.96,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:10:00Z',
    updatedAt: '2025-05-10T08:10:00Z',
  },

  {
    id: 'match-004',
    propertyId: 'prop-006',
    needId: 'need-002',
    matchScore: 47,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 70, softFactorScore: 40, confidenceModifier: 0.48, dataQualityModifier: 0.30, totalScore: 47 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.25, score: 85, contribution: 21.25, explanation: '3200m² im erweiterten Zielkorridor' },
      { criterion: 'Standort', weight: 0.20, score: 72, contribution: 14.4, explanation: 'Reinach BL ist eine bevorzugte Region' },
    ],
    negativeFactors: [
      { criterion: 'Confidence', weight: 0.15, score: 20, contribution: 3, explanation: 'Nur 48% Signalwahrscheinlichkeit – kein bestätigtes Objekt' },
      { criterion: 'Datenqualität', weight: 0.10, score: 15, contribution: 1.5, explanation: 'Mehrere kritische Felder fehlen, Schätzwerte' },
      { criterion: 'Timing', weight: 0.15, score: 50, contribution: 7.5, explanation: 'Verfügbarkeit erst Q2 2026, spät für Anforderung' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Probabilistisches Future-Signal – keine Garantie auf Verfügbarkeit', severity: 'HIGH', mitigation: 'Für Monitoring-Watchlist geeignet' },
    ],
    explainabilitySummary: 'Schwacher Match aufgrund hoher Unsicherheit. Das Signal ist interessant als Frühindikator, aber nicht als aktive Option geeignet.',
    confidenceLevel: 0.38,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Probabilistisches Signal ohne Bestätigung', 'Mietpreis geschätzt'],
    alternativeStrategies: [
      { title: 'Signal beobachten', description: 'Als Future-Availability-Signal auf Watchlist setzen und in 3 Monaten neu evaluieren' },
    ],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T08:15:00Z',
    updatedAt: '2025-05-10T08:15:00Z',
  },

  {
    id: 'match-010',
    propertyId: 'prop-014',
    needId: 'need-002',
    matchScore: 87,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 90, softFactorScore: 84, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 87 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.25, score: 95, contribution: 23.75, explanation: '3100m² optimal im Zielkorridor (1500–4000m²)' },
      { criterion: 'Standort', weight: 0.20, score: 82, contribution: 16.4, explanation: 'Pratteln BL – Kanton BL, direkte Nähe zu Basel' },
      { criterion: 'Budget', weight: 0.20, score: 88, contribution: 17.6, explanation: 'CHF 15/m² unter Maximum von CHF 18/m²' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.05, score: 65, contribution: 3.25, explanation: 'Nicht direkt Basel-Stadt, aber akzeptable Region' },
    ],
    tradeoffs: [],
    explainabilitySummary: 'Sehr starker Match. Logistikfläche in Pratteln erfüllt alle Hauptkriterien. Verfügbarkeit sofort, Daten vollständig.',
    confidenceLevel: 0.93,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T09:00:00Z',
    updatedAt: '2025-05-10T09:00:00Z',
  },

  {
    id: 'match-011',
    propertyId: 'prop-016',
    needId: 'need-002',
    matchScore: 93,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 95, softFactorScore: 92, confidenceModifier: 0.83, dataQualityModifier: 0.76, totalScore: 93 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.25, score: 92, contribution: 23, explanation: '2200m² im Zielkorridor' },
      { criterion: 'Standort', weight: 0.20, score: 78, contribution: 15.6, explanation: 'Muttenz BL – gleicher Kanton, gute Lage' },
      { criterion: 'Budget', weight: 0.20, score: 85, contribution: 17, explanation: 'CHF 16/m² innerhalb Budget' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 58, contribution: 5.8, explanation: 'Externe Quelle – Hallenhöhe nicht bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Hallenhöhe und Andienung aus externer Quelle – Vor-Ort-Check empfohlen', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Solider Marktinserat-Match in Muttenz. Fläche und Budget stimmen, Datenverifikation ausstehend.',
    confidenceLevel: 0.72,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Hallenhöhe nicht bestätigt', 'Externe Quelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T09:05:00Z',
    updatedAt: '2025-05-10T09:05:00Z',
  },

  {
    id: 'match-012',
    propertyId: 'prop-009',
    needId: 'need-002',
    matchScore: 55,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 74, softFactorScore: 60, confidenceModifier: 0.98, dataQualityModifier: 0.95, totalScore: 55 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.25, score: 85, contribution: 21.25, explanation: '1800m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 13/m² weit unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.20, score: 35, contribution: 7, explanation: 'Winterthur liegt ausserhalb Präferenz Basel-Region' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Winterthur statt Basel – komplett andere Region, kein A2-Anschluss', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Fläche und Preis passen hervorragend, aber Winterthur ist nicht die gewünschte Logistik-Region Basel. Nur als Alternativoption.',
    confidenceLevel: 0.82,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Standort ausserhalb Präferenzregion'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T09:10:00Z',
    updatedAt: '2025-05-10T09:10:00Z',
  },

  {
    id: 'match-013',
    propertyId: 'prop-024',
    needId: 'need-002',
    matchScore: 63,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 86, softFactorScore: 70, confidenceModifier: 0.52, dataQualityModifier: 0.35, totalScore: 63 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 95, contribution: 19, explanation: 'Basel Hafen – exakte Präferenzlage' },
      { criterion: 'Fläche', weight: 0.25, score: 88, contribution: 22, explanation: '2600m² im Zielkorridor' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 32, contribution: 4.8, explanation: 'Neubau-Signal – Fertigstellung Q2 2026' },
      { criterion: 'Datenqualität', weight: 0.10, score: 25, contribution: 2.5, explanation: 'Mieterkonditionen noch nicht bekannt' },
    ],
    tradeoffs: [
      { criterion: 'Timing', concern: 'Fertigstellung Juli 2026 – möglicherweise zu spät', severity: 'MEDIUM', mitigation: 'Voranmietung prüfen' },
    ],
    explainabilitySummary: 'Sehr gute Lage direkt am Basler Hafen. Als Neubau mit hoher Bauwahrscheinlichkeit auf Shortlist geeignet.',
    confidenceLevel: 0.44,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Fertigstellung abhängig von Baufortschritt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T09:15:00Z',
    updatedAt: '2025-05-10T09:15:00Z',
  },

  {
    id: 'match-014',
    propertyId: 'prop-029',
    needId: 'need-002',
    matchScore: 56,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 79, softFactorScore: 63, confidenceModifier: 0.46, dataQualityModifier: 0.31, totalScore: 56 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.25, score: 90, contribution: 22.5, explanation: '3500m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.20, score: 92, contribution: 18.4, explanation: 'CHF 13/m² deutlich unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Nur 50% Wahrscheinlichkeit, kein bestätigter Auszug' },
      { criterion: 'Standort', weight: 0.20, score: 60, contribution: 12, explanation: 'Frenkendorf BL – gleicher Kanton, aber nicht Basel-Stadt' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Probabilistisches Signal – Auszug unbestätigt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Gleicher Kanton, gutes Preis-Leistungs-Verhältnis, aber Future-Signal mit niedriger Konfidenz. Als Watchlist-Kandidat geeignet.',
    confidenceLevel: 0.40,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Auszug unbestätigt', 'Konditionen unbekannt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-10T09:20:00Z',
    updatedAt: '2025-05-10T09:20:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-003 · Pharma Holding AG · OFFICE Basel · 500–800m² · max CHF 40/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-015',
    propertyId: 'prop-008',
    needId: 'need-003',
    matchScore: 85,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 82, confidenceModifier: 0.97, dataQualityModifier: 0.93, totalScore: 85 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 95, contribution: 23.75, explanation: 'Basel Dreispitz – exakte Präferenzlage' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 32/m² deutlich unter Maximum CHF 40/m²' },
      { criterion: 'Prestige', weight: 0.12, score: 70, contribution: 8.4, explanation: 'Prestige 70 erfüllt Mindestanforderung' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 72, contribution: 14.4, explanation: '900m² liegt über Maximum 800m² – etwas zu gross' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: '900m² leicht über Maximum, möglicherweise Untereinheit verhandelbar', severity: 'LOW' },
    ],
    explainabilitySummary: 'Starker Match in Basel. Prestige, Budget und Lage stimmen. Fläche minimal über Wunschgrösse, aber verhandelbar.',
    confidenceLevel: 0.90,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T08:00:00Z',
    updatedAt: '2025-05-11T08:00:00Z',
  },

  {
    id: 'match-016',
    propertyId: 'prop-007',
    needId: 'need-003',
    matchScore: 52,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 72, softFactorScore: 60, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 52 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 90, contribution: 18, explanation: '720m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 36/m² unter Maximum CHF 40/m²' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Zürich statt Basel – andere Stadt, anderer Kanton' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Zürich ist nicht im Präferenzgebiet Basel/Allschwil', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Fläche und Preis stimmen, aber Zürich entspricht nicht dem Standortbedarf Basel. Nur wenn Flexibilität vorhanden.',
    confidenceLevel: 0.86,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Standortanforderung nicht erfüllt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T08:05:00Z',
    updatedAt: '2025-05-11T08:05:00Z',
  },

  {
    id: 'match-017',
    propertyId: 'prop-018',
    needId: 'need-003',
    matchScore: 52,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 62, softFactorScore: 54, confidenceModifier: 0.68, dataQualityModifier: 0.57, totalScore: 52 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 31/m² deutlich unter Maximum' },
      { criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '780m² nahe am Zielkorridor' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Bern liegt 90 km von Basel – kritisches Ausschlusskriterium' },
      { criterion: 'Datenqualität', weight: 0.10, score: 42, contribution: 4.2, explanation: 'Externe Quelle, Renovierungsstand unklar' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Bern liegt 90 km von Basel – keine Nähe zur Pharma-Industrie-Achse', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Bern liegt 90 km von Basel entfernt. Lage ist kritisches Ausschlusskriterium trotz passender Fläche und Budget.',
    confidenceLevel: 0.54,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort ausserhalb Präferenzregion', 'Externe Quelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T08:10:00Z',
    updatedAt: '2025-05-11T08:10:00Z',
  },

  {
    id: 'match-019',
    propertyId: 'prop-015',
    needId: 'need-003',
    matchScore: 42,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 56, softFactorScore: 44, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 42 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 38/m² unter Maximum CHF 40/m²' },
      { criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '650m² im Zielkorridor' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Luzern liegt ausserhalb Region Basel' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Luzern ist nicht im Präferenzgebiet, 100km von Basel', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Budget und Fläche passen, jedoch ist Luzern nicht mit dem Bedarf Raum Basel vereinbar.',
    confidenceLevel: 0.56,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort ausserhalb Präferenz'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T08:20:00Z',
    updatedAt: '2025-05-11T08:20:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-004 · Retailer Zürich AG · RETAIL Zürich · 200–500m² · max CHF 100/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-020',
    propertyId: 'prop-010',
    needId: 'need-004',
    matchScore: 91,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 94, softFactorScore: 88, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 91 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 98, contribution: 34.3, explanation: 'Zürich Löwenplatz – exakte Innenstadtlage, Topstandort' },
      { criterion: 'Fläche', weight: 0.15, score: 90, contribution: 13.5, explanation: '285m² im Zielkorridor' },
      { criterion: 'Prestige', weight: 0.15, score: 95, contribution: 14.25, explanation: 'Prestige 95 – Topstandort erfüllt Anforderung' },
    ],
    negativeFactors: [
      { criterion: 'Budget', weight: 0.15, score: 80, contribution: 12, explanation: 'CHF 88/m² unter Maximum CHF 100/m², leicht over avg' },
    ],
    tradeoffs: [],
    explainabilitySummary: 'Exzellenter Match. Zürich Löwenplatz ist ein Erstklasstandort mit höchster Passantenfrequenz. Alle Kriterien erfüllt.',
    confidenceLevel: 0.96,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T09:00:00Z',
    updatedAt: '2025-05-11T09:00:00Z',
  },

  {
    id: 'match-021',
    propertyId: 'prop-017',
    needId: 'need-004',
    matchScore: 91,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 94, softFactorScore: 90, confidenceModifier: 0.81, dataQualityModifier: 0.74, totalScore: 91 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 94, contribution: 32.9, explanation: 'Zürich Löwenstrasse – Innenstadtlage' },
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 95/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 61, contribution: 6.1, explanation: 'Mietpreis aus externer Quelle, nicht bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Mietpreis und Vertragsdauer nicht bestätigt', severity: 'MEDIUM', mitigation: 'Verifizierung beim Vermieter empfohlen' },
    ],
    explainabilitySummary: 'Sehr gute Lage in Zürich Innenstadt. Datenverifikation ausstehend, aber Standort und Preis stimmen.',
    confidenceLevel: 0.72,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Mietpreis nicht final bestätigt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T09:05:00Z',
    updatedAt: '2025-05-11T09:05:00Z',
  },

  {
    id: 'match-022',
    propertyId: 'prop-025',
    needId: 'need-004',
    matchScore: 62,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 85, softFactorScore: 69, confidenceModifier: 0.50, dataQualityModifier: 0.33, totalScore: 62 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 90, contribution: 31.5, explanation: 'Zürich Niederdorf – Innenstadtlage, gute Passantenfrequenz' },
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 92/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: '55% Signalwahrscheinlichkeit – unbestätigt' },
      { criterion: 'Datenqualität', weight: 0.10, score: 20, contribution: 2, explanation: 'Future-Signal, kritische Felder fehlen' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Probabilistisches Signal – Auszug noch nicht bestätigt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Gute Lage im Niederdorf, aber Future-Signal mit mittlerer Konfidenz. Empfehlung: Beobachten und bei Bestätigung priorisieren.',
    confidenceLevel: 0.42,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Auszug unbestätigt', 'Future-Signal'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T09:10:00Z',
    updatedAt: '2025-05-11T09:10:00Z',
  },

  {
    id: 'match-023',
    propertyId: 'prop-003',
    needId: 'need-004',
    matchScore: 84,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 89, softFactorScore: 82, confidenceModifier: 0.77, dataQualityModifier: 0.69, totalScore: 84 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 95/m² unter Maximum CHF 100/m²' },
      { criterion: 'Prestige', weight: 0.15, score: 92, contribution: 13.8, explanation: 'Berner Bahnhofstrasse – Top-Prestige' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Bern statt Zürich Innenstadt – andere Stadt, anderer Kanton' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Bern ist nicht Zürich – Laufkundschaft aus anderem Einzugsgebiet', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Gutes Retail-Objekt in Bern, aber der Bedarf ist explizit Zürich Innenstadt. Standort ist ausschlaggebend für Ablehnung.',
    confidenceLevel: 0.60,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort nicht im Zielgebiet'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T09:15:00Z',
    updatedAt: '2025-05-11T09:15:00Z',
  },

  {
    id: 'match-024',
    propertyId: 'prop-021',
    needId: 'need-004',
    matchScore: 72,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 81, softFactorScore: 70, confidenceModifier: 0.72, dataQualityModifier: 0.62, totalScore: 72 },
    positiveFactors: [
      { criterion: 'Prestige', weight: 0.15, score: 94, contribution: 14.1, explanation: 'Rue du Rhône Genf – sehr hoher Prestige-Score' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Genf ist nicht Zürich – 280km Entfernung' },
      { criterion: 'Budget', weight: 0.15, score: 68, contribution: 10.2, explanation: 'CHF 112/m² liegt 12% über Maximum CHF 100/m²' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Genf ist eine komplett andere Stadt als Zürich', severity: 'HIGH' },
      { criterion: 'Budget', concern: 'Mietpreis 12% über Maximum', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Abgelehnt. Genf und Zürich sind nicht kompatibel – weder geografisch noch bezüglich des angestrebten Kundenkreises. Budget ebenfalls überschritten.',
    confidenceLevel: 0.52,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Falscher Standort', 'Budget überschritten'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T09:20:00Z',
    updatedAt: '2025-05-11T09:20:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-005 · TechStart GmbH · OFFICE Zug/Zürich · 300–700m² · max CHF 48/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-025',
    propertyId: 'prop-012',
    needId: 'need-005',
    matchScore: 91,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 94, softFactorScore: 88, confidenceModifier: 0.97, dataQualityModifier: 0.93, totalScore: 91 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zug Zentrum – exakt bevorzugte Lage' },
      { criterion: 'Fläche', weight: 0.20, score: 92, contribution: 18.4, explanation: '550m² im Zielkorridor (300–700m²)' },
      { criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 42/m² klar unter Maximum CHF 48/m²' },
    ],
    negativeFactors: [],
    tradeoffs: [],
    explainabilitySummary: 'Exzellenter Match. Zug Zentrum trifft exakt den Standortwunsch. Budget, Fläche und Ausbaugrad erfüllen alle Anforderungen.',
    confidenceLevel: 0.92,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T10:00:00Z',
    updatedAt: '2025-05-11T10:00:00Z',
  },

  {
    id: 'match-026',
    propertyId: 'prop-007',
    needId: 'need-005',
    matchScore: 83,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 86, softFactorScore: 80, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 83 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Zürich Oerlikon – in bevorzugter Stadt Zürich' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 36/m² deutlich unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 72, contribution: 14.4, explanation: '720m² überschreitet Maximum von 700m² leicht' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: 'Leicht über Flächenmaximum – ggf. Untereinheit verhandelbar', severity: 'LOW' },
    ],
    explainabilitySummary: 'Sehr guter Match in Zürich Oerlikon. Lage und Budget stimmen, Fläche minimal über Maximum.',
    confidenceLevel: 0.89,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T10:05:00Z',
    updatedAt: '2025-05-11T10:05:00Z',
  },

  {
    id: 'match-027',
    propertyId: 'prop-020',
    needId: 'need-005',
    matchScore: 74,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 74 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zug – exakte Präferenzstadt' },
      { criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 44/m² unter Maximum CHF 48/m²' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 60, contribution: 6, explanation: 'Externe Quelle, Vertragsdauer fehlt' },
      { criterion: 'Fläche', weight: 0.20, score: 68, contribution: 13.6, explanation: '820m² deutlich über Maximum 700m²' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: 'Fläche 17% über Maximum – Untereinheit prüfen', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Guter Standort Zug, Budget akzeptabel. Fläche überschreitet Maximum aber Datenqualität eingeschränkt.',
    confidenceLevel: 0.68,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Fläche zu gross', 'Externe Quelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T10:10:00Z',
    updatedAt: '2025-05-11T10:10:00Z',
  },

  {
    id: 'match-028',
    propertyId: 'prop-001',
    needId: 'need-005',
    matchScore: 78,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 81, softFactorScore: 75, confidenceModifier: 0.97, dataQualityModifier: 0.92, totalScore: 78 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Zürich-West – bevorzugte Stadt Zürich' },
      { criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 38/m² unter Maximum CHF 48/m²' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 62, contribution: 12.4, explanation: '850m² überschreitet Maximum 700m² deutlich' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: '850m² sind 21% über Maximum – Untereinheit oder Kompromiss nötig', severity: 'MEDIUM', mitigation: '650m²-Untereinheit im selben Gebäude verfügbar' },
    ],
    explainabilitySummary: 'Zürich-West passt gut. Fläche zu gross, aber Untereinheit verfügbar. Budget und Ausbaugrad sehr gut.',
    confidenceLevel: 0.88,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Fläche über Maximum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T10:15:00Z',
    updatedAt: '2025-05-11T10:15:00Z',
  },

  {
    id: 'match-030',
    propertyId: 'prop-022',
    needId: 'need-005',
    matchScore: 73,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 82, softFactorScore: 71, confidenceModifier: 0.71, dataQualityModifier: 0.62, totalScore: 73 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 100, contribution: 20, explanation: 'CHF 28/m² deutlich unter Maximum' },
      { criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '700m² exakt an der Obergrenze' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'St. Gallen ist nicht Zug oder Zürich – andere Kantone' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'St. Gallen liegt 80km von Zug entfernt – nicht im Präferenzgebiet', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Budget hervorragend, aber Standort St. Gallen passt nicht zu Zug/Zürich. Nur als äusserste Alternative.',
    confidenceLevel: 0.55,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort ausserhalb Präferenz'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T10:25:00Z',
    updatedAt: '2025-05-11T10:25:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-006 · Lager & Spedition AG · LOGISTICS Winterthur · 1200–3000m² · max CHF 16/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-031',
    propertyId: 'prop-009',
    needId: 'need-006',
    matchScore: 93,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 96, softFactorScore: 90, confidenceModifier: 0.98, dataQualityModifier: 0.95, totalScore: 93 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Winterthur Töss – exakte Präferenzlage' },
      { criterion: 'Fläche', weight: 0.30, score: 92, contribution: 27.6, explanation: '1800m² im Zielkorridor (1200–3000m²)' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 13/m² unter Maximum CHF 16/m²' },
    ],
    negativeFactors: [],
    tradeoffs: [],
    explainabilitySummary: 'Ausgezeichneter Match. Winterthur Töss trifft exakt den Standortwunsch. Alle Logistik-Kriterien erfüllt, hervorragende Datenqualität.',
    confidenceLevel: 0.96,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T11:00:00Z',
    updatedAt: '2025-05-11T11:00:00Z',
  },

  {
    id: 'match-032',
    propertyId: 'prop-002',
    needId: 'need-006',
    matchScore: 56,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 76, softFactorScore: 62, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 56 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.30, score: 90, contribution: 27, explanation: '2400m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 14/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Basel liegt ausserhalb Winterthur-Region, andere Stadt' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Basel ist nicht im Präferenzgebiet Winterthur', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Sehr gute Logistikfläche in Basel, aber falscher Standort. Nur wenn Winterthur nicht verfügbar.',
    confidenceLevel: 0.82,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Standort ausserhalb Region'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T11:05:00Z',
    updatedAt: '2025-05-11T11:05:00Z',
  },

  {
    id: 'match-033',
    propertyId: 'prop-014',
    needId: 'need-006',
    matchScore: 52,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 72, softFactorScore: 58, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 52 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 92, contribution: 18.4, explanation: 'CHF 15/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Pratteln BL ist nicht Winterthur – andere Stadt, anderer Kanton' },
      { criterion: 'Fläche', weight: 0.30, score: 68, contribution: 20.4, explanation: '3100m² überschreitet Maximum 3000m² leicht' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Pratteln liegt im Raum Basel, nicht im Raum Winterthur', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Falscher Standort für Winterthur-Bedarf. Nur als letzter Ausweg wenn Präferenz verhandelbar.',
    confidenceLevel: 0.85,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Standort nicht kompatibel'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T11:10:00Z',
    updatedAt: '2025-05-11T11:10:00Z',
  },

  {
    id: 'match-034',
    propertyId: 'prop-016',
    needId: 'need-006',
    matchScore: 88,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 92, softFactorScore: 87, confidenceModifier: 0.79, dataQualityModifier: 0.73, totalScore: 88 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.30, score: 88, contribution: 26.4, explanation: '2200m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.20, score: 85, contribution: 17, explanation: 'CHF 16/m² exakt im Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Muttenz liegt im Raum Basel, nicht Winterthur' },
      { criterion: 'Datenqualität', weight: 0.10, score: 58, contribution: 5.8, explanation: 'Hallenhöhe nicht verifiziert' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Muttenz BL ist nicht die Präferenz Winterthur', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Fläche und Budget stimmen, aber Muttenz ist 70km von Winterthur entfernt. Nicht kompatibel.',
    confidenceLevel: 0.58,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort nicht kompatibel', 'Hallenhöhe unklar'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T11:15:00Z',
    updatedAt: '2025-05-11T11:15:00Z',
  },

  {
    id: 'match-035',
    propertyId: 'prop-029',
    needId: 'need-006',
    matchScore: 43,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 66, softFactorScore: 53, confidenceModifier: 0.46, dataQualityModifier: 0.31, totalScore: 43 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 13/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Frenkendorf BL nicht im Präferenzgebiet Winterthur' },
      { criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Future-Signal 50% Wahrscheinlichkeit' },
      { criterion: 'Fläche', weight: 0.30, score: 65, contribution: 19.5, explanation: '3500m² über Maximum 3000m²' },
    ],
    tradeoffs: [
      { criterion: 'Kombination', concern: 'Falscher Standort + Future-Signal + zu grosse Fläche', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Drei kritische Faktoren: falscher Standort, zu grosse Fläche und Future-Signal. Keine Empfehlung.',
    confidenceLevel: 0.36,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Standort', 'Zu grosse Fläche', 'Future-Signal'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T11:20:00Z',
    updatedAt: '2025-05-11T11:20:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-007 · Creative Studios AG · MIXED Zürich/Bern · 800–1500m² · max CHF 55/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-036',
    propertyId: 'prop-013',
    needId: 'need-007',
    matchScore: 89,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 92, softFactorScore: 86, confidenceModifier: 0.96, dataQualityModifier: 0.92, totalScore: 89 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 95, contribution: 19, explanation: 'Zürich Altstetten – bevorzugte Lage Zürich' },
      { criterion: 'Nutzungsart', weight: 0.20, score: 100, contribution: 20, explanation: 'MIXED – exakt passend für Creative Studios' },
      { criterion: 'Fläche', weight: 0.20, score: 90, contribution: 18, explanation: '1300m² im Zielkorridor (800–1500m²)' },
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 45/m² klar unter Maximum CHF 55/m²' },
    ],
    negativeFactors: [],
    tradeoffs: [],
    explainabilitySummary: 'Hervorragender Match. Gemischte Fläche in Zürich Altstetten erfüllt alle Anforderungen für Kreativagentur.',
    confidenceLevel: 0.90,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T12:00:00Z',
    updatedAt: '2025-05-11T12:00:00Z',
  },

  {
    id: 'match-037',
    propertyId: 'prop-004',
    needId: 'need-007',
    matchScore: 76,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 90, softFactorScore: 74, confidenceModifier: 0.68, dataQualityModifier: 0.55, totalScore: 76 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 92, contribution: 18.4, explanation: 'Zürich Kreis 4 – gute Kreativlage in Zürich' },
      { criterion: 'Nutzungsart', weight: 0.20, score: 100, contribution: 20, explanation: 'MIXED-Objekt passt exakt' },
      { criterion: 'Budget', weight: 0.15, score: 88, contribution: 13.2, explanation: 'CHF 52/m² unter Maximum CHF 55/m²' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Externe Quelle – Daten unvollständig' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Vertragsdauer und Nebenkosten nicht bekannt', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Guter Match in Zürich. MIXED-Objekt passt, Budget stimmt. Datenverifikation nötig.',
    confidenceLevel: 0.64,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Externe Quelle', 'Fehlende Felder'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T12:05:00Z',
    updatedAt: '2025-05-11T12:05:00Z',
  },

  {
    id: 'match-038',
    propertyId: 'prop-007',
    needId: 'need-007',
    matchScore: 62,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 76, softFactorScore: 65, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 62 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 90, contribution: 18, explanation: 'Zürich Oerlikon – bevorzugte Lage' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 36/m² deutlich unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Nutzungsart', weight: 0.20, score: 60, contribution: 12, explanation: 'OFFICE-Fläche, Bedarf ist MIXED – Teileignung' },
      { criterion: 'Fläche', weight: 0.20, score: 60, contribution: 12, explanation: '720m² unter Minimum von 800m²' },
    ],
    tradeoffs: [
      { criterion: 'Nutzungsart', concern: 'Bürofläche erlaubt ggf. keine gemischte Nutzung', severity: 'MEDIUM', mitigation: 'Nutzungsbewilligung prüfen' },
    ],
    explainabilitySummary: 'Guter Standort und Budget, aber OFFICE-Fläche ist nicht ideal für MIXED-Bedarf und Fläche unter Minimum.',
    confidenceLevel: 0.80,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Nutzungsart nicht optimal', 'Fläche unter Minimum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T12:10:00Z',
    updatedAt: '2025-05-11T12:10:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-008 · Berner Produzenten GmbH · PRODUCTION Bern · 2000–4000m² · max CHF 14/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-039',
    propertyId: 'prop-011',
    needId: 'need-008',
    matchScore: 92,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 95, softFactorScore: 89, confidenceModifier: 0.98, dataQualityModifier: 0.95, totalScore: 92 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 100, contribution: 20, explanation: 'Bern Brünnen – exakte Präferenzlage' },
      { criterion: 'Fläche', weight: 0.30, score: 95, contribution: 28.5, explanation: '2800m² optimal im Zielkorridor (2000–4000m²)' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 12/m² unter Maximum CHF 14/m²' },
    ],
    negativeFactors: [],
    tradeoffs: [],
    explainabilitySummary: 'Ausgezeichneter Match. Produktionshalle Bern Brünnen erfüllt alle Anforderungen. Verfügbar sofort, vollständige Daten.',
    confidenceLevel: 0.94,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T13:00:00Z',
    updatedAt: '2025-05-11T13:00:00Z',
  },

  {
    id: 'match-040',
    propertyId: 'prop-027',
    needId: 'need-008',
    matchScore: 65,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.48, dataQualityModifier: 0.32, totalScore: 65 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 82, contribution: 16.4, explanation: 'Münchenbuchsee – Kanton Bern, nahe Präferenzlage' },
      { criterion: 'Fläche', weight: 0.30, score: 88, contribution: 26.4, explanation: '2200m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 12/m² unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Future-Signal 52% Wahrscheinlichkeit' },
      { criterion: 'Datenqualität', weight: 0.10, score: 20, contribution: 2, explanation: 'Kritische Felder fehlen' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Auszug noch unbestätigt – Verfügbarkeit August 2026 unsicher', severity: 'HIGH', mitigation: 'Monitoring empfohlen, in 3 Monaten neu evaluieren' },
    ],
    explainabilitySummary: 'Guter Standort im Kanton Bern, Fläche und Budget passen. Aber als Future-Signal mit mittlerer Konfidenz auf Watchlist.',
    confidenceLevel: 0.40,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Future-Signal', 'Auszug unbestätigt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T13:05:00Z',
    updatedAt: '2025-05-11T13:05:00Z',
  },

  {
    id: 'match-041',
    propertyId: 'prop-006',
    needId: 'need-008',
    matchScore: 44,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 67, softFactorScore: 51, confidenceModifier: 0.48, dataQualityModifier: 0.30, totalScore: 44 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.30, score: 85, contribution: 25.5, explanation: '3200m² im Zielkorridor' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.20, score: 60, contribution: 12, explanation: 'Reinach BL – anderer Kanton, nicht Bern' },
      { criterion: 'Konfidenz', weight: 0.15, score: 25, contribution: 3.75, explanation: 'Future-Signal 48% Wahrscheinlichkeit' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Reinach BL liegt im Kanton BL, nicht im Kanton BE', severity: 'MEDIUM' },
      { criterion: 'Verfügbarkeit', concern: 'Future-Signal – kein bestätigtes Objekt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Fläche passt, aber Standort (Kanton BL statt BE) und Future-Signal sind Risikofaktoren. Schwacher Match.',
    confidenceLevel: 0.36,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Anderer Kanton', 'Future-Signal'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T13:10:00Z',
    updatedAt: '2025-05-11T13:10:00Z',
  },

  {
    id: 'match-042',
    propertyId: 'prop-019',
    needId: 'need-008',
    matchScore: 85,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 90, softFactorScore: 83, confidenceModifier: 0.77, dataQualityModifier: 0.71, totalScore: 85 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 13/m² unter Maximum CHF 14/m²' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.20, score: 35, contribution: 7, explanation: 'Basel ist nicht Bern – andere Stadt, anderer Kanton' },
      { criterion: 'Fläche', weight: 0.30, score: 62, contribution: 18.6, explanation: '1900m² leicht unter Minimum 2000m²' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Basel BS liegt 100km von Bern entfernt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Falscher Standort und Fläche leicht unter Minimum. Budget stimmt, reicht aber nicht aus. Schwacher Match.',
    confidenceLevel: 0.54,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Falscher Standort', 'Fläche unter Minimum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T13:15:00Z',
    updatedAt: '2025-05-11T13:15:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-009 · Geneva Commerce SA · RETAIL Genf · 150–400m² · max CHF 120/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-043',
    propertyId: 'prop-021',
    needId: 'need-009',
    matchScore: 83,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.SHORTLISTED,
    scoreBreakdown: { hardMatchScore: 97, softFactorScore: 81, confidenceModifier: 0.70, dataQualityModifier: 0.59, totalScore: 83 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Genf Rue du Rhône – exakter Standortwunsch' },
      { criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 112/m² unter Maximum CHF 120/m²' },
      { criterion: 'Prestige', weight: 0.15, score: 94, contribution: 14.1, explanation: 'Prestige 94 – erfüllt hohe Anforderung 88' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 59, contribution: 5.9, explanation: 'Externe Quelle – Konditionen nicht bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Mietpreis und Vertragsdauer aus externer Quelle', severity: 'MEDIUM', mitigation: 'Direktkontakt mit Anbieter empfohlen' },
    ],
    explainabilitySummary: 'Bester verfügbarer Match für Genf. Standort, Prestige und Budget stimmen. Datenverifikation ausstehend.',
    confidenceLevel: 0.66,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Konditionen nicht bestätigt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T14:00:00Z',
    updatedAt: '2025-05-11T14:00:00Z',
  },

  {
    id: 'match-044',
    propertyId: 'prop-010',
    needId: 'need-009',
    matchScore: 45,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 59, softFactorScore: 46, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 45 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.15, score: 90, contribution: 13.5, explanation: '285m² im Zielkorridor' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 88/m² deutlich unter Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Zürich ist nicht Genf – andere Stadt, 280km' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Zürich und Genf haben komplett verschiedene Kundenpotenziale', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Sehr gute Qualität in Zürich, aber falscher Standort für einen Genfer Retailer. Nicht geeignet.',
    confidenceLevel: 0.86,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Falscher Standort'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T14:05:00Z',
    updatedAt: '2025-05-11T14:05:00Z',
  },

  {
    id: 'match-045',
    propertyId: 'prop-017',
    needId: 'need-009',
    matchScore: 76,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 85, softFactorScore: 74, confidenceModifier: 0.73, dataQualityModifier: 0.64, totalScore: 76 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 95/m² unter Maximum CHF 120/m²' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Zürich statt Genf – komplett andere Stadt' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Zürich ist geografisch und kulturell nicht der gesuchte Genfer Markt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Budget und Qualität ok, aber Zürich ist kein Ersatz für Genf. Standort nicht erfüllt.',
    confidenceLevel: 0.62,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Falscher Standort'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T14:10:00Z',
    updatedAt: '2025-05-11T14:10:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-010 · St.Galler Büros AG · OFFICE St.Gallen · 400–800m² · max CHF 35/m²
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-046',
    propertyId: 'prop-022',
    needId: 'need-010',
    matchScore: 92,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.APPROVED,
    scoreBreakdown: { hardMatchScore: 95, softFactorScore: 91, confidenceModifier: 0.82, dataQualityModifier: 0.74, totalScore: 92 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.28, score: 100, contribution: 28, explanation: 'St. Gallen Centrum – exakter Standortwunsch' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 28/m² deutlich unter Maximum CHF 35/m²' },
      { criterion: 'Fläche', weight: 0.22, score: 90, contribution: 19.8, explanation: '700m² im Zielkorridor (400–800m²)' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 58, contribution: 5.8, explanation: 'Externe Quelle – Ausbauqualität nicht bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Ausbauqualität aus externer Quelle nicht verifiziert', severity: 'MEDIUM', mitigation: 'Vor-Ort-Besichtigung empfohlen' },
    ],
    explainabilitySummary: 'Guter Match in St. Gallen Centrum. Alle Hauptkriterien erfüllt. Datenverifikation ausstehend.',
    confidenceLevel: 0.72,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Externe Quelle', 'Ausbauqualität unklar'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T15:00:00Z',
    updatedAt: '2025-05-11T15:00:00Z',
  },

  {
    id: 'match-048',
    propertyId: 'prop-007',
    needId: 'need-010',
    matchScore: 53,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 68, softFactorScore: 56, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 53 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.22, score: 90, contribution: 19.8, explanation: '720m² im Zielkorridor' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Zürich Oerlikon ist nicht St. Gallen – andere Stadt, anderer Kanton' },
      { criterion: 'Budget', weight: 0.20, score: 72, contribution: 14.4, explanation: 'CHF 36/m² liegt 3% über Maximum CHF 35/m²' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Zürich ist nicht im Präferenzgebiet Ostschweiz', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Falscher Standort und Budget leicht über Maximum. Zürich ist keine Alternative für St. Gallen.',
    confidenceLevel: 0.86,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Standort ausserhalb Ostschweiz', 'Budget knapp über Maximum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T15:10:00Z',
    updatedAt: '2025-05-11T15:10:00Z',
  },

  {
    id: 'match-049',
    propertyId: 'prop-015',
    needId: 'need-010',
    matchScore: 46,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 60, softFactorScore: 48, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 46 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.22, score: 88, contribution: 19.36, explanation: '650m² im Zielkorridor' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Luzern statt St. Gallen – andere Stadt, anderer Kanton' },
      { criterion: 'Budget', weight: 0.20, score: 74, contribution: 14.8, explanation: 'CHF 38/m² liegt 8% über Maximum CHF 35/m²' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Luzern ist nicht Ostschweiz / St. Gallen Region', severity: 'HIGH' },
      { criterion: 'Budget', concern: 'CHF 3/m² über Maximum', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Fläche ok, aber Luzern entspricht nicht der St. Gallen-Region und Budget leicht überschritten.',
    confidenceLevel: 0.58,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort nicht kompatibel', 'Budget leicht über Maximum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T15:15:00Z',
    updatedAt: '2025-05-11T15:15:00Z',
  },

  {
    id: 'match-050',
    propertyId: 'prop-018',
    needId: 'need-010',
    matchScore: 38,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 52, softFactorScore: 40, confidenceModifier: 0.68, dataQualityModifier: 0.57, totalScore: 38 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 100, contribution: 20, explanation: 'CHF 31/m² deutlich unter Maximum CHF 35/m²' },
      { criterion: 'Fläche', weight: 0.22, score: 85, contribution: 18.7, explanation: '780m² nahe Zielobergrenze' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Bern ist nicht St. Gallen – weit ausserhalb Präferenzgebiet' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Bern liegt 180km von St. Gallen entfernt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Budget sehr gut, aber Bern entspricht nicht dem Bedarf Ostschweiz. Kein sinnvoller Match.',
    confidenceLevel: 0.54,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Falscher Standort'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T15:20:00Z',
    updatedAt: '2025-05-11T15:20:00Z',
  },

  {
    id: 'match-051',
    propertyId: 'prop-008',
    needId: 'need-010',
    matchScore: 42,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 56, softFactorScore: 44, confidenceModifier: 0.97, dataQualityModifier: 0.93, totalScore: 42 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 32/m² unter Maximum CHF 35/m²' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Basel ist nicht St. Gallen – anderer Kanton' },
      { criterion: 'Fläche', weight: 0.22, score: 65, contribution: 14.3, explanation: '900m² überschreitet Maximum 800m² deutlich' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Basel liegt in Nordwestschweiz, nicht in Ostschweiz', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Gutes Portfolio-Objekt in Basel, aber falscher Standort und Fläche zu gross. Nicht geeignet.',
    confidenceLevel: 0.84,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Falscher Standort', 'Fläche zu gross'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-11T15:25:00Z',
    updatedAt: '2025-05-11T15:25:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // Cross-need additional matches
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-052',
    propertyId: 'prop-020',
    needId: 'need-003',
    matchScore: 41,
    matchStrength: MatchStrength.WEAK,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 55, softFactorScore: 43, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 41 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 85, contribution: 17, explanation: '820m² nahe am Zielkorridor (500–800m²)' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Zug ist nicht Basel – anderer Kanton' },
      { criterion: 'Budget', weight: 0.20, score: 72, contribution: 14.4, explanation: 'CHF 44/m² liegt 10% über Maximum CHF 40/m²' },
    ],
    tradeoffs: [
      { criterion: 'Kombination', concern: 'Falscher Standort und Budget überschritten', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Falscher Standort (Zug statt Basel) und Budget überschritten. Kein Match empfehlenswert.',
    confidenceLevel: 0.58,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort nicht kompatibel', 'Budget über Maximum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-12T08:00:00Z',
    updatedAt: '2025-05-12T08:00:00Z',
  },

  {
    id: 'match-053',
    propertyId: 'prop-023',
    needId: 'need-005',
    matchScore: 65,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.54, dataQualityModifier: 0.36, totalScore: 65 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Zürich-Nord – bevorzugte Stadt Zürich' },
      { criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 38/m² unter Maximum CHF 48/m²' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: 'Future-Signal 54% Wahrscheinlichkeit' },
      { criterion: 'Fläche', weight: 0.20, score: 70, contribution: 14, explanation: '850m² leicht über Maximum 700m²' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Future-Signal – kein bestätigtes Objekt', severity: 'HIGH' },
    ],
    explainabilitySummary: 'Gute Zürich-Lage und Budget passend. Als Future-Signal mit mittlerer Konfidenz und leicht zu grosser Fläche beobachten.',
    confidenceLevel: 0.46,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Future-Signal', 'Fläche leicht über Maximum'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-12T08:05:00Z',
    updatedAt: '2025-05-12T08:05:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-001 · Innovatech AG · OFFICE Zürich-West — new external/maison matches
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-050',
    propertyId: 'prop-031',
    needId: 'need-001',
    matchScore: 91,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 95, softFactorScore: 88, confidenceModifier: 0.72, dataQualityModifier: 0.64, totalScore: 91 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zürich-West trifft bevorzugte Lage exakt' },
      { criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '780m² im Zielkorridor (600–1000m²)' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 35/m² liegt klar unter Maximum (CHF 45/m²)' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Externe Quelle – Konditionen nicht endgültig bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Direktinserat aus Drittquelle – Verfügbarkeit noch verifizieren', severity: 'LOW', mitigation: 'Direkte Anfrage beim Anbieter empfohlen' },
    ],
    explainabilitySummary: 'Optimaler Match: Zürich-West, 780m², CHF 35/m² – alle drei Hauptkriterien vollständig erfüllt. Einziger Vorbehalt ist die externe Datenquelle.',
    confidenceLevel: 0.72,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Daten aus Drittquelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-15T08:00:00Z',
    updatedAt: '2025-05-15T08:00:00Z',
  },

  {
    id: 'match-051',
    propertyId: 'prop-032',
    needId: 'need-001',
    matchScore: 84,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 82, confidenceModifier: 0.71, dataQualityModifier: 0.62, totalScore: 84 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '720m² im Zielkorridor (600–1000m²)' },
      { criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 40/m² unter Maximum (CHF 45/m²)' },
      { criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Kreis 5 direkt angrenzend an Zürich-West' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 52, contribution: 5.2, explanation: 'Externe Quelle – Ausbaustandard nicht bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Kreis 5 ist nicht Zürich-West, aber angrenzend und ähnliches Profil', severity: 'LOW' },
      { criterion: 'Datenqualität', concern: 'Ausbaustandard aus externer Quelle – Besichtigung empfohlen', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Starker Match: Fläche und Budget erfüllt, Kreis 5 angrenzend an bevorzugte Lage. Maison Work-Plattform mit bewährten Objektqualitäten.',
    confidenceLevel: 0.71,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Daten aus externer Quelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-15T08:05:00Z',
    updatedAt: '2025-05-15T08:05:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-002 · Schweizer Logistik GmbH · LOGISTICS Basel — new silver external
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-056',
    propertyId: 'prop-036',
    needId: 'need-002',
    matchScore: 86,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 92, softFactorScore: 84, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 86 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 98, contribution: 24.5, explanation: 'Basel Kleinhüningen – exakt im Zielgebiet' },
      { criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '2600m² im Zielkorridor (1500–4000m²)' },
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 15/m² unter Maximum (CHF 18/m²)' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 50, contribution: 5, explanation: 'Hallenhöhe und Konditionen nicht final bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Hallenhöhe aus Drittquelle – kritisch für Logistiknutzung', severity: 'MEDIUM', mitigation: 'Hallenhöhe vor Vertragsabschluss verifizieren' },
    ],
    explainabilitySummary: 'Starker Match: Basel Kleinhüningen exakt, 2600m², CHF 15/m². Hallenhöhe sollte vor Vertragsabschluss bestätigt werden.',
    confidenceLevel: 0.70,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Hallenhöhe nicht bestätigt', 'Daten aus Drittquelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-15T08:10:00Z',
    updatedAt: '2025-05-15T08:10:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-011 · Stadtladen Bern GmbH · RETAIL Bern Innenstadt — all new matches
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-052',
    propertyId: 'prop-003',
    needId: 'need-011',
    matchScore: 91,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 96, softFactorScore: 90, confidenceModifier: 0.71, dataQualityModifier: 0.62, totalScore: 91 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Bern Innenstadt – exakt bevorzugte Lage' },
      { criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '320m² im Zielkorridor (200–400m²)' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 95/m² deutlich unter Maximum (CHF 150/m²)' },
    ],
    negativeFactors: [
      { criterion: 'Datenqualität', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Externe Quelle – Schaufensterfront nicht explizit bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Datenqualität', concern: 'Must-have "Schaufensterfront" aus externer Quelle – Besichtigung nötig', severity: 'LOW', mitigation: 'Vor-Ort-Besichtigung zur Bestätigung empfohlen' },
    ],
    explainabilitySummary: 'Optimaler Match: Bern Innenstadt exakt, 320m², CHF 95/m² – 37% unter Budget. Alle Hauptkriterien erfüllt.',
    confidenceLevel: 0.71,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Schaufensterfront nicht bestätigt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-18T08:00:00Z',
    updatedAt: '2025-05-18T08:00:00Z',
  },

  {
    id: 'match-053',
    propertyId: 'prop-033',
    needId: 'need-011',
    matchScore: 83,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 82, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 83 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Marktgasse – exakt in bevorzugter Innenstadtlage' },
      { criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '260m² im Zielkorridor (200–400m²)' },
      { criterion: 'Prestige', weight: 0.15, score: 88, contribution: 13.2, explanation: 'Hochfrequentierte Fussgängerzone – Laufkundschaft garantiert' },
    ],
    negativeFactors: [
      { criterion: 'Budget', weight: 0.15, score: 80, contribution: 12, explanation: 'CHF 120/m² nahe am Maximum (CHF 150/m²)' },
      { criterion: 'Datenqualität', weight: 0.10, score: 52, contribution: 5.2, explanation: 'Mietpreis nicht final bestätigt' },
    ],
    tradeoffs: [
      { criterion: 'Budget', concern: 'CHF 120/m² lässt wenig Spielraum zum Maximum', severity: 'LOW' },
      { criterion: 'Datenqualität', concern: 'Mietpreis aus externer Quelle – Verhandlung möglich', severity: 'MEDIUM', mitigation: 'Direktanfrage empfohlen' },
    ],
    explainabilitySummary: 'Starker Match: Marktgasse/Innenstadt, 260m², CHF 120/m² im Budget. Maison Work-Plattform mit verifizierten Retailflächen.',
    confidenceLevel: 0.70,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Mietpreis nicht final bestätigt'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-18T08:05:00Z',
    updatedAt: '2025-05-18T08:05:00Z',
  },

  {
    id: 'match-054',
    propertyId: 'prop-034',
    needId: 'need-011',
    matchScore: 74,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 82, softFactorScore: 74, confidenceModifier: 0.68, dataQualityModifier: 0.56, totalScore: 74 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '340m² im Zielkorridor (200–400m²)' },
      { criterion: 'Budget', weight: 0.15, score: 94, contribution: 14.1, explanation: 'CHF 110/m² unter Maximum (CHF 150/m²)' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.35, score: 75, contribution: 26.25, explanation: 'Lorraine ist Bern, aber nicht Innenstadt – weniger Laufkundschaft' },
      { criterion: 'Timing', weight: 0.10, score: 80, contribution: 8, explanation: 'Verfügbar ab 01.01.2026 – leicht nach Wunschzeitraum' },
      { criterion: 'Datenqualität', weight: 0.10, score: 48, contribution: 4.8, explanation: 'Schaufensterfront nicht bestätigt – kritisches Must-have' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Lorraine ist kein Fussgängerzonenviertel – geringere Laufkundschaft als Innenstadt', severity: 'MEDIUM' },
      { criterion: 'Timing', concern: 'Ab Januar 2026 – 4 Monate nach gewünschtem Einzug', severity: 'LOW' },
    ],
    explainabilitySummary: 'Moderater Match: Bern Lorraine, 340m², Budget ok. Abzug wegen Abweichung von Innenstadt-Lage und fehlender Schaufensterfront-Bestätigung.',
    confidenceLevel: 0.68,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Schaufensterfront nicht bestätigt', 'Daten aus Drittquelle'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-18T08:10:00Z',
    updatedAt: '2025-05-18T08:10:00Z',
  },

  {
    id: 'match-055',
    propertyId: 'prop-035',
    needId: 'need-011',
    matchScore: 66,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.55, dataQualityModifier: 0.36, totalScore: 66 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Bern Altstadt Gerechtigkeitsgasse – Premiumlage' },
      { criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '290m² im Zielkorridor (200–400m²)' },
    ],
    negativeFactors: [
      { criterion: 'Konfidenz', weight: 0.15, score: 38, contribution: 5.7, explanation: 'Future-Signal mit 62% Wahrscheinlichkeit – kein bestätigtes Objekt' },
      { criterion: 'Datenqualität', weight: 0.10, score: 25, contribution: 2.5, explanation: 'Mietpreis nur geschätzt, kein offizielles Inserat' },
    ],
    tradeoffs: [
      { criterion: 'Verfügbarkeit', concern: 'Probabilistisches Signal – kein bestätigtes Inserat', severity: 'HIGH', mitigation: 'Früher Erstkontakt mit Eigentümer kann Vorteil sichern' },
      { criterion: 'Timing', concern: 'Frühestens April 2026 verfügbar', severity: 'MEDIUM' },
    ],
    explainabilitySummary: 'Premiumlage Gerechtigkeitsgasse, aber nur probabilistisches Signal. Nur weiterverfolgen, wenn Frühkontakt mit Eigentümer möglich.',
    confidenceLevel: 0.55,
    riskLevel: RiskLevel.HIGH,
    uncertaintyIndicators: ['Probabilistisches Signal', 'Mietpreis geschätzt', 'Kein bestätigtes Inserat'],
    organizationId: 'org-wincasa',
    createdAt: '2025-05-18T08:15:00Z',
    updatedAt: '2025-05-18T08:15:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // Schattenmarkt-Freigabe — verified contract signals from Verwaltung
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-060',
    propertyId: 'prop-001',
    needId: 'need-001',
    matchScore: 78,
    matchStrength: MatchStrength.MODERATE,
    resultType: 'FUTURE_AVAILABILITY',
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 90, softFactorScore: 82, confidenceModifier: 0.92, dataQualityModifier: 0.92, totalScore: 78 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zürich-West trifft bevorzugte Lage exakt' },
      { criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '850m² im Zielkorridor (600–1000m²)' },
      { criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 38/m² liegt unter Maximum (CHF 45/m²)' },
      { criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende aus ERP bestätigt — keine Schätzung' },
    ],
    negativeFactors: [
      { criterion: 'Verfügbarkeit', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Objekt erst ab Oktober 2026 verfügbar — 5 Monate Vorlaufzeit' },
    ],
    tradeoffs: [
      { criterion: 'Timing', concern: 'Einzug frühestens Oktober 2026 möglich', severity: 'LOW', mitigation: 'Frühzeitige Reservierungsanfrage sichert Priorität' },
    ],
    explainabilitySummary: 'Idealer Match: Zürich-West exakt, 850m², im Budget. Vertragsende verifiziert — Verwaltung hat Einheit für Pre-Market freigegeben.',
    confidenceLevel: 0.92,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Verfügbar ab Oktober 2026'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-20T08:00:00Z',
    updatedAt: '2026-05-20T08:00:00Z',
  },

  {
    id: 'match-061',
    propertyId: 'prop-007',
    needId: 'need-001',
    matchScore: 71,
    matchStrength: MatchStrength.MODERATE,
    resultType: 'FUTURE_AVAILABILITY',
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 82, softFactorScore: 74, confidenceModifier: 0.92, dataQualityModifier: 0.94, totalScore: 71 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '720m² im Zielkorridor (600–1000m²)' },
      { criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 36/m² unter Maximum (CHF 45/m²)' },
      { criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende und Breakout-Option aus ERP bestätigt' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.25, score: 80, contribution: 20, explanation: 'Zürich Oerlikon — nicht Zürich-West, aber gute ÖV-Anbindung' },
      { criterion: 'Verfügbarkeit', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Breakout-Option September 2026, Vertragsende November 2026' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Oerlikon ist Zürich, aber nicht Zürich-West — andere Quartierscharakter', severity: 'MEDIUM' },
      { criterion: 'Timing', concern: 'Früheste Verfügbarkeit über Breakout-Option September 2026', severity: 'LOW', mitigation: 'Breakout-Option aktiv — frühzeitige Anfrage möglich' },
    ],
    explainabilitySummary: 'Guter Match: Zürich Oerlikon, 720m², im Budget. Vertragsende verifiziert, Breakout-Option ab September 2026. Lage nicht Zürich-West.',
    confidenceLevel: 0.92,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Lage Oerlikon statt Zürich-West', 'Verfügbar ab September 2026'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-20T08:05:00Z',
    updatedAt: '2026-05-20T08:05:00Z',
  },

  {
    id: 'match-062',
    propertyId: 'prop-002',
    needId: 'need-002',
    matchScore: 84,
    matchStrength: MatchStrength.STRONG,
    resultType: 'FUTURE_AVAILABILITY',
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 94, softFactorScore: 86, confidenceModifier: 0.92, dataQualityModifier: 0.96, totalScore: 84 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 98, contribution: 24.5, explanation: 'Basel Kleinhüningen — exakt im Zielgebiet' },
      { criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '2400m² im Zielkorridor (1500–4000m²)' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 14/m² weit unter Maximum (CHF 18/m²)' },
      { criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende aus ERP bestätigt — keine Schätzung' },
    ],
    negativeFactors: [
      { criterion: 'Verfügbarkeit', weight: 0.10, score: 60, contribution: 6, explanation: 'Objekt erst ab September 2026 verfügbar' },
    ],
    tradeoffs: [
      { criterion: 'Timing', concern: 'Verfügbar ab September 2026 — 4 Monate Vorlaufzeit', severity: 'LOW', mitigation: 'Frühe Reservierungsanfrage sichert Priorität vor Vertragsende' },
    ],
    explainabilitySummary: 'Starker Match: Basel Kleinhüningen exakt, 2400m², CHF 14/m². Vertragsende September 2026 aus ERP bestätigt — höchste Verlässlichkeit.',
    confidenceLevel: 0.92,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Verfügbar ab September 2026'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-20T08:10:00Z',
    updatedAt: '2026-05-20T08:10:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // need-011 additional — prop-037 VERIFIED_PORTFOLIO Retail Bern Innenstadt
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-063',
    propertyId: 'prop-037',
    needId: 'need-011',
    matchScore: 82,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 90, softFactorScore: 88, confidenceModifier: 0.96, dataQualityModifier: 0.91, totalScore: 82 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 97, contribution: 34, explanation: 'Bern Innenstadt / Spitalgasse — Fussgängerzone, Laufkundschaft, exakt gewünschte Lage' },
      { criterion: 'Fläche', weight: 0.15, score: 95, contribution: 14.25, explanation: '270m² liegt im Zielkorridor (200–400m²)' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 90/m²/Monat deutlich unter Maximum (CHF 150/m²)' },
      { criterion: 'Prestige', weight: 0.15, score: 92, contribution: 13.8, explanation: 'Prestige 92 übertrifft Mindestanforderung (80)' },
    ],
    negativeFactors: [
      { criterion: 'Timing', weight: 0.10, score: 45, contribution: 4.5, explanation: 'Verfügbar Oktober 2026 — später als gewünschtes Move-in bis März 2026' },
    ],
    tradeoffs: [
      { criterion: 'Timing', concern: 'Verfügbar Oktober 2026 — ausserhalb des Wunschzeitfensters', severity: 'MEDIUM', mitigation: 'Verwaltung kann bei Interesse Early-Access ab Sommer 2026 prüfen' },
    ],
    explainabilitySummary: 'Sehr guter Match: Spitalgasse Bern Innenstadt, 270m², CHF 90/m²/Mt. — ideal für Laufkundschaft. Einziger Vorbehalt ist das Timing (Oktober 2026).',
    confidenceLevel: 0.96,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Verfügbarkeit Oktober 2026'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-20T08:15:00Z',
    updatedAt: '2026-05-20T08:15:00Z',
  },

  {
    id: 'match-064',
    propertyId: 'prop-037',
    needId: 'need-011',
    matchScore: 60,
    matchStrength: MatchStrength.MODERATE,
    resultType: 'FUTURE_AVAILABILITY',
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 78, softFactorScore: 80, confidenceModifier: 0.96, dataQualityModifier: 0.91, totalScore: 60 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.35, score: 97, contribution: 34, explanation: 'Bern Spitalgasse — Fussgängerzone, Schaufensterfront bestätigt' },
      { criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende Oktober 2026 aus ERP bestätigt' },
      { criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 90/m²/Mt. weit unter Budget-Maximum' },
    ],
    negativeFactors: [
      { criterion: 'Timing', weight: 0.10, score: 20, contribution: 2, explanation: 'Erst ab Oktober 2026 verfügbar — ausserhalb des Wunschzeitfensters' },
      { criterion: 'Signal-Abschlag', weight: 0.15, score: 30, contribution: 4.5, explanation: 'Pre-Market: Vertragsende noch nicht abgelaufen' },
    ],
    tradeoffs: [
      { criterion: 'Timing', concern: 'Oktober 2026 liegt nach gewünschtem Move-in (März 2026)', severity: 'HIGH', mitigation: 'Frühzeitige Kontaktaufnahme sichert bevorzugte Behandlung' },
    ],
    explainabilitySummary: 'Pre-Market Signal: Spitalgasse Bern, Vertragsende Oktober 2026 aus ERP bestätigt. Lage perfekt, aber Timing ausserhalb des Wunschfensters.',
    confidenceLevel: 0.96,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Verfügbarkeit Oktober 2026', 'Mieterin hat noch aktiven Vertrag'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-20T08:20:00Z',
    updatedAt: '2026-05-20T08:20:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // DIRECT LISTING MATCHES (prop-d01 … prop-d06)
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-065',
    propertyId: 'prop-d01',
    needId: 'need-005',
    matchScore: 83,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 80, confidenceModifier: 0.80, dataQualityModifier: 0.78, totalScore: 83 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.17, score: 95, contribution: 16.2, explanation: '320m² liegt im Zielkorridor (300–700m²)' },
      { criterion: 'Standort', weight: 0.22, score: 90, contribution: 19.8, explanation: 'Zürich Altstetten — bevorzugte Region Zürich' },
      { criterion: 'Budget', weight: 0.17, score: 88, contribution: 14.9, explanation: 'CHF 380/m²/J unter Maximum CHF 576/m²/J' },
    ],
    negativeFactors: [
      { criterion: 'ÖV', weight: 0.10, score: 65, contribution: 6.5, explanation: '8 Minuten zur S-Bahn — leicht über Wunsch-Maximum (10 Min.)' },
    ],
    tradeoffs: [],
    explainabilitySummary: 'Sehr guter Match für TechStart GmbH: Fläche, Standort Zürich und Budget passen. Minimaler ÖV-Abzug.',
    confidenceLevel: 0.80,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2026-04-15T09:00:00Z',
    updatedAt: '2026-04-15T09:00:00Z',
  },

  {
    id: 'match-066',
    propertyId: 'prop-d01',
    needId: 'need-001',
    matchScore: 64,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 68, softFactorScore: 72, confidenceModifier: 0.80, dataQualityModifier: 0.78, totalScore: 64 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.18, score: 88, contribution: 15.8, explanation: 'Zürich Altstetten trifft bevorzugte Region' },
      { criterion: 'Budget', weight: 0.14, score: 90, contribution: 12.6, explanation: 'CHF 380/m²/J unter Maximum CHF 540/m²/J' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.18, score: 40, contribution: 7.2, explanation: '320m² unterschreitet Minimum von 600m² erheblich' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: '320m² — halb so gross wie Mindestbedarf (600m²)', severity: 'HIGH', mitigation: 'Evtl. Erweiterungsoptionen im Gebäude prüfen' },
    ],
    explainabilitySummary: 'Standort und Budget passen für Innovatech AG, aber Fläche deutlich zu klein. Nur als Notfall-Option.',
    confidenceLevel: 0.80,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Fläche unter Minimum'],
    organizationId: 'org-wincasa',
    createdAt: '2026-04-15T09:05:00Z',
    updatedAt: '2026-04-15T09:05:00Z',
  },

  {
    id: 'match-067',
    propertyId: 'prop-d02',
    needId: 'need-002',
    matchScore: 66,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 70, softFactorScore: 78, confidenceModifier: 0.85, dataQualityModifier: 0.82, totalScore: 66 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.18, score: 98, contribution: 17.6, explanation: 'Pratteln — explizit bevorzugte Region für Schweizer Logistik GmbH' },
      { criterion: 'Budget', weight: 0.18, score: 95, contribution: 17.1, explanation: 'CHF 145/m²/J weit unter Maximum CHF 216/m²/J' },
      { criterion: 'Hallenhöhe', weight: 0.10, score: 90, contribution: 9.0, explanation: '6.5m Hallenhöhe — Mindestanforderung 6m erfüllt' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.23, score: 22, contribution: 5.1, explanation: '580m² vs. Minimum 1500m² — erhebliche Unterdeckung' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: 'Nur 39% des Mindestbedarfs gedeckt', severity: 'HIGH', mitigation: 'Kombinierbar mit benachbarten Einheiten falls verfügbar' },
    ],
    explainabilitySummary: 'Idealer Standort und Preis für Schweizer Logistik GmbH — Fläche reicht aber nicht aus.',
    confidenceLevel: 0.85,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Fläche zu gering'],
    organizationId: 'org-wincasa',
    createdAt: '2026-04-20T10:00:00Z',
    updatedAt: '2026-04-20T10:00:00Z',
  },

  {
    id: 'match-068',
    propertyId: 'prop-d03',
    needId: 'need-005',
    matchScore: 61,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 65, softFactorScore: 70, confidenceModifier: 0.78, dataQualityModifier: 0.74, totalScore: 61 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.17, score: 100, contribution: 17.0, explanation: 'CHF 295/m²/J deutlich unter Maximum CHF 576/m²/J' },
      { criterion: 'Ausbau', weight: 0.08, score: 85, contribution: 6.8, explanation: 'Vollausbau trifft "Moderner Ausbau"-Anforderung' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.22, score: 30, contribution: 6.6, explanation: 'Bern liegt ausserhalb bevorzugter Regionen Zürich/Zug' },
      { criterion: 'Fläche', weight: 0.17, score: 62, contribution: 10.5, explanation: '240m² leicht unter Minimum 300m²' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Bern liegt nicht in Zürich/Zug — TechStart GmbH hat keine Niederlassung in Bern', severity: 'MEDIUM', mitigation: 'Falls Remote-Team Bern ausgebaut wird, attraktive Option' },
    ],
    explainabilitySummary: 'Gutes Budget-Match für TechStart, aber Standort Bern ist nicht ihre bevorzugte Region.',
    confidenceLevel: 0.78,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort ausserhalb Präferenz'],
    organizationId: 'org-wincasa',
    createdAt: '2026-04-22T11:00:00Z',
    updatedAt: '2026-04-22T11:00:00Z',
  },

  {
    id: 'match-069',
    propertyId: 'prop-d04',
    needId: 'need-004',
    matchScore: 62,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 68, softFactorScore: 72, confidenceModifier: 0.72, dataQualityModifier: 0.68, totalScore: 62 },
    positiveFactors: [
      { criterion: 'Budget', weight: 0.12, score: 100, contribution: 12.0, explanation: 'CHF 360/m²/J weit unter Maximum CHF 1200/m²/J' },
      { criterion: 'Schaufensterfront', weight: 0.12, score: 100, contribution: 12.0, explanation: 'Schaufensterfront vorhanden — Pflichtkriterium erfüllt' },
      { criterion: 'Erdgeschoss', weight: 0.15, score: 100, contribution: 15.0, explanation: 'EG-Lage wie gefordert' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.20, score: 32, contribution: 6.4, explanation: 'Winterthur vs. Zürich Innenstadt — andere Stadt' },
      { criterion: 'Fläche', weight: 0.10, score: 55, contribution: 5.5, explanation: '185m² leicht unter Minimum 200m²' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Winterthur Stadtzentrum ≠ Zürich Innenstadt', severity: 'MEDIUM', mitigation: 'Winterthur hat hohe Fussgängerfrequenz, günstigere Miete' },
    ],
    explainabilitySummary: 'Gute Retail-Attribute, aber Winterthur ist nicht das gesuchte Zürich-Innenstadt-Format.',
    confidenceLevel: 0.72,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort differiert'],
    organizationId: 'org-wincasa',
    createdAt: '2026-02-15T14:00:00Z',
    updatedAt: '2026-02-15T14:00:00Z',
  },

  {
    id: 'match-070',
    propertyId: 'prop-d05',
    needId: 'need-002',
    matchScore: 81,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 85, softFactorScore: 82, confidenceModifier: 0.88, dataQualityModifier: 0.85, totalScore: 81 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.18, score: 98, contribution: 17.6, explanation: 'Muttenz — explizit bevorzugte Region für Schweizer Logistik GmbH' },
      { criterion: 'Budget', weight: 0.18, score: 100, contribution: 18.0, explanation: 'CHF 130/m²/J deutlich unter Maximum CHF 216/m²/J' },
      { criterion: 'Hallenhöhe', weight: 0.10, score: 100, contribution: 10.0, explanation: '9m — deutlich über Mindestanforderung 6m' },
      { criterion: 'Ladelucken', weight: 0.08, score: 100, contribution: 8.0, explanation: '4 Ladelucken vorhanden — Anforderung erfüllt' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.23, score: 65, contribution: 14.9, explanation: '1200m² leicht unter Minimum 1500m² (-20%)' },
    ],
    tradeoffs: [
      { criterion: 'Fläche', concern: '1200m² vs. Minimum 1500m² — 20% Unterdeckung', severity: 'LOW', mitigation: 'Erweiterungspotenzial auf Nachbargrundstück vorhanden' },
    ],
    explainabilitySummary: 'Starker Logistik-Match: Muttenz, Hallenhöhe, Budget und Ladelucken passen. Fläche leicht unter Minimum.',
    confidenceLevel: 0.88,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-01T08:00:00Z',
    updatedAt: '2026-05-01T08:00:00Z',
  },

  {
    id: 'match-071',
    propertyId: 'prop-d06',
    needId: 'need-005',
    matchScore: 70,
    matchStrength: MatchStrength.MODERATE,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 75, softFactorScore: 72, confidenceModifier: 0.70, dataQualityModifier: 0.65, totalScore: 70 },
    positiveFactors: [
      { criterion: 'Fläche', weight: 0.17, score: 95, contribution: 16.2, explanation: '450m² liegt im Zielkorridor (300–700m²)' },
      { criterion: 'Budget', weight: 0.17, score: 100, contribution: 17.0, explanation: 'CHF 260/m²/J deutlich unter Maximum CHF 576/m²/J' },
    ],
    negativeFactors: [
      { criterion: 'Standort', weight: 0.22, score: 42, contribution: 9.2, explanation: 'Luzern liegt ausserhalb bevorzugter Regionen Zürich/Zug/Baar' },
    ],
    tradeoffs: [
      { criterion: 'Standort', concern: 'Luzern ist 45 Min. von Zürich entfernt', severity: 'MEDIUM', mitigation: 'Attraktiver Preis und S-Bahn-Direktverbindung könnten Kompromiss sein' },
    ],
    explainabilitySummary: 'Fläche und Budget passen sehr gut für TechStart GmbH. Luzern ist nicht ihre Wunschregion, aber preislich attraktiv.',
    confidenceLevel: 0.70,
    riskLevel: RiskLevel.MEDIUM,
    uncertaintyIndicators: ['Standort ausserhalb Präferenz', 'Inserat inaktiv'],
    organizationId: 'org-wincasa',
    createdAt: '2026-01-15T09:00:00Z',
    updatedAt: '2026-01-15T09:00:00Z',
  },

  // ───────────────────────────────────────────────────────────────────────────
  // Direct listings — Strong matches (>80%) ensuring all 6 have ≥1 STRONG
  // ───────────────────────────────────────────────────────────────────────────

  {
    id: 'match-072',
    propertyId: 'prop-d02',
    needId: 'need-012',
    matchScore: 85,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 88, softFactorScore: 84, confidenceModifier: 0.90, dataQualityModifier: 0.87, totalScore: 85 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.20, score: 98, contribution: 19.6, explanation: 'Pratteln — explizit bevorzugte Region für Gewerbe Solutions AG' },
      { criterion: 'Budget', weight: 0.18, score: 100, contribution: 18.0, explanation: 'CHF 145/m²/J deutlich unter Maximum CHF 168/m²/J' },
      { criterion: 'Fläche', weight: 0.22, score: 90, contribution: 19.8, explanation: '580m² liegt ideal im Zielkorridor (400–750m²)' },
      { criterion: 'Lkw-Zufahrt', weight: 0.10, score: 100, contribution: 10.0, explanation: 'Lkw-Zufahrt vorhanden — Pflichtkriterium erfüllt' },
    ],
    negativeFactors: [
      { criterion: 'Hallenhöhe', weight: 0.08, score: 70, contribution: 5.6, explanation: 'Angabe Hallenhöhe nicht vollständig dokumentiert' },
    ],
    tradeoffs: [
      { criterion: 'Hallenhöhe', concern: 'Angabe Hallenhöhe unvollständig — Besichtigung nötig', severity: 'LOW', mitigation: 'Vor Mietabschluss Vor-Ort-Prüfung empfohlen' },
    ],
    explainabilitySummary: 'Ausgezeichneter Standort und Preis-Leistungs-Verhältnis für Gewerbe Solutions AG. Pratteln ist die Wunschregion, Fläche und Budget passen sehr gut.',
    confidenceLevel: 0.90,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-10T08:00:00Z',
    updatedAt: '2026-05-10T08:00:00Z',
  },

  {
    id: 'match-073',
    propertyId: 'prop-d03',
    needId: 'need-013',
    matchScore: 84,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 87, softFactorScore: 83, confidenceModifier: 0.88, dataQualityModifier: 0.85, totalScore: 84 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.25, score: 96, contribution: 24.0, explanation: 'Bern Bollwerk — perfekter Fit mit Bern Innenstadt / Bahnhof-Nähe' },
      { criterion: 'Budget', weight: 0.18, score: 100, contribution: 18.0, explanation: 'CHF 295/m²/J unter Maximum CHF 360/m²/J' },
      { criterion: 'Fläche', weight: 0.18, score: 92, contribution: 16.6, explanation: '240m² liegt gut im Korridor (180–320m²)' },
      { criterion: 'ÖV', weight: 0.09, score: 100, contribution: 9.0, explanation: 'Hauptbahnhof Bern < 5 Min zu Fuss' },
    ],
    negativeFactors: [
      { criterion: 'Konferenzraum', weight: 0.06, score: 60, contribution: 3.6, explanation: 'Konferenzraumsituation nicht explizit dokumentiert' },
    ],
    tradeoffs: [],
    explainabilitySummary: 'Starke Übereinstimmung: Bern Bollwerk trifft genau die Anforderungen von Bern Consulting AG — Lage, Preis und Fläche passen.',
    confidenceLevel: 0.88,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: [],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-10T09:00:00Z',
    updatedAt: '2026-05-10T09:00:00Z',
  },

  {
    id: 'match-074',
    propertyId: 'prop-d04',
    needId: 'need-014',
    matchScore: 82,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 86, softFactorScore: 80, confidenceModifier: 0.84, dataQualityModifier: 0.82, totalScore: 82 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.22, score: 97, contribution: 21.3, explanation: 'Winterthur Stadthausstrasse — Wunschlage für Winterthur Handel GmbH' },
      { criterion: 'Schaufensterfront', weight: 0.12, score: 100, contribution: 12.0, explanation: 'Schaufensterfront vorhanden — Pflichtkriterium erfüllt' },
      { criterion: 'Erdgeschoss', weight: 0.12, score: 100, contribution: 12.0, explanation: 'EG-Lage wie gefordert' },
      { criterion: 'Budget', weight: 0.14, score: 100, contribution: 14.0, explanation: 'CHF 360/m²/J deutlich unter Maximum CHF 480/m²/J' },
    ],
    negativeFactors: [
      { criterion: 'Fläche', weight: 0.12, score: 68, contribution: 8.2, explanation: '185m² leicht unter Minimum 150m², aber am unteren Rand' },
      { criterion: 'Inaktiv', weight: 0.04, score: 0, contribution: 0, explanation: 'Inserat derzeit inaktiv — Verfügbarkeit zu klären' },
    ],
    tradeoffs: [
      { criterion: 'Status', concern: 'Inserat inaktiv — Verfügbarkeit muss bestätigt werden', severity: 'LOW', mitigation: 'Direkter Kontakt mit Eigentümer empfohlen' },
    ],
    explainabilitySummary: 'Winterthur Handel GmbH findet hier genau die gesuchte Retailfläche am richtigen Ort. Status zu klären.',
    confidenceLevel: 0.84,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Inserat inaktiv'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-10T10:00:00Z',
    updatedAt: '2026-05-10T10:00:00Z',
  },

  {
    id: 'match-075',
    propertyId: 'prop-d06',
    needId: 'need-015',
    matchScore: 83,
    matchStrength: MatchStrength.STRONG,
    status: MatchStatus.PENDING_REVIEW,
    scoreBreakdown: { hardMatchScore: 86, softFactorScore: 82, confidenceModifier: 0.86, dataQualityModifier: 0.84, totalScore: 83 },
    positiveFactors: [
      { criterion: 'Standort', weight: 0.22, score: 95, contribution: 20.9, explanation: 'Luzern Zürichstrasse — Wunschlage für Luzern Advisory GmbH' },
      { criterion: 'Fläche', weight: 0.19, score: 96, contribution: 18.2, explanation: '450m² liegt ideal im Korridor (350–600m²)' },
      { criterion: 'Budget', weight: 0.18, score: 100, contribution: 18.0, explanation: 'CHF 260/m²/J klar unter Maximum CHF 312/m²/J' },
      { criterion: 'ÖV', weight: 0.08, score: 88, contribution: 7.0, explanation: 'Gute S-Bahn-Anbindung Luzern Zentrum' },
    ],
    negativeFactors: [
      { criterion: 'Inaktiv', weight: 0.04, score: 0, contribution: 0, explanation: 'Inserat derzeit inaktiv — Bezugsdatum offen' },
    ],
    tradeoffs: [
      { criterion: 'Status', concern: 'Inserat inaktiv — Aktivierung und Verfügbarkeit zu klären', severity: 'LOW', mitigation: 'Direkte Anfrage an Eigentümer empfohlen' },
    ],
    explainabilitySummary: 'Sehr guter Match für Luzern Advisory GmbH: Lage, Fläche und Budget passen ausgezeichnet. Inserat-Status zu klären.',
    confidenceLevel: 0.86,
    riskLevel: RiskLevel.LOW,
    uncertaintyIndicators: ['Inserat inaktiv'],
    organizationId: 'org-wincasa',
    createdAt: '2026-05-10T11:00:00Z',
    updatedAt: '2026-05-10T11:00:00Z',
  },
]
