from __future__ import annotations import json import re from pathlib import Path from typing import Any OBSIDIAN_LIST = Path("/Volumes/Obsidian/DEV-Vault/b2in/immobilien/Immobilien Dubai.md") LOCAL_EXTRACTION = Path("dev/immobilien 07-05-2026/azizi-extraction.json") OFFICIAL_LINKS_OUTPUT = Path("dev/immobilien 07-05-2026/azizi-official-links.json") TOP_PROJECTS_OUTPUT = Path("dev/immobilien 07-05-2026/azizi-top-projects-research.json") TOP_PROJECTS: dict[str, dict[str, Any]] = { "mina": { "title": "Mina", "district": "Palm Jumeirah", "category": "Sofort verfügbar - Luxus-Prestige", "status": "Fertiggestellt / Resale", "unit_types": ["Apartments", "Penthouses"], "unit_count": "178 Apartments + 4 Penthouses", "price_from": "ab AED 2,6 Mio laut Konzeptbriefing; aktuelle Verfügbarkeit prüfen", "handover": "Fertiggestellt 2021", "positioning": "Etablierte Palm-Jumeirah-Adresse mit Waterfront-/Prestige-Fokus.", "key_facts": [ "Palm Jumeirah, östlicher Halbmond", "Bestandsobjekt, neue Einheiten nur nach Verfügbarkeit im Zweitmarkt", "Geeignet für Eigennutzer mit Palm-Präferenz und Bestandsinvestoren", ], "research_status": "Konzeptdaten belastbar; lokale SharePoint-Ordner vorhanden, aber ohne verwertbare Dateien; offizielle URL als Projektanker.", }, "royal-bay": { "title": "Royal Bay", "district": "Palm Jumeirah", "category": "Sofort verfügbar - Luxus-Prestige", "status": "Fertiggestellt / Resale", "unit_types": ["Apartments", "Penthouses"], "unit_count": "90 Apartments + 2 Penthouses", "price_from": "Verfügbarkeit auf Anfrage", "handover": "Fertiggestellt", "positioning": "Kleinere, privatere Palm-Jumeirah-Adresse gegenüber Mina.", "key_facts": [ "Palm Jumeirah", "Bewusst kleine Hausgemeinschaft", "Geeignet für Eigennutzer mit Privatheitsfokus", ], "research_status": "Konzeptdaten belastbar; offizielle URL aus Obsidian-Liste; keine lokale SharePoint-Abdeckung gefunden.", }, "creek-views": { "title": "Creek Views", "district": "Al Jaddaf / Dubai Healthcare City", "category": "Sofort verfügbar - für schnelle Cashflow-Investments", "status": "Fertiggestellt / Bestand", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom"], "unit_count": "634 Einheiten laut Konzeptbriefing", "price_from": "Verfügbarkeit auf Anfrage", "handover": "Fertiggestellt", "positioning": "Zentrale Cashflow-Adresse zwischen Dubai Creek, Downtown und Flughafen.", "key_facts": [ "Offizielles Factsheet: Studios, 1- und 2-Bedroom-Apartments", "Offizielles Factsheet: Dubai Creek ca. 2 Minuten, Downtown Dubai ca. 7 Minuten, DXB ca. 7 Minuten", "Panoramablick auf Dubai Creek und Skyline, Terrassen, Retail- und Leisure-Hubs", ], "research_status": "Sehr gute lokale SharePoint-Abdeckung mit Factsheets und Bildern.", }, "creek-views-ii": { "title": "Creek Views II", "district": "Al Jaddaf / Dubai Healthcare City", "category": "Sofort verfügbar - für schnelle Cashflow-Investments", "status": "Kürzlich übergeben / Bestand", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom"], "unit_count": "Teil des Creek-Views-Ensembles", "price_from": "Verfügbarkeit auf Anfrage", "handover": "Kürzlich übergeben", "positioning": "Jüngere Ergänzung des Creek-Views-Konzepts in bewährter Lage.", "key_facts": [ "SharePoint enthält Factsheets, Renderings und Fertigstellungs-/Foto-Material", "Gleiche Standortlogik wie Creek Views: DHCC, Dubai Creek, kurze Wege zu Downtown und Flughafen", "Geeignet für konservative Yield-Investoren mit schneller Vermietbarkeit", ], "research_status": "Gute lokale SharePoint-Abdeckung; Factsheet-Dateien teils mehrsprachig/CH/RUS, deutsche Website-Texte besser aus Konzept + englischer Quelle ableiten.", }, "azizi-riviera": { "title": "Azizi Riviera", "district": "MBR City / Meydan", "category": "Flaggschiff Meydan - Azizis größtes aktives Quartier", "status": "Phasenweise fertiggestellt / weitere Phasen aktiv", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "3 Bedroom", "Retail"], "unit_count": "12.285 Apartments laut Azizi Folding Map V.10", "price_from": "Aktuelle Phase prüfen", "handover": "Phase abhängig", "positioning": "Master-Planned Community mit Crystal Lagoon, Lifestyle und Rendite-Logik.", "key_facts": [ "Riviera umfasst eine 2,7 km lange schwimmbare Crystal Lagoon", "Riviera ist in mehrere Lifestyle-Zonen gegliedert: Retail Boulevard, Lagoon Walk und Grünflächen", "Kurze Wege nach Downtown Dubai und Meydan", ], "research_status": "Azizi Folding Map V.10 liefert direkten Apartment-Count; lokaler SharePoint-Ordner ist weitgehend leer.", }, "riviera-reve": { "title": "Riviera Rêve", "district": "MBR City / Meydan", "category": "Flaggschiff Meydan - Azizis größtes aktives Quartier", "status": "Off-Plan / Ultra-Luxus-Phase", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Duplex Penthouses"], "unit_count": "5.061 Homes in 24 Ultra-Luxus-Gebäuden", "price_from": "Aktuelle Verfügbarkeit prüfen", "handover": "Phase abhängig", "positioning": "Exklusivste Riviera-Phase für Käufer, die Community-Vorteile mit höherer Ausstattung verbinden.", "key_facts": [ "Web-/Pressesource: 24 Ultra-Luxus-Gebäude", "Web-/Pressesource: über 2.600 Studios, 1.579 One-Bedroom, 876 Two-Bedroom", "Ausstattungspositionierung mit Smart-Home, hochwertigen Materialien und 5-Sterne-Service-Ambiente", ], "research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Pressesource ergänzt offizielle URL.", }, "riviera-beachfront": { "title": "Riviera Beachfront", "district": "MBR City / Meydan", "category": "Flaggschiff Meydan - Azizis größtes aktives Quartier", "status": "Im Bau / Near Handover", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Retail"], "unit_count": "555 Einheiten in drei 20-geschossigen Entwicklungen", "price_from": "Aktuelle Verfügbarkeit prüfen", "handover": "Q4 2025 laut 2025-Bauupdates", "positioning": "Premium-Linie der Riviera direkt an der Crystal Lagoon.", "key_facts": [ "Bauupdate 2025: Beachfront I erreichte 70-81% Baufortschritt", "Drei 20-geschossige Entwicklungen mit direktem Beach-/Lagoon-Zugang", "Amenities: Pools, Gym, BBQ, Kinderspielbereiche, Yoga-Spaces, Retail", ], "research_status": "Lokaler SharePoint-Ordner ohne verwertbare Dateien; Web-/Bauupdates liefern harte Fakten.", }, "park-avenue": { "title": "Park Avenue", "district": "Meydan / MBR City", "category": "Flaggschiff Meydan - Azizis größtes aktives Quartier", "status": "Fertiggestellt / Resale", "unit_types": ["Apartments", "Retail"], "unit_count": "274 Apartments laut Azizi Folding Map V.10", "price_from": "Verfügbarkeit auf Anfrage", "handover": "2023/2024 laut Konzeptbriefing", "positioning": "Boutique-Community in MBR City, ruhiger als die großen Riviera-Türme.", "key_facts": [ "274 Apartments laut Azizi Folding Map V.10", "Meydan Avenue / MBR City", "Geeignet für Eigennutzer und Resale-Investoren mit Wunsch nach kleinerer Community", ], "research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 274 Apartments.", }, "star": { "title": "Star", "district": "Al Furjan", "category": "Ready Rendite - etablierte Adressen in Al Furjan", "status": "Fertiggestellt / Resale", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom"], "unit_count": "Offizielle Seite: 310 Studios, 46 One-Bedroom, 102 Two-Bedroom", "price_from": "Verfügbarkeit auf Anfrage", "handover": "Fertiggestellt", "positioning": "Al-Furjan-Klassiker mit Metro-Nähe und breiter Mietzielgruppe.", "key_facts": [ "Offizielle Seite: Metro Station ca. 1 Minute, Mohammed Bin Zayed Road ca. 1 Minute", "Offizielle Seite: Dubai Marina & JBR ca. 10 Minuten, Expo City ca. 12 Minuten", "Amenities: Pool, Gym, Garage/Parking, City Views, Sauna", ], "research_status": "Gute lokale Bildabdeckung; offizielle Seite liefert Unit-Mix und Standortzeiten.", }, "roy-mediterranean": { "title": "ROY Mediterranean", "district": "Al Furjan", "category": "Ready Rendite - etablierte Adressen in Al Furjan", "status": "Fertiggestellt / Resale", "unit_types": ["Apartments", "Retail"], "unit_count": "271 Apartments + Retail laut Konzeptbriefing", "price_from": "Verfügbarkeit auf Anfrage", "handover": "Fertiggestellt", "positioning": "Etablierte Al-Furjan-Adresse mit Volumen und Resale-Liquidität.", "key_facts": [ "Al Furjan mit Metro-Anbindung und guter Erreichbarkeit von Jebel Ali, Dubai Marina und Expo City", "Ground-Floor-Retail stärkt Alltagstauglichkeit und Vermietbarkeit", "Geeignet für Yield- und Volumeninvestoren", ], "research_status": "Lokale Bildabdeckung vorhanden; harte Unit-Zahl aus Konzeptbriefing, offizielle URL als Projektanker.", }, "farishta": { "title": "Farishta", "district": "Al Furjan", "category": "Ready Rendite - etablierte Adressen in Al Furjan", "status": "Fertiggestellt / Resale", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Penthouses"], "unit_count": "137 Studios, 124 One-Bedroom, 23 Two-Bedroom laut Azizi-Al-Furjan-Katalogauszug", "price_from": "Verfügbarkeit auf Anfrage", "handover": "Fertiggestellt 2020 laut Konzeptbriefing", "positioning": "Niedriger Risiko-Einstieg in Al Furjan mit Metro- und Straßenanbindung.", "key_facts": [ "Zwischen Sheikh Zayed Road und Sheikh Mohammed Bin Zayed Road positioniert", "SharePoint enthält Renderings, Completion Photos und Floor Plans", "Geeignet für Erstinvestoren und Cashflow-orientierte Käufer", ], "research_status": "Gute lokale SharePoint-Abdeckung; Unit-Mix aus Azizi-Katalog-/Suchauszug weicht leicht vom Konzept ab und sollte vor Livegang final geprüft werden.", }, "azizi-grand": { "title": "Azizi Grand", "district": "Dubai Sports City", "category": "Bald bezugsfertig - Bauphase weit fortgeschritten", "status": "Im Bau / Near Handover", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom"], "unit_count": "411 Apartments laut Azizi Folding Map V.10", "price_from": "Aktuelle Verfügbarkeit prüfen", "handover": "Q1 2026 laut Bauupdates", "positioning": "Kurze Restlaufzeit bis Cashflow in einer sport- und familiennahen Lage.", "key_facts": [ "411 Apartments laut Azizi Folding Map V.10", "Building Height B+G+3P+14 laut Azizi Folding Map V.10", "Bauupdate September 2025: 57% Baufortschritt", "Bauupdate November 2025: 67% Baufortschritt", "Amenities: Gym, zwei Pools, Kinderspielbereiche, BBQ, Landschaftsgärten", ], "research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Bauupdates liefern harte Fakten.", }, "beach-oasis": { "title": "Beach Oasis", "district": "Dubai Studio City", "category": "Bald bezugsfertig - Bauphase weit fortgeschritten", "status": "Im Bau / Phase abhängig", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom"], "unit_count": "1.416 Apartments in 4 Buildings laut Azizi Folding Map V.10", "price_from": "ab ca. AED 480k-822k je Phase/Quelle; aktuelle Verfügbarkeit prüfen", "handover": "Phase abhängig: 2024/2025 bzw. Phase 2 bis 2026 laut Webquellen", "positioning": "Studio-City-Einstieg mit Lagunen-/Beach-Feeling im bezahlbaren Segment.", "key_facts": [ "1.416 Apartments laut Azizi Folding Map V.10", "Dubai Studio City, Medien- und Entertainment-Hub", "Lagoon-style swimming pool und man-made beach", "Outdoor courtyard, Cafes/Restaurants, Gym, landscaped gardens", ], "research_status": "Wichtig: lokaler Treffer ist überwiegend Jaddaf Beach Oasis, nicht Studio City Beach Oasis. Für Live-Daten Studio-City-Quelle priorisieren.", }, "burj-azizi": { "title": "Burj Azizi", "district": "Sheikh Zayed Road / Trade Centre", "category": "Ultra-Prestige & Mega-Communities", "status": "Im Bau / Off-Plan", "unit_types": ["Holiday Homes", "Freehold Apartments", "Penthouses", "Hotel", "Retail"], "unit_count": "1.037 Residences, 725 m und 140+ Floors laut Azizi Folding Map V.10", "price_from": "offizielle Burj-Azizi-Seite: ab AED 8,5 Mio bis AED 1 Mrd; Launch-Presse: ab AED 10.000/sqft", "handover": "Bis Ende 2028 laut Programm-/Pressekontext; im Konzept 2028-2030", "positioning": "Headline-Projekt: zweithöchster Tower der Welt und einziges Freehold-Projekt auf dem Sheikh-Zayed-Road-Strip.", "key_facts": [ "Azizi Folding Map V.10: 725 Meter, 140+ Floors, 1.037 Residences, Sheikh Zayed Road", "Offizielle Seite: Highest Observation Deck 649m, Highest Club 567m, Highest Hotel Lobby 498m", "Offizielle Kontaktseite: Retail Ground-L7, Apartments Level 37-69, Penthouses Level 72-88, Observation Deck Level 130", ], "research_status": "Azizi Folding Map V.10 liefert direkte Zahlen; sehr gute offizielle Burj-Azizi-Webquelle; keine lokale SharePoint-Abdeckung gefunden.", }, "monaco-mansions": { "title": "Monaco Mansions", "district": "Dubai South / Azizi Venice", "category": "Ultra-Prestige & Mega-Communities", "status": "Im Bau / Off-Plan", "unit_types": ["6 Bedroom Mansions", "7 Bedroom Mansions", "8 Bedroom Mansions"], "unit_count": "109 Mansions", "price_from": "ab AED 45 Mio laut Konzeptbriefing", "handover": "Q4 2026 laut Konzeptbriefing; final prüfen", "positioning": "Exklusivstes Villen-Segment innerhalb der Venice-Community.", "key_facts": [ "Azizi Folding Map V.10 nennt 109 Villas im Azizi-Venice-Kontext", "Positioniert für HNI-Käufer, Familien und Trophy-Asset-Investoren", "Investmentthese ist an Dubai South, Flughafenentwicklung und Venice-Masterplan gekoppelt", ], "research_status": "Keine lokale SharePoint-Abdeckung gefunden; Venice-Web-/Pressesources bestätigen Mansion-Kontext, projektgenaue Verfügbarkeit final prüfen.", }, "azizi-venice": { "title": "Azizi Venice", "district": "Dubai South", "category": "Ultra-Prestige & Mega-Communities", "status": "Im Bau / Mega-Community", "unit_types": ["Apartments", "Villas", "Mansions", "Retail"], "unit_count": "34.795+ Apartments, 102 Apartment Buildings und 109 Villas laut Azizi Folding Map V.10", "price_from": "ab ca. AED 650k laut Konzeptbriefing; aktuelle Phase prüfen", "handover": "Phasenweise ab 2026 laut Konzeptbriefing", "positioning": "Große Dubai-South-Wachstumsthese mit Lagoon, Cultural District und Nähe zu Al Maktoum Airport.", "key_facts": [ "Azizi Folding Map V.10: 34.795+ Apartments, 102 Apartment Buildings, 109 Villas", "18 km Freshwater Lagoon, Opera House, Theatre, Exhibition Hall, Performing Arts Academy", "Nähe zu Al Maktoum International Airport; Retail Boulevard, Hotels, Schulen, Krankenhaus", ], "research_status": "Lokaler SharePoint-Ordner leer; mehrere Web-/Pressesources liefern harte Masterplan-Fakten.", }, "azizi-milan": { "title": "Azizi Milan", "district": "Azizi Milan / Sheikh Mohammed Bin Zayed Road", "category": "Ultra-Prestige & Mega-Communities", "status": "Im Bau / Master-Planned Community", "unit_types": ["Apartments", "Retail", "Hospitality", "Mixed Use"], "unit_count": "100 Buildings und 80.000 Apartments laut Azizi Folding Map V.10", "price_from": "Aktuelle Gebäudephase prüfen", "handover": "Phase abhängig", "positioning": "AED-75-Mrd.-Masterplan mit italienischer Design-/Fashion-Positionierung.", "key_facts": [ "Azizi Folding Map V.10: 100 Buildings und 80.000 Apartments", "Web-/Pressesources: AED 75 Mrd. und 40 Mio sqft GFA", "Milan Heights als lagoon-facing Enclave innerhalb Azizi Milan", "Lage an Sheikh Mohammed Bin Zayed Road, wichtiger Verbindungsachse zwischen Emiraten", ], "research_status": "Sehr gute lokale SharePoint-Abdeckung für einzelne AM-Gebäude und Milan Heights; Webquellen ergänzen Masterplan-Fakten.", }, "azizi-wasel": { "title": "Azizi Wasel", "district": "Dubai Islands", "category": "Ultra-Prestige & Mega-Communities", "status": "Off-Plan / New Launch", "unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "3 Bedroom", "Penthouses"], "unit_count": "221 Apartments laut Azizi Folding Map V.10", "price_from": "ab ca. AED 1,04-1,1 Mio je Quelle", "handover": "Q2 2027 bis Q1 2028 je Quelle; final prüfen", "positioning": "Frühphasiger Einstieg in Dubai Islands als künftige Premium-Inseldestination.", "key_facts": [ "221 Apartments laut Azizi Folding Map V.10", "Building Height 3B+G+13 laut Azizi Folding Map V.10", "Dubai Islands / Deira Waterfront", "Studios bis 3-Bedroom Apartments sowie 3-4-Bedroom Penthouses", "50/50 Payment Plan wird konsistent in Webquellen genannt", ], "research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 221 Apartments und Building Height 3B+G+13.", }, } def slugify(name: str) -> str: value = name.lower() value = value.replace("ê", "e") value = re.sub(r"[^a-z0-9]+", "-", value).strip("-") return value def parse_official_links() -> list[dict[str, str]]: current_area = "" projects: list[dict[str, str]] = [] for line in OBSIDIAN_LIST.read_text(encoding="utf-8").splitlines(): heading = re.match(r"^###\s+📍\s+(.+)$", line) if heading: current_area = heading.group(1).strip() continue link = re.match(r"- \*\*(.+?):\*\* \[(https://www\.azizidevelopments\.com/[^\]]+)\]", line.strip()) if not link: continue title, url = link.groups() projects.append( { "slug": slugify(title), "title": title, "area": current_area, "official_url": url, } ) return projects def main() -> None: official_links = parse_official_links() official_by_url = {item["official_url"]: item for item in official_links} official_by_slug = {item["slug"]: item for item in official_links} local = json.loads(LOCAL_EXTRACTION.read_text(encoding="utf-8")) local_projects = local["projects"] enriched: list[dict[str, Any]] = [] for slug, project in TOP_PROJECTS.items(): local_project = local_projects.get(slug, {}) if slug == "beach-oasis": local_project = { "source_dirs": [], "coverage": {"files": 0, "images": 0, "xlsx": 0, "small_fact_pdfs": 0}, "image_candidates": [], "pdf_extracts": [], "xlsx_extracts": [], } official_url = local_project.get("official_url") official = official_by_url.get(official_url or "") or official_by_slug.get(slug) enriched.append( { "slug": slug, "title": project["title"], "official_url": official_url or (official or {}).get("official_url"), "official_list_area": (official or {}).get("area"), **project, "local_sharepoint": { "source_dirs": local_project.get("source_dirs", []), "coverage": local_project.get("coverage", {}), "image_candidates": local_project.get("image_candidates", [])[:6], "fact_sources": [item["path"] for item in local_project.get("pdf_extracts", [])] + [item["path"] for item in local_project.get("xlsx_extracts", [])], }, } ) OFFICIAL_LINKS_OUTPUT.write_text( json.dumps( { "source": str(OBSIDIAN_LIST), "count": len(official_links), "projects": official_links, }, ensure_ascii=False, indent=2, ), encoding="utf-8", ) TOP_PROJECTS_OUTPUT.write_text( json.dumps( { "source_files": { "official_link_list": str(OBSIDIAN_LIST), "local_sharepoint_extraction": str(LOCAL_EXTRACTION), }, "note": "Working research data for the B2in Dubai real-estate page. Pricing, availability and handover dates must be confirmed before publication.", "projects": enriched, }, ensure_ascii=False, indent=2, ), encoding="utf-8", ) print(f"Wrote {OFFICIAL_LINKS_OUTPUT}") print(f"Wrote {TOP_PROJECTS_OUTPUT}") if __name__ == "__main__": main()