{
  "directed": false,
  "multigraph": false,
  "graph": {
    "hyperedges": [
      {
        "id": "laila_hotel_data_pipeline",
        "label": "Laila Hotel Data Pipeline: PMS Skill \u2192 Hermes \u2192 Bridge \u2192 Dify",
        "nodes": [
          "lh_pms_skill",
          "bridge_run_hermes",
          "bridge_chat",
          "laila_persona"
        ],
        "relation": "participate_in",
        "confidence": "INFERRED",
        "confidence_score": 0.85,
        "source_file": "hermes-dify-bridge/bridge.py"
      },
      {
        "id": "bamboo_property_reports_flow",
        "label": "Bamboo Property Reports: Societe & Ooak Revenue + CI/CO",
        "nodes": [
          "societe_suites_hartamas",
          "ooak_suites_mont_kiara",
          "bamboo_revenue_april2026",
          "checkin_checkout_04may2026_html"
        ],
        "relation": "participate_in",
        "confidence": "EXTRACTED",
        "confidence_score": 0.95,
        "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md"
      },
      {
        "id": "session_continuity_mechanism",
        "label": "Session Continuity: load_map \u2192 run_hermes (resume) \u2192 get_latest_session_id \u2192 save_map",
        "nodes": [
          "bridge_load_map",
          "bridge_run_hermes",
          "bridge_get_latest_session_id",
          "bridge_save_map"
        ],
        "relation": "implement",
        "confidence": "EXTRACTED",
        "confidence_score": 0.95,
        "source_file": "hermes-dify-bridge/bridge.py"
      }
    ]
  },
  "nodes": [
    {
      "label": "bridge.py",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L1",
      "id": "bridge_py",
      "community": 1,
      "norm_label": "bridge.py"
    },
    {
      "label": "load_map()",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L173",
      "id": "hermes_dify_bridge_bridge_load_map",
      "community": 1,
      "norm_label": "load_map()"
    },
    {
      "label": "save_map()",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L180",
      "id": "hermes_dify_bridge_bridge_save_map",
      "community": 1,
      "norm_label": "save_map()"
    },
    {
      "label": "get_latest_session_id()",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L184",
      "id": "hermes_dify_bridge_bridge_get_latest_session_id",
      "community": 1,
      "norm_label": "get_latest_session_id()"
    },
    {
      "label": "run_hermes()",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L197",
      "id": "hermes_dify_bridge_bridge_run_hermes",
      "community": 1,
      "norm_label": "run_hermes()"
    },
    {
      "label": "ChatRequest",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L220",
      "id": "hermes_dify_bridge_bridge_chatrequest",
      "community": 1,
      "norm_label": "chatrequest"
    },
    {
      "label": "BaseModel",
      "file_type": "code",
      "source_file": "",
      "source_location": "",
      "id": "basemodel",
      "community": 1,
      "norm_label": "basemodel"
    },
    {
      "label": "health()",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L226",
      "id": "hermes_dify_bridge_bridge_health",
      "community": 1,
      "norm_label": "health()"
    },
    {
      "label": "chat()",
      "file_type": "code",
      "source_file": "bridge.py",
      "source_location": "L231",
      "id": "hermes_dify_bridge_bridge_chat",
      "community": 1,
      "norm_label": "chat()"
    },
    {
      "label": "ecosystem.config.js",
      "file_type": "code",
      "source_file": "ecosystem.config.js",
      "source_location": "L1",
      "id": "ecosystem_config_js",
      "community": 5,
      "norm_label": "ecosystem.config.js"
    },
    {
      "label": "Hermes-Dify Bridge FastAPI App",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L216",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_app",
      "community": 2,
      "norm_label": "hermes-dify bridge fastapi app"
    },
    {
      "label": "ChatRequest Pydantic Model",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L220-222",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_chatrequest",
      "community": 6,
      "norm_label": "chatrequest pydantic model"
    },
    {
      "label": "POST /chat Endpoint",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L230-251",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_chat",
      "community": 3,
      "norm_label": "post /chat endpoint"
    },
    {
      "label": "GET /health Endpoint",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L225-227",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_health",
      "community": 7,
      "norm_label": "get /health endpoint"
    },
    {
      "label": "run_hermes Async Function",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L197-213",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_run_hermes",
      "community": 3,
      "norm_label": "run_hermes async function"
    },
    {
      "label": "get_latest_session_id Async Function",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L184-194",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_get_latest_session_id",
      "community": 3,
      "norm_label": "get_latest_session_id async function"
    },
    {
      "label": "load_map Session Persistence Function",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L173-177",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_load_map",
      "community": 3,
      "norm_label": "load_map session persistence function"
    },
    {
      "label": "save_map Session Persistence Function",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L180-181",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_save_map",
      "community": 3,
      "norm_label": "save_map session persistence function"
    },
    {
      "label": "STAFF_CONTEXT System Prompt",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L16-170",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "rationale": "Encodes all behavioral rules for Laila (staff AI assistant): memory-first policy via Ruflo, identity verification with owner code 1969, revenue data passcode 1987, PMS skill routing, letterhead mandate, clarification-before-execution rule, and rule amendment protection. Design intent: inject full context on every Hermes call to keep stateless CLI sessions coherent.",
      "id": "bridge_staff_context",
      "community": 2,
      "norm_label": "staff_context system prompt"
    },
    {
      "label": "Session Map (conversation_id \u2192 hermes session_id)",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L14",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "rationale": "Maps Dify conversation IDs to Hermes session IDs persisted in ~/.hermes-dify-bridge-sessions.json, enabling multi-turn conversations across stateless HTTP calls.",
      "id": "bridge_session_map",
      "community": 3,
      "norm_label": "session map (conversation_id \u2192 hermes session_id)"
    },
    {
      "label": "Hermes CLI Binary",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L9",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_hermes_bin",
      "community": 3,
      "norm_label": "hermes cli binary"
    },
    {
      "label": "Static Files Directory (/files)",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L11-13",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bridge_files_dir",
      "community": 2,
      "norm_label": "static files directory (/files)"
    },
    {
      "label": "PM2 App: hermes-dify-bridge",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/ecosystem.config.js",
      "source_location": "L2-16",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "ecosystem_hermes_dify_bridge",
      "community": 2,
      "norm_label": "pm2 app: hermes-dify-bridge"
    },
    {
      "label": "Bamboo Revenue Report April 2026",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": null,
      "source_url": null,
      "captured_at": "2026-04",
      "author": null,
      "contributor": null,
      "id": "bamboo_revenue_april2026",
      "community": 0,
      "norm_label": "bamboo revenue report april 2026"
    },
    {
      "label": "SST Summary Sheet \u2014 April 2026",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: SST",
      "source_url": null,
      "captured_at": "2026-04",
      "author": null,
      "contributor": null,
      "id": "bamboo_revenue_sst_sheet",
      "community": 0,
      "norm_label": "sst summary sheet \u2014 april 2026"
    },
    {
      "label": "Societe Suites Hartamas Revenue Sheet \u2014 April 2026",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Societe April",
      "source_url": null,
      "captured_at": "2026-04",
      "author": null,
      "contributor": null,
      "id": "bamboo_revenue_societe_sheet",
      "community": 0,
      "norm_label": "societe suites hartamas revenue sheet \u2014 april 2026"
    },
    {
      "label": "The Ooak Suites Revenue Sheet \u2014 April 2026",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Ooak April",
      "source_url": null,
      "captured_at": "2026-04",
      "author": null,
      "contributor": null,
      "id": "bamboo_revenue_ooak_sheet",
      "community": 0,
      "norm_label": "the ooak suites revenue sheet \u2014 april 2026"
    },
    {
      "label": "Director Remarks Sheet \u2014 SST Rules & References",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Remarks",
      "source_url": null,
      "captured_at": "2026-04",
      "author": null,
      "contributor": null,
      "id": "bamboo_revenue_remarks_sheet",
      "community": 0,
      "norm_label": "director remarks sheet \u2014 sst rules & references"
    },
    {
      "label": "Check-in / Check-out Daily Report 4 May 2026",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": null,
      "source_url": null,
      "captured_at": "2026-05-03",
      "author": "Laila \u2014 Bamboo Hospitality AI Assistant",
      "contributor": null,
      "id": "checkin_checkout_04may2026_html",
      "community": 4,
      "norm_label": "check-in / check-out daily report 4 may 2026"
    },
    {
      "label": "Societe Suites Hartamas C/I & C/O Section (4 May 2026)",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L32-48",
      "source_url": null,
      "captured_at": "2026-05-03",
      "author": null,
      "contributor": null,
      "id": "checkin_checkout_societe_section",
      "community": 0,
      "norm_label": "societe suites hartamas c/i & c/o section (4 may 2026)"
    },
    {
      "label": "The Ooak Suites C/I & C/O Section (4 May 2026)",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L51-66",
      "source_url": null,
      "captured_at": "2026-05-03",
      "author": null,
      "contributor": null,
      "id": "checkin_checkout_ooak_section",
      "community": 4,
      "norm_label": "the ooak suites c/i & c/o section (4 may 2026)"
    },
    {
      "label": "Bamboo Hospitality Group Sdn. Bhd.",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bamboo_hospitality_group",
      "community": 0,
      "norm_label": "bamboo hospitality group sdn. bhd."
    },
    {
      "label": "Societe Suites Hartamas",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "societe_suites_hartamas",
      "community": 0,
      "norm_label": "societe suites hartamas"
    },
    {
      "label": "The Ooak Suites Mont Kiara",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "ooak_suites_mont_kiara",
      "community": 0,
      "norm_label": "the ooak suites mont kiara"
    },
    {
      "label": "Laila \u2014 Bamboo Hospitality Internal Staff AI Assistant",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "rationale": "Laila is the AI persona injected via STAFF_CONTEXT into every Hermes invocation. Operates on Dify staff channel. Scoped to hotel operations: revenue, check-in/out, duty roster, housekeeping. Identity protected by two passcodes: owner verification (1969) and financial data access (1987).",
      "id": "laila_persona",
      "community": 0,
      "norm_label": "laila \u2014 bamboo hospitality internal staff ai assistant"
    },
    {
      "label": "bamboo-email-api (Port 3001)",
      "file_type": "code",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L144-167",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "bamboo_email_api",
      "community": 2,
      "norm_label": "bamboo-email-api (port 3001)"
    },
    {
      "label": "Ruflo Memory Integration (Staff Context Recall)",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L23-31",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "rationale": "Laila must perform semantic and exact Ruflo memory lookups before responding to any staff request, personalising answers using stored staff profiles. New significant data is stored back after task completion.",
      "id": "ruflo_memory_integration",
      "community": 2,
      "norm_label": "ruflo memory integration (staff context recall)"
    },
    {
      "label": "Little Hotelier PMS Skill (lh_fetch / lh_revenue / lh_hk)",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L70-92",
      "source_url": null,
      "captured_at": null,
      "author": null,
      "contributor": null,
      "rationale": "Mandatory skill invoked for all hotel data: check-in/out via lh_fetch.py --report checkin, revenue via lh_revenue.py, housekeeping via lh_hk.py. Revenue commands gate-kept by passcode 1987.",
      "id": "lh_pms_skill",
      "community": 2,
      "norm_label": "little hotelier pms skill (lh_fetch / lh_revenue / lh_hk)"
    },
    {
      "label": "Bamboo Duty Roster Google Sheet",
      "file_type": "rationale",
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L109",
      "source_url": "https://docs.google.com/spreadsheets/d/1f0cPoNAfvRWc2NPDtuPmM3cd_t-rXO2lJrxEfGTHv2Q",
      "captured_at": null,
      "author": null,
      "contributor": null,
      "id": "duty_roster_google_sheet",
      "community": 2,
      "norm_label": "bamboo duty roster google sheet"
    },
    {
      "label": "Check-in / Check-out Daily Report PDF 4 May 2026",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.pdf",
      "source_location": null,
      "source_url": null,
      "captured_at": "2026-05-03",
      "author": "Laila \u2014 Bamboo Hospitality AI Assistant",
      "contributor": null,
      "id": "checkin_checkout_04may2026_pdf",
      "community": 4,
      "norm_label": "check-in / check-out daily report pdf 4 may 2026"
    },
    {
      "label": "CI/CO Report PDF 2026-05-04",
      "file_type": "document",
      "source_file": "hermes-dify-bridge/files/CI_CO_Report_2026-05-04.pdf",
      "source_location": null,
      "source_url": null,
      "captured_at": "2026-05-04",
      "author": null,
      "contributor": null,
      "id": "ci_co_report_pdf_2026_05_04",
      "community": 4,
      "norm_label": "ci/co report pdf 2026-05-04"
    }
  ],
  "links": [
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L173",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_load_map",
      "confidence_score": 1.0
    },
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L180",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_save_map",
      "confidence_score": 1.0
    },
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L184",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_get_latest_session_id",
      "confidence_score": 1.0
    },
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L197",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_run_hermes",
      "confidence_score": 1.0
    },
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L220",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_chatrequest",
      "confidence_score": 1.0
    },
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L226",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_health",
      "confidence_score": 1.0
    },
    {
      "relation": "contains",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L231",
      "weight": 1.0,
      "source": "bridge_py",
      "target": "hermes_dify_bridge_bridge_chat",
      "confidence_score": 1.0
    },
    {
      "relation": "calls",
      "context": "call",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L232",
      "weight": 1.0,
      "source": "hermes_dify_bridge_bridge_chat",
      "target": "hermes_dify_bridge_bridge_load_map",
      "confidence_score": 1.0
    },
    {
      "relation": "calls",
      "context": "call",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L242",
      "weight": 1.0,
      "source": "hermes_dify_bridge_bridge_chat",
      "target": "hermes_dify_bridge_bridge_save_map",
      "confidence_score": 1.0
    },
    {
      "relation": "calls",
      "context": "call",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L239",
      "weight": 1.0,
      "source": "hermes_dify_bridge_bridge_chat",
      "target": "hermes_dify_bridge_bridge_get_latest_session_id",
      "confidence_score": 1.0
    },
    {
      "relation": "calls",
      "context": "call",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L236",
      "weight": 1.0,
      "source": "hermes_dify_bridge_bridge_chat",
      "target": "hermes_dify_bridge_bridge_run_hermes",
      "confidence_score": 1.0
    },
    {
      "relation": "inherits",
      "confidence": "EXTRACTED",
      "source_file": "bridge.py",
      "source_location": "L220",
      "weight": 1.0,
      "source": "hermes_dify_bridge_bridge_chatrequest",
      "target": "basemodel",
      "confidence_score": 1.0
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L217",
      "weight": 1.0,
      "source": "bridge_app",
      "target": "bridge_files_dir"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/ecosystem.config.js",
      "source_location": "L3",
      "weight": 1.0,
      "source": "ecosystem_hermes_dify_bridge",
      "target": "bridge_app"
    },
    {
      "relation": "calls",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L233",
      "weight": 1.0,
      "source": "bridge_chat",
      "target": "bridge_load_map"
    },
    {
      "relation": "calls",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L236",
      "weight": 1.0,
      "source": "bridge_chat",
      "target": "bridge_run_hermes"
    },
    {
      "relation": "calls",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L239",
      "weight": 1.0,
      "source": "bridge_chat",
      "target": "bridge_get_latest_session_id"
    },
    {
      "relation": "calls",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L241",
      "weight": 1.0,
      "source": "bridge_chat",
      "target": "bridge_save_map"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L198",
      "weight": 1.0,
      "source": "bridge_run_hermes",
      "target": "bridge_staff_context"
    },
    {
      "relation": "calls",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L199-209",
      "weight": 1.0,
      "source": "bridge_run_hermes",
      "target": "bridge_hermes_bin"
    },
    {
      "relation": "calls",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L185-192",
      "weight": 1.0,
      "source": "bridge_get_latest_session_id",
      "target": "bridge_hermes_bin"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L175",
      "weight": 1.0,
      "source": "bridge_load_map",
      "target": "bridge_session_map"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L181",
      "weight": 1.0,
      "source": "bridge_save_map",
      "target": "bridge_session_map"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L140-141",
      "weight": 1.0,
      "source": "bridge_staff_context",
      "target": "bridge_files_dir"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L144",
      "weight": 1.0,
      "source": "bridge_staff_context",
      "target": "bamboo_email_api"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L23-31",
      "weight": 1.0,
      "source": "bridge_staff_context",
      "target": "ruflo_memory_integration"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L70-92",
      "weight": 1.0,
      "source": "bridge_staff_context",
      "target": "lh_pms_skill"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L109",
      "weight": 1.0,
      "source": "bridge_staff_context",
      "target": "duty_roster_google_sheet"
    },
    {
      "relation": "rationale_for",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L16-170",
      "weight": 1.0,
      "source": "bridge_staff_context",
      "target": "laila_persona"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: SST",
      "weight": 1.0,
      "source": "bamboo_revenue_april2026",
      "target": "bamboo_revenue_sst_sheet"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Societe April",
      "weight": 1.0,
      "source": "bamboo_revenue_april2026",
      "target": "bamboo_revenue_societe_sheet"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Ooak April",
      "weight": 1.0,
      "source": "bamboo_revenue_april2026",
      "target": "bamboo_revenue_ooak_sheet"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Remarks",
      "weight": 1.0,
      "source": "bamboo_revenue_april2026",
      "target": "bamboo_revenue_remarks_sheet"
    },
    {
      "relation": "references",
      "confidence": "INFERRED",
      "confidence_score": 0.85,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L89",
      "weight": 0.85,
      "source": "lh_pms_skill",
      "target": "bamboo_revenue_april2026"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: SST",
      "weight": 1.0,
      "source": "bamboo_revenue_sst_sheet",
      "target": "societe_suites_hartamas"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: SST",
      "weight": 1.0,
      "source": "bamboo_revenue_sst_sheet",
      "target": "ooak_suites_mont_kiara"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Societe April",
      "weight": 1.0,
      "source": "bamboo_revenue_societe_sheet",
      "target": "societe_suites_hartamas"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: Ooak April",
      "weight": 1.0,
      "source": "bamboo_revenue_ooak_sheet",
      "target": "ooak_suites_mont_kiara"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md",
      "source_location": "Sheet: SST",
      "weight": 1.0,
      "source": "bamboo_revenue_remarks_sheet",
      "target": "bamboo_hospitality_group"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L32-48",
      "weight": 1.0,
      "source": "checkin_checkout_04may2026_html",
      "target": "checkin_checkout_societe_section"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L51-66",
      "weight": 1.0,
      "source": "checkin_checkout_04may2026_html",
      "target": "checkin_checkout_ooak_section"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L69",
      "weight": 1.0,
      "source": "checkin_checkout_04may2026_html",
      "target": "laila_persona"
    },
    {
      "relation": "references",
      "confidence": "INFERRED",
      "confidence_score": 0.85,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L86",
      "weight": 0.85,
      "source": "lh_pms_skill",
      "target": "checkin_checkout_04may2026_html"
    },
    {
      "relation": "semantically_similar_to",
      "confidence": "INFERRED",
      "confidence_score": 0.95,
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": null,
      "weight": 0.95,
      "source": "checkin_checkout_04may2026_html",
      "target": "checkin_checkout_04may2026_pdf"
    },
    {
      "relation": "semantically_similar_to",
      "confidence": "INFERRED",
      "confidence_score": 0.85,
      "source_file": "hermes-dify-bridge/files/CI_CO_Report_2026-05-04.pdf",
      "source_location": null,
      "weight": 0.85,
      "source": "ci_co_report_pdf_2026_05_04",
      "target": "checkin_checkout_04may2026_html"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L32",
      "weight": 1.0,
      "source": "checkin_checkout_societe_section",
      "target": "societe_suites_hartamas"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/files/checkin_checkout_04may2026.html",
      "source_location": "L51",
      "weight": 1.0,
      "source": "checkin_checkout_ooak_section",
      "target": "ooak_suites_mont_kiara"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "weight": 1.0,
      "source": "laila_persona",
      "target": "bamboo_hospitality_group"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "weight": 1.0,
      "source": "bamboo_hospitality_group",
      "target": "societe_suites_hartamas"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "weight": 1.0,
      "source": "bamboo_hospitality_group",
      "target": "ooak_suites_mont_kiara"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "weight": 1.0,
      "source": "laila_persona",
      "target": "societe_suites_hartamas"
    },
    {
      "relation": "references",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "hermes-dify-bridge/bridge.py",
      "source_location": "L17",
      "weight": 1.0,
      "source": "laila_persona",
      "target": "ooak_suites_mont_kiara"
    }
  ],
  "hyperedges": [
    {
      "id": "laila_hotel_data_pipeline",
      "label": "Laila Hotel Data Pipeline: PMS Skill \u2192 Hermes \u2192 Bridge \u2192 Dify",
      "nodes": [
        "lh_pms_skill",
        "bridge_run_hermes",
        "bridge_chat",
        "laila_persona"
      ],
      "relation": "participate_in",
      "confidence": "INFERRED",
      "confidence_score": 0.85,
      "source_file": "hermes-dify-bridge/bridge.py"
    },
    {
      "id": "bamboo_property_reports_flow",
      "label": "Bamboo Property Reports: Societe & Ooak Revenue + CI/CO",
      "nodes": [
        "societe_suites_hartamas",
        "ooak_suites_mont_kiara",
        "bamboo_revenue_april2026",
        "checkin_checkout_04may2026_html"
      ],
      "relation": "participate_in",
      "confidence": "EXTRACTED",
      "confidence_score": 0.95,
      "source_file": "hermes-dify-bridge/graphify-out/converted/Bamboo_Revenue_April-2026_682b5f52.md"
    },
    {
      "id": "session_continuity_mechanism",
      "label": "Session Continuity: load_map \u2192 run_hermes (resume) \u2192 get_latest_session_id \u2192 save_map",
      "nodes": [
        "bridge_load_map",
        "bridge_run_hermes",
        "bridge_get_latest_session_id",
        "bridge_save_map"
      ],
      "relation": "implement",
      "confidence": "EXTRACTED",
      "confidence_score": 0.95,
      "source_file": "hermes-dify-bridge/bridge.py"
    }
  ]
}