// data.jsx — Seed data for ImmoBot prototype // German real estate listings (Kauf + Miete), AI evaluations, searches, notifications // ─── Helpers ──────────────────────────────────────────────────────────── const fmtPrice = (n) => n.toLocaleString('de-DE') + ' €'; const fmtPriceShort = (n) => n >= 1000 ? (n/1000).toFixed(0).replace('.', ',') + 'k €' : n + ' €'; const fmtArea = (n) => n.toLocaleString('de-DE') + ' m²'; const fmtDate = (d) => { const dt = d instanceof Date ? d : new Date(d); return dt.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' }); }; const fmtDateTime = (d) => { const dt = d instanceof Date ? d : new Date(d); return dt.toLocaleDateString('de-DE') + ', ' + dt.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' }); }; const fmtRelative = (d) => { const diff = (Date.now() - new Date(d).getTime()) / 1000; if (diff < 60) return 'gerade eben'; if (diff < 3600) return `vor ${Math.floor(diff/60)} Min.`; if (diff < 86400) return `vor ${Math.floor(diff/3600)} Std.`; if (diff < 604800) return `vor ${Math.floor(diff/86400)} Tagen`; return fmtDate(d); }; // ─── Listings ─────────────────────────────────────────────────────────── // Real Unsplash photo URLs (apartments, German cities, interiors) const photoSets = { altbau: [ 'https://images.unsplash.com/photo-1505873242700-f289a29e1e0f?w=1200&q=80', 'https://images.unsplash.com/photo-1493809842364-78817add7ffb?w=1200&q=80', 'https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=1200&q=80', 'https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1200&q=80', ], modern: [ 'https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=1200&q=80', 'https://images.unsplash.com/photo-1560448204-603b3fc33ddc?w=1200&q=80', 'https://images.unsplash.com/photo-1484154218962-a197022b5858?w=1200&q=80', 'https://images.unsplash.com/photo-1565183997392-2f6f122e5912?w=1200&q=80', ], loft: [ 'https://images.unsplash.com/photo-1522708323590-d24dbb6b0267?w=1200&q=80', 'https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=1200&q=80', 'https://images.unsplash.com/photo-1600566753190-17f0baa2a6c3?w=1200&q=80', 'https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?w=1200&q=80', ], cozy: [ 'https://images.unsplash.com/photo-1493809842364-78817add7ffb?w=1200&q=80', 'https://images.unsplash.com/photo-1554995207-c18c203602cb?w=1200&q=80', 'https://images.unsplash.com/photo-1502005229762-cf1b2da7c5d6?w=1200&q=80', 'https://images.unsplash.com/photo-1493809842364-78817add7ffb?w=1200&q=80', ], villa: [ 'https://images.unsplash.com/photo-1564013799919-ab600027ffc6?w=1200&q=80', 'https://images.unsplash.com/photo-1613977257363-707ba9348227?w=1200&q=80', 'https://images.unsplash.com/photo-1580587771525-78b9dba3b914?w=1200&q=80', 'https://images.unsplash.com/photo-1600596542815-ffad4c1539a9?w=1200&q=80', ], cityview: [ 'https://images.unsplash.com/photo-1480714378408-67cf0d13bc1b?w=1200&q=80', 'https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=1200&q=80', 'https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1200&q=80', 'https://images.unsplash.com/photo-1600210491892-03d54c0aaf87?w=1200&q=80', ], }; const LISTINGS = [ { id: 'l1', title: 'Charmante Altbau-Wohnung mit Stuckdecken', price: 489000, area: 87, rooms: 3, floor: '2. OG', baujahr: 1908, city: 'Berlin', district: 'Prenzlauer Berg', plz: '10405', address: 'Knaackstraße 47', platform: 'immoscout24', type: 'kauf', photos: photoSets.altbau, nebenkosten: 285, kaltmiete: null, provisionsfrei: true, energieklasse: 'D', description: 'Wunderschöne Altbauwohnung im Herzen von Prenzlauer Berg. Hohe Decken (3,20 m), originaler Dielenboden, Stuckverzierungen erhalten. Helle Räume nach Süd-West, ruhiger Innenhof. Bad mit Wanne und Fenster. Einbauküche neuwertig. Sanierter Altbau, gepflegtes Treppenhaus mit Aufzug. Wohnberechtigungsschein nicht erforderlich.', features: ['Altbau', 'Stuckdecken', 'Dielenboden', 'Balkon', 'Aufzug', 'EBK'], sourceUrl: 'https://immobilienscout24.de/listing/123456', sharedToken: 'a7f3e9', posted: '2026-05-11T08:30:00', aiScore: 87, }, { id: 'l2', title: 'Sonnige 4-Zimmer-Whg., Erstbezug nach Sanierung', price: 645000, area: 112, rooms: 4, floor: '4. OG', baujahr: 1976, city: 'München', district: 'Sendling-Westpark', plz: '81377', address: 'Plinganserstraße 22', platform: 'immoscout24', type: 'kauf', photos: photoSets.modern, nebenkosten: 340, kaltmiete: null, provisionsfrei: false, energieklasse: 'B', description: 'Komplett kernsanierte Wohnung mit großzügigem Grundriss. Neue Fußbodenheizung, dreifachverglaste Fenster, Tageslichtbad. Großer Westbalkon mit Blick ins Grüne. Tiefgaragenstellplatz inkl. Provision: 3,57% inkl. MwSt.', features: ['Saniert', 'Fußbodenheizung', 'Balkon', 'TG-Stellplatz', 'Aufzug'], sourceUrl: 'https://immobilienscout24.de/listing/234567', sharedToken: 'b2c4f1', posted: '2026-05-10T14:12:00', aiScore: 71, }, { id: 'l3', title: 'Loft-Wohnung in alter Schokoladenfabrik', price: 539000, area: 94, rooms: 2.5, floor: '3. OG', baujahr: 1925, city: 'Hamburg', district: 'Ottensen', plz: '22765', address: 'Bahrenfelder Straße 305', platform: 'kleinanzeigen', type: 'kauf', photos: photoSets.loft, nebenkosten: 310, kaltmiete: null, provisionsfrei: true, energieklasse: 'C', description: 'Außergewöhnliche Loftwohnung in denkmalgeschützter ehemaliger Schokoladenfabrik. 4 m Deckenhöhe, Industriefenster, Sichtbeton kombiniert mit warmem Holz. Offener Wohn-/Essbereich (62 m²), separates Schlafzimmer mit Galerie. Designerbad. Lastenaufzug.', features: ['Loft', 'Denkmalschutz', 'Hohe Decken', 'Industrieflair', 'Galerie'], sourceUrl: 'https://kleinanzeigen.de/s-anzeige/345678', sharedToken: 'c8d1e5', posted: '2026-05-12T11:45:00', aiScore: 92, }, { id: 'l4', title: 'Gemütliche 2-Zimmer-Wohnung in Friedrichshain', price: 329000, area: 58, rooms: 2, floor: '1. OG', baujahr: 1898, city: 'Berlin', district: 'Friedrichshain', plz: '10245', address: 'Wühlischstraße 14', platform: 'kleinanzeigen', type: 'kauf', photos: photoSets.cozy, nebenkosten: 195, provisionsfrei: true, energieklasse: 'E', description: 'Charmante kleine Wohnung mit viel Potenzial. Bezugsfrei. Original Holzdielen, Kachelofen funktionstüchtig, Bad neu gefliest. Ruhige Seitenstraße, dennoch zentral.', features: ['Altbau', 'Kachelofen', 'Holzdielen', 'Bezugsfrei'], sourceUrl: 'https://kleinanzeigen.de/s-anzeige/456789', sharedToken: 'd5f9a2', posted: '2026-05-09T16:20:00', aiScore: 79, }, { id: 'l5', title: 'Penthouse mit Panoramablick auf den Main', price: 1290000, area: 156, rooms: 4, floor: '8. OG', baujahr: 2019, city: 'Frankfurt am Main', district: 'Westend-Süd', plz: '60325', address: 'Beethovenstraße 64', platform: 'immoscout24', type: 'kauf', photos: photoSets.cityview, nebenkosten: 580, provisionsfrei: false, energieklasse: 'A', description: 'Exklusives Penthouse mit umlaufender Dachterrasse (84 m²) und atemberaubendem Skyline-Blick. Smart-Home, KNX, Klimaanlage, elektrische Außenrollläden. 2 TG-Plätze inkl. Concierge-Service.', features: ['Penthouse', 'Dachterrasse', 'Skyline-Blick', 'Smart Home', 'Concierge'], sourceUrl: 'https://immobilienscout24.de/listing/567890', sharedToken: 'e3b7c4', posted: '2026-05-08T09:00:00', aiScore: 64, }, { id: 'l6', title: 'Solides Mehrfamilienhaus, vollvermietet, 5,2% Rendite', price: 895000, area: 312, rooms: 9, floor: '—', baujahr: 1962, city: 'Leipzig', district: 'Lindenau', plz: '04177', address: 'Karl-Heine-Straße 89', platform: 'kleinanzeigen', type: 'kauf', photos: photoSets.altbau, nebenkosten: null, provisionsfrei: true, energieklasse: 'D', description: '6-Parteien-Haus, alle Einheiten saniert, langfristige Mietverträge. Jahres-Kaltmiete: 46.560 €. Neues Dach 2021, Heizung 2019. Stellplätze im Hof.', features: ['Mehrfamilienhaus', '6 Einheiten', 'Vollvermietet', 'Saniert'], sourceUrl: 'https://kleinanzeigen.de/s-anzeige/678901', sharedToken: 'f1d8e6', posted: '2026-05-07T13:45:00', aiScore: 84, }, { id: 'l7', title: 'Reihenmittelhaus mit Garten in Stadtnähe', price: 575000, area: 142, rooms: 5, floor: '—', baujahr: 1989, city: 'Köln', district: 'Sülz', plz: '50937', address: 'Berrenrather Straße 218', platform: 'immoscout24', type: 'kauf', photos: photoSets.villa, nebenkosten: 220, provisionsfrei: false, energieklasse: 'D', description: 'Gepflegtes Reihenhaus, 3 Etagen, ausgebauter Keller. Süd-Garten 95 m², Carport. Familienfreundliche Lage, Schule und KiTa fußläufig. Modernisiert 2018.', features: ['Reihenhaus', 'Garten', 'Carport', 'Keller'], sourceUrl: 'https://immobilienscout24.de/listing/789012', sharedToken: 'g9c2b3', posted: '2026-05-06T10:15:00', aiScore: 76, }, { id: 'l8', title: 'Stilvolle 3-Zi.-Whg., Jugendstil, Eichendielen', price: 410000, area: 95, rooms: 3, floor: 'Hochpartere', baujahr: 1903, city: 'Dresden', district: 'Äußere Neustadt', plz: '01099', address: 'Alaunstraße 75', platform: 'kleinanzeigen', type: 'kauf', photos: photoSets.altbau, nebenkosten: 240, provisionsfrei: true, energieklasse: 'C', description: 'Wunderschöne Jugendstilwohnung, liebevoll restauriert. Originale Eichendielen, Flügeltüren, hohe Decken. Bad mit Tageslicht. Innenhofbalkon. Bezugsfrei zum 01.07.2026.', features: ['Jugendstil', 'Eichendielen', 'Flügeltüren', 'Balkon'], sourceUrl: 'https://kleinanzeigen.de/s-anzeige/890123', sharedToken: 'h4a6f7', posted: '2026-05-05T15:50:00', aiScore: 88, }, // — Mietangebote (rentals, no AI score) — { id: 'r1', title: '2-Zi.-Whg. Kreuzberg, Balkon, Altbau', price: 1450, area: 64, rooms: 2, floor: '3. OG', baujahr: 1910, city: 'Berlin', district: 'Kreuzberg', plz: '10961', address: 'Bergmannstraße 28', platform: 'immoscout24', type: 'miete', photos: photoSets.altbau, nebenkosten: 220, kaltmiete: 1230, provisionsfrei: true, energieklasse: 'D', description: 'Schöne Altbauwohnung mit Südbalkon. Bezugsfrei ab 15.06.2026. WBS nicht erforderlich. Kaution: 3 Kaltmieten.', features: ['Altbau', 'Balkon', 'Bezugsfrei'], sourceUrl: 'https://immobilienscout24.de/listing/r1', sharedToken: 'i7b3d8', posted: '2026-05-12T07:15:00', }, { id: 'r2', title: 'Möblierte Stadtwohnung mit EBK', price: 1280, area: 52, rooms: 2, floor: '1. OG', baujahr: 1985, city: 'München', district: 'Schwabing-West', plz: '80796', address: 'Hohenzollernstraße 112', platform: 'immoscout24', type: 'miete', photos: photoSets.modern, nebenkosten: 195, kaltmiete: 1085, provisionsfrei: false, energieklasse: 'B', description: 'Komplett möblierte Wohnung, perfekt für Berufseinsteiger. Hochwertige Küche, Smart TV, Schreibtisch. Befristet auf 12 Monate, verlängerbar.', features: ['Möbliert', 'EBK', 'Smart TV', 'Befristet'], sourceUrl: 'https://immobilienscout24.de/listing/r2', sharedToken: 'j2e5c9', posted: '2026-05-11T18:30:00', }, { id: 'r3', title: '3-Zi.-Whg. Sternschanze, hell, mit Dachterrasse', price: 1680, area: 78, rooms: 3, floor: '4. OG', baujahr: 1899, city: 'Hamburg', district: 'Sternschanze', plz: '20357', address: 'Susannenstraße 19', platform: 'kleinanzeigen', type: 'miete', photos: photoSets.cozy, nebenkosten: 280, kaltmiete: 1400, provisionsfrei: true, energieklasse: 'D', description: 'Großzügige Dachgeschosswohnung mit eigener Dachterrasse (18 m²). Offene Küche, zwei Schlafräume, modernes Bad. Ruhige Innenhof-Lage.', features: ['Dachterrasse', 'Altbau', 'Offene Küche', 'DG'], sourceUrl: 'https://kleinanzeigen.de/s-anzeige/r3', sharedToken: 'k6f1a4', posted: '2026-05-10T11:00:00', }, { id: 'r4', title: '1,5-Zi.-Whg. in Uni-Nähe, Erstbezug', price: 720, area: 38, rooms: 1.5, floor: '2. OG', baujahr: 2024, city: 'Leipzig', district: 'Plagwitz', plz: '04229', address: 'Karl-Heine-Straße 32', platform: 'immoscout24', type: 'miete', photos: photoSets.modern, nebenkosten: 130, kaltmiete: 590, provisionsfrei: true, energieklasse: 'A+', description: 'Neubauwohnung im Erstbezug. Mini-Balkon, Pantryküche, Tageslichtbad. KfW-55-Effizienzhaus, Fernwärme. Ideal für Studenten und Berufsstarter.', features: ['Neubau', 'Erstbezug', 'KfW-55', 'Balkon'], sourceUrl: 'https://immobilienscout24.de/listing/r4', sharedToken: 'l9g4b7', posted: '2026-05-09T09:45:00', }, ]; // ─── AI Evaluations ───────────────────────────────────────────────────── const AI_EVALS = { l1: { score: 87, grade: 'A', recommendation: 'Stark kaufen', summary: 'Überdurchschnittlich gut bewertet. Lage in P-Berg ist langfristig wertstabil, Sanierungszustand reduziert kurzfristige Modernisierungskosten. Preis liegt 4% unter Marktdurchschnitt für vergleichbare Altbauwohnungen.', scorecard: [ { label: 'Lage & Mikrolage', score: 92, note: 'Top-Lage, hohe Wohnqualität' }, { label: 'Preis-Leistung', score: 84, note: '5.621 €/m² — unter Marktschnitt' }, { label: 'Substanz & Zustand', score: 81, note: 'Altbau saniert, einzelne Themen offen' }, { label: 'Energieeffizienz', score: 58, note: 'Klasse D — Verbesserung sinnvoll' }, { label: 'Renditeerwartung', score: 79, note: '3,1% Brutto bei realistischer Vermietung' }, { label: 'Marktdynamik', score: 88, note: 'Stabile Nachfrage, geringes Risiko' }, ], kpis: [ { label: 'Preis pro m²', value: '5.621 €', delta: '−4% vs. Markt', positive: true }, { label: 'Brutto-Rendite', value: '3,1%', delta: 'p.a. erwartet' }, { label: 'Cashflow', value: '+ 142 €', delta: '/Monat bei 30% EK', positive: true }, { label: 'ROI (10J.)', value: '+ 8,4%', delta: 'inkl. Wertzuwachs', positive: true }, { label: 'Tilgung bis 0', value: '~ 28 J.', delta: 'bei 2% Tilgung' }, { label: 'Modernisierung', value: '~ 18k €', delta: 'geschätzte Reserve' }, ], strengths: [ 'Erhaltene Altbausubstanz (Stuck, Dielen) — werterhaltend', 'Provisionsfrei (Käufer spart ~17.000 €)', 'Hohe Vermietbarkeit — Wartelisten in der Straße', 'Aufzug vorhanden — Altersgerecht / Wiederverkauf einfacher', ], risks: [ 'Energieklasse D — Sanierungspflicht ab 2030 möglich', 'Eigentümergemeinschaft klein (6 Parteien) — höhere Einzelumlagen bei Reparaturen', 'Hofzugang über Durchfahrt — Lärm in den Sommermonaten', ], comparables: [ { addr: 'Sredzkistr. 32', price: 525000, area: 91, dist: '180m' }, { addr: 'Knaackstr. 81', price: 472000, area: 84, dist: '320m' }, { addr: 'Wörther Str. 12', price: 495000, area: 86, dist: '410m' }, ], evaluatedAt: '2026-05-12T22:14:00', }, l3: { score: 92, grade: 'A+', recommendation: 'Stark kaufen', summary: 'Außergewöhnliches Objekt mit hohem Wiedererkennungswert. Denkmalschutz erhöht AfA-Vorteile signifikant. Hamburg-Ottensen zeigt seit 5 Jahren konstantes Wertwachstum (+6,2% p.a.).', scorecard: [ { label: 'Lage & Mikrolage', score: 90, note: 'Ottensen — Trendviertel mit Substanz' }, { label: 'Preis-Leistung', score: 86, note: '5.734 €/m² für Loft — fair' }, { label: 'Substanz & Zustand', score: 94, note: 'Denkmalschutz, restauriert' }, { label: 'Energieeffizienz', score: 70, note: 'Klasse C — gut für Altbestand' }, { label: 'Renditeerwartung', score: 91, note: '3,8% Brutto + Denkmal-AfA' }, { label: 'Marktdynamik', score: 95, note: 'Hohe Nachfrage, knappes Angebot' }, ], kpis: [ { label: 'Preis pro m²', value: '5.734 €', delta: 'fair für Loft' }, { label: 'Brutto-Rendite', value: '3,8%', delta: 'p.a. erwartet', positive: true }, { label: 'Denkmal-AfA', value: '9% p.a.', delta: 'für 8 Jahre', positive: true }, { label: 'ROI (10J.)', value: '+ 11,2%', delta: 'inkl. Steuervorteil', positive: true }, { label: 'Cashflow', value: '+ 318 €', delta: '/Monat bei 30% EK', positive: true }, { label: 'Wertzuwachs', value: '+ 6,2%', delta: 'p.a. lokal' }, ], strengths: [ 'Denkmal-AfA — hoher Steuervorteil über 12 Jahre', 'Einzigartige Architektur — geringe Vergleichbarkeit, Knappheitsprämie', 'Provisionsfrei — direkter Verkauf vom Eigentümer', 'Ottensen — eines der stärksten Mikrolagen Hamburgs', ], risks: [ 'Denkmalschutz limitiert Umbauten (z.B. Fenster, Fassade)', 'Loft-Heizkosten höher (große Volumen, hohe Decken)', 'Lastenaufzug ist alt — größere Reparatur in nächsten 5 J. wahrscheinlich', ], comparables: [ { addr: 'Friedensallee 7', price: 612000, area: 102, dist: '290m' }, { addr: 'Bahrenfelder Str. 215', price: 489000, area: 88, dist: '180m' }, ], evaluatedAt: '2026-05-13T08:42:00', }, l8: { score: 88, grade: 'A', recommendation: 'Kaufen', summary: 'Stark unterbewertet im Vergleich zur Mikrolage. Dresden-Neustadt zeigt überdurchschnittliche Mietsteigerung. Sehr guter Zustand reduziert Sanierungsrisiko nahezu auf Null.', scorecard: [ { label: 'Lage & Mikrolage', score: 84, note: 'Beliebtes Szeneviertel' }, { label: 'Preis-Leistung', score: 95, note: '4.316 €/m² — deutlich unter Markt' }, { label: 'Substanz & Zustand', score: 88, note: 'Restauriert, bezugsfertig' }, { label: 'Energieeffizienz', score: 72, note: 'Klasse C — solide' }, { label: 'Renditeerwartung', score: 86, note: '4,1% Brutto realistisch' }, { label: 'Marktdynamik', score: 81, note: 'Stetiges Wachstum, weniger spekulativ' }, ], kpis: [ { label: 'Preis pro m²', value: '4.316 €', delta: '−12% vs. Markt', positive: true }, { label: 'Brutto-Rendite', value: '4,1%', delta: 'p.a. erwartet', positive: true }, { label: 'Cashflow', value: '+ 287 €', delta: '/Monat', positive: true }, { label: 'ROI (10J.)', value: '+ 9,1%', delta: 'inkl. Wertzuwachs', positive: true }, { label: 'Tilgung bis 0', value: '~ 24 J.', delta: 'bei 2% Tilgung' }, { label: 'Modernisierung', value: '~ 6k €', delta: 'minimaler Bedarf' }, ], strengths: [ 'Sehr günstiger Quadratmeterpreis für Lage', 'Bezugsfrei — sofortige Eigennutzung oder Vermietung', 'Originalsubstanz erhalten — Liebhaberobjekt', 'Provisionsfrei', ], risks: [ 'Energetische Modernisierung in 10 J. wahrscheinlich (~ 15k €)', 'Hochparterre — Geräusche von der Straße bei offenem Fenster', ], comparables: [ { addr: 'Louisenstr. 41', price: 458000, area: 92, dist: '210m' }, { addr: 'Bautzner Str. 18', price: 510000, area: 98, dist: '380m' }, ], evaluatedAt: '2026-05-12T16:08:00', }, }; // ─── Saved Searches ───────────────────────────────────────────────────── const SEARCHES = [ { id: 's1', name: 'Altbau Berlin Ost', category: 'kauf', city: 'Berlin', radius: 5, priceMin: 250000, priceMax: 550000, roomsMin: 2, roomsMax: 4, areaMin: 60, areaMax: 110, keywords: ['altbau', 'stuck', 'dielen'], excludeKeywords: ['erbpacht', 'sanierungsbedürftig'], platforms: ['immoscout24', 'kleinanzeigen'], aiEnabled: true, active: true, createdAt: '2026-04-22', lastRun: '2026-05-13T07:00:00', matches: 47, newToday: 3, }, { id: 's2', name: 'Renditeobjekte Sachsen', category: 'kauf', city: 'Leipzig', radius: 50, priceMin: 500000, priceMax: 1500000, roomsMin: 4, roomsMax: 20, areaMin: 150, areaMax: 600, keywords: ['mehrfamilienhaus', 'rendite', 'vermietet'], excludeKeywords: ['leerstand', 'abriss'], platforms: ['immoscout24', 'kleinanzeigen'], aiEnabled: true, active: true, createdAt: '2026-03-10', lastRun: '2026-05-13T06:30:00', matches: 12, newToday: 1, }, { id: 's3', name: 'Premium München', category: 'kauf', city: 'München', radius: 10, priceMin: 800000, priceMax: 2000000, roomsMin: 3, roomsMax: 6, areaMin: 100, areaMax: 200, keywords: ['penthouse', 'dachterrasse', 'neubau'], excludeKeywords: [], platforms: ['immoscout24'], aiEnabled: true, active: false, createdAt: '2026-02-18', lastRun: '2026-05-10T08:00:00', matches: 8, newToday: 0, }, { id: 's4', name: 'Mietwohnung Kreuzberg', category: 'miete', city: 'Berlin', radius: 3, priceMin: 800, priceMax: 1800, roomsMin: 2, roomsMax: 3, areaMin: 50, areaMax: 90, keywords: ['balkon', 'altbau'], excludeKeywords: ['möbliert', 'wbs'], platforms: ['immoscout24', 'kleinanzeigen'], aiEnabled: false, active: true, createdAt: '2026-05-01', lastRun: '2026-05-13T07:30:00', matches: 23, newToday: 4, }, ]; // ─── Notifications ────────────────────────────────────────────────────── const NOTIFICATIONS = [ { id: 'n1', kind: 'ai-high', title: 'Neue Top-Bewertung: 92/100', body: 'Loft-Wohnung Hamburg-Ottensen — Score: 92, sehr empfehlenswert.', listingId: 'l3', read: false, at: '2026-05-13T08:42:00' }, { id: 'n2', kind: 'new-match', title: '4 neue Treffer', body: 'Suche „Mietwohnung Kreuzberg" — 4 neue Angebote in den letzten 12 Std.', searchId: 's4', read: false, at: '2026-05-13T07:32:00' }, { id: 'n3', kind: 'ai-high', title: 'Neue Top-Bewertung: 88/100', body: 'Jugendstil-Wohnung Dresden — unterbewertet, hohe Rendite-Erwartung.', listingId: 'l8', read: false, at: '2026-05-12T16:08:00' }, { id: 'n4', kind: 'new-match', title: '3 neue Treffer', body: 'Suche „Altbau Berlin Ost" — 3 neue Inserate.', searchId: 's1', read: true, at: '2026-05-12T07:01:00' }, { id: 'n5', kind: 'system', title: 'Suche pausiert', body: 'Suche „Premium München" wurde pausiert — Aktivität seit 7 Tagen niedrig.', searchId: 's3', read: true, at: '2026-05-10T18:00:00' }, { id: 'n6', kind: 'ai-high', title: 'Neue Bewertung: 87/100', body: 'Altbau Prenzlauer Berg — solide Rendite, geringes Risiko.', listingId: 'l1', read: true, at: '2026-05-12T22:14:00' }, ]; // ─── Admin Jobs ───────────────────────────────────────────────────────── const JOBS = [ { id: 'j1', kind: 'scrape', target: 'ImmoScout24', search: 'Altbau Berlin Ost', status: 'running', progress: 67, started: '2026-05-13T08:55:00', items: '47/70' }, { id: 'j2', kind: 'scrape', target: 'Kleinanzeigen', search: 'Mietwohnung Kreuzberg', status: 'queued', progress: 0, started: '—', items: '0/—' }, { id: 'j3', kind: 'ai-eval', target: 'Codex 5.3 Spark', search: 'Renditeobjekte Sachsen',status: 'running', progress: 41, started: '2026-05-13T08:48:00', items: '5/12' }, { id: 'j4', kind: 'scrape', target: 'ImmoScout24', search: 'Renditeobjekte Sachsen',status: 'completed', progress: 100, started: '2026-05-13T08:30:00', items: '12/12' }, { id: 'j5', kind: 'ai-eval', target: 'Codex 5.3 Spark', search: 'Altbau Berlin Ost', status: 'completed', progress: 100, started: '2026-05-13T07:32:00', items: '47/47' }, { id: 'j6', kind: 'scrape', target: 'Kleinanzeigen', search: 'Premium München', status: 'failed', progress: 12, started: '2026-05-13T06:20:00', items: '1/8', error: 'Rate-Limit erreicht' }, { id: 'j7', kind: 'ai-eval', target: 'Codex 5.3 Spark', search: 'Mietwohnung Kreuzberg', status: 'skipped', progress: 0, started: '—', items: '0/0', error: 'AI für Mieten deaktiviert' }, ]; // Expose all on window for cross-script access Object.assign(window, { LISTINGS, AI_EVALS, SEARCHES, NOTIFICATIONS, JOBS, fmtPrice, fmtPriceShort, fmtArea, fmtDate, fmtDateTime, fmtRelative, });