{
  "formatVersion": "1.2",
  "currency": "EUR",
  "timezone": "Europe/Berlin",
  "id": "berlin-client-visit",
  "name": "Berlin — client workshop",
  "subtitle": "Two days, one flight each way, company-paid",
  "start": "2026-11-17",
  "end": "2026-11-18",
  "members": [
    { "id": "m1", "name": "Marie Dupont", "role": "owner", "kind": "adult", "email": "marie@example.com",
      "loyalty": [ { "program": "Flying Blue", "number": "FB-EXAMPLE" } ] },
    { "id": "m2", "name": "Karim Haddad", "role": "editor", "kind": "adult", "dietary": ["halal"] }
  ],
  "days": [
    {
      "id": "d1", "index": 1, "date": "2026-11-17", "title": "Paris → Berlin, kick-off",
      "timezone": "Europe/Berlin",
      "coords": { "lat": 52.5200, "lon": 13.4050, "label": "Berlin" },
      "stayBookingId": "b-hotel",
      "items": [
        { "id": "i1", "time": "07:40", "endTime": "09:25", "title": "Flight CDG → BER", "type": "flight", "status": "planned",
          "timezone": "Europe/Paris", "endTimezone": "Europe/Berlin", "bookingId": "b-flights",
          "transport": { "carrier": "Air France", "number": "AF1234", "ref": "EXMPL1",
            "from": { "name": "Paris Charles de Gaulle (CDG)", "terminal": "2F", "timezone": "Europe/Paris" },
            "to": { "name": "Berlin Brandenburg (BER)", "terminal": "1", "timezone": "Europe/Berlin" } },
          "critical": "Boarding closes 20 minutes before departure." },
        { "id": "i2", "time": "10:00", "endTime": "10:40", "title": "Airport express to Hauptbahnhof", "type": "transit", "status": "planned",
          "transport": { "carrier": "DB", "number": "FEX", "from": { "name": "BER Terminal 1-2" }, "to": { "name": "Berlin Hbf" } }, "price": 8, "priceEstimated": true },
        { "id": "i3", "time": "11:30", "endTime": "13:00", "title": "Workshop day 1 — discovery", "type": "meeting", "status": "planned", "stars": 3,
          "place": "Client HQ, Friedrichstraße 100, Berlin", "desc": "Attendees: client product team (6), Marie, Karim. Agenda in the attachment.",
          "attachments": [ { "id": "att1", "label": "Agenda (PDF)", "url": "https://example.org/agenda-day1.pdf" } ], "outfit": ["dressy"] },
        { "id": "i4", "time": "13:00", "title": "Working lunch", "type": "meal", "status": "planned", "price": 60, "priceEstimated": true,
          "options": [ { "id": "o1", "title": "Client canteen" }, { "id": "o2", "title": "Lindenbräu — halal options", "place": "Bellevuestraße 3" } ] },
        { "id": "i5", "time": "14:00", "endTime": "17:30", "title": "Workshop day 1 — solution design", "type": "work", "status": "planned", "place": "Client HQ" },
        { "id": "i6", "time": "18:30", "title": "Hotel check-in", "type": "checkin", "status": "planned", "bookingId": "b-hotel" },
        { "id": "i7", "time": "20:00", "title": "Team dinner", "type": "meal", "status": "planned", "bookingId": "b-dinner", "memberIds": ["m1", "m2"] }
      ]
    },
    {
      "id": "d2", "index": 2, "date": "2026-11-18", "title": "Wrap-up and return",
      "coords": { "lat": 52.5200, "lon": 13.4050, "label": "Berlin" },
      "items": [
        { "id": "i8", "time": "09:00", "endTime": "12:00", "title": "Workshop day 2 — roadmap", "type": "meeting", "status": "planned", "place": "Client HQ" },
        { "id": "i9", "time": "12:00", "title": "Check-out", "type": "checkout", "status": "planned", "bookingId": "b-hotel" },
        { "id": "i10", "time": "14:00", "endTime": "16:00", "title": "Conference talk — Marie only", "type": "conference", "status": "planned", "memberIds": ["m1"],
          "place": "bcc Berlin Congress Center, Alexanderstraße 11", "bookingId": "b-conf" },
        { "id": "i11", "time": "17:00", "endTime": "17:30", "title": "Airport express to BER", "type": "transit", "status": "planned" },
        { "id": "i12", "time": "19:15", "endTime": "21:05", "title": "Flight BER → CDG", "type": "flight", "status": "planned",
          "timezone": "Europe/Berlin", "endTimezone": "Europe/Paris", "bookingId": "b-flights",
          "transport": { "carrier": "Air France", "number": "AF1235", "ref": "EXMPL1",
            "from": { "name": "Berlin Brandenburg (BER)", "terminal": "1", "timezone": "Europe/Berlin" },
            "to": { "name": "Paris Charles de Gaulle (CDG)", "terminal": "2F", "timezone": "Europe/Paris" } } }
      ]
    }
  ],
  "bookings": [
    { "id": "b-flights", "type": "transport", "status": "confirmed", "title": "Air France — CDG ⇄ BER", "price": 380,
      "payment": { "status": "invoice", "payer": "company", "note": "Cost center MKT-42" },
      "transport": { "carrier": "Air France", "ref": "EXMPL1" },
      "refs": [ { "label": "PNR", "value": "EXMPL1", "sensitive": true } ],
      "tickets": [
        { "id": "t1", "label": "Boarding pass — outbound", "code": "AF1234/17NOV", "memberId": "m1", "seat": "12A",
          "payload": "M1DUPONT/MARIE        EEXMPL1 CDGBERAF 1234 321Y012A0001 100", "format": "pdf417", "date": "2026-11-17", "time": "07:40" },
        { "id": "t2", "label": "Boarding pass — outbound", "code": "AF1234/17NOV", "memberId": "m2", "seat": "12B",
          "payload": "M1HADDAD/KARIM        EEXMPL1 CDGBERAF 1234 321Y012B0002 100", "format": "pdf417", "date": "2026-11-17", "time": "07:40" }
      ],
      "attachments": [ { "id": "att2", "label": "E-ticket receipt", "url": "https://example.org/receipt.pdf" } ] },
    { "id": "b-hotel", "type": "stay", "status": "confirmed", "title": "Hotel Mitte", "hotelStars": 4, "dates": "night of Nov 17",
      "checkin": "15:00", "checkout": "12:00", "breakfastIncluded": true, "address": "Friedrichstraße 150, Berlin",
      "rooms": [ { "label": "Room 1", "memberIds": ["m1"] }, { "label": "Room 2", "memberIds": ["m2"] } ],
      "price": 340, "payment": { "status": "invoice", "payer": "company" },
      "refs": [ { "label": "Confirmation", "value": "HM-EXAMPLE-77", "sensitive": true } ] },
    { "id": "b-dinner", "type": "restaurant", "status": "confirmed", "title": "Dinner — Restaurant Nobelhart", "address": "Friedrichstraße 218, Berlin",
      "price": 180, "payment": { "status": "onsite", "payer": "company", "note": "Expense report, category 'client meals'" } },
    { "id": "b-conf", "type": "activity", "status": "confirmed", "title": "Conference day pass", "memberIds": ["m1"], "price": 120,
      "payment": { "status": "prepaid", "payer": "company" },
      "tickets": [ { "id": "t3", "label": "Speaker badge", "code": "SPK-EXAMPLE", "memberId": "m1", "payload": "SPK-EXAMPLE", "format": "qr" } ] }
  ],
  "logistics": [
    { "id": "l1", "emoji": "🧾", "title": "Expenses", "content": "Company card for flights and hotel (already invoiced). Meals: pay, keep receipts, file within 15 days." }
  ],
  "contacts": [
    { "id": "k1", "name": "Client reception", "phone": "+49 30 000000", "note": "Ask for the product team, 4th floor" },
    { "id": "k2", "name": "Travel desk", "phone": "+33 1 00 00 00 00", "note": "Rebooking 24/7" }
  ]
}
