尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证The world is full of connections. Some you know, many you don't. NavGCC maps the people, companies and institutions shaping the Gulf, finds your place among them, and shows the paths to the people you want to meet.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Full-scale, no-cap network map of Abu Dhabi's key industries, institutions and key people, organized in four layers — now with an automation pipeline for news and your LinkedIn network.
| File | What it is |
|---|---|
abu_dhabi_power_hub.html | The map. Open in any browser (keep it in this folder — it loads the three .js files below). |
network_data.js | Source of truth. All sectors, institutions, people, ownership, family ties, aliases. Edit → refresh browser. No build step. |
news_data.js | Auto-generated news signals (tools/match_news.py). |
my_network.js | Auto-generated LinkedIn overlay (tools/import_linkedin.py). Private — keep local. |
news_inbox/ | Drop news articles here as .md/.txt (two [SAMPLE] items included — delete them). |
tools/ | Automation scripts (Python 3, stdlib only). |
data_dictionary.md | Data model and operating rules. |
abu_dhabi_power_hub_v1_plotly_backup.html | Old V1 Plotly map, kept for reference. |
| Layer | Contents |
|---|---|
| L0 · Ruling Core | Al Nahyan ruling family, Presidential Court, Executive Council, SCFEA, UAE Cabinet |
| L1 · Sovereign Capital & State | ADIA, Mubadala, ADQ, IHC/Royal Group, department chairs, ministers, super-connectors |
| L2 · Operators & Sector Leaders | Operating companies and their CEOs across every sector |
| L3 · Private & International Partners | Energy majors (TotalEnergies, bp, Shell, Exxon…), Big Tech (Microsoft, OpenAI, NVIDIA), global finance (BlackRock, Goldman), consulting/audit/law gatekeepers, local private groups (Waha, Trojan, Rotana…) |
Local-people policy: global HQ executives (Sam Altman, Jensen Huang, Larry Fink, the
energy-major CEOs, …) are deliberately excluded — the people layer is local. L3 companies
are anchor nodes; the people who serve them in the UAE surface through the LinkedIn overlay,
and get promoted into PEOPLE once their local role (country manager, UAE managing partner,
Gulf CEO) is verified.
Sectors = GICS 11 + government-side, identical across every region:
Energy 能源 · Materials 原材料 · Industrials 工业 (incl. transport, defense companies,
professional services) · Consumer Discretionary 可选消费 · Consumer Staples 必选消费 ·
Health Care 医疗保健 · Financials 金融 · Information Technology 信息技术 ·
Communication Services 通信服务 (telecom + media + entertainment/sport) · Utilities 公用事业 ·
Real Estate 房地产 — plus Government & Political, Sovereign Capital, Education & Research,
Family Conglomerates. Every region covers all 11 GICS sectors (checked by
tools/gics_migrate.py conventions; keys: energy, materials, industry, consumer_disc, consumer_stap, health, finance, tech, comm, utilities, realestate, gov, sovereign, education, conglomerate).
3 edge types (roles, ownership/control, family) · power score drives node size. Current scale: ~100 people · ~143 institutions · ~298 edges. No cap.
.github/workflows/update.yml runs every 6 hours on GitHub Actions:
fetch fresh news (tools/fetch_news.py, Google News RSS for 20 entity queries)
→ match to network nodes → detect co-mentions → commit. The Alicloud server
pulls every 5 minutes, so new signals appear on the live map unattended.
Candidate relationships accumulate in data/suggested_edges.csv — entity pairs
that keep sharing articles but have no edge yet; review and promote the real
ones into ownership.csv/roles.csv.
For manual data edits, one command does everything:
python tools/update.py "describe the change"
(validates + imports CSVs, re-matches news, commits, pushes → live in ~5 min)
python tools/match_news.py
Drop articles into news_inbox/ (2026-08-25_title.md; first line = title; optional
source: / url: lines). The matcher scans them against every node name + alias
(AKA block in network_data.js), handles line-broken names, suppresses
fragment false-positives ("Al Jaber" inside "Sultan Al Jaber"), and regenerates
news_data.js. Matched nodes get a gold badge on the map and a
Recent signals section in their panel. Idempotent — re-run any time.
python tools/import_linkedin.py
Export your connections first: LinkedIn → Settings & Privacy → Data privacy →
Get a copy of your data → Connections → put Connections.csv in this folder.
The importer fuzzy-matches employers against all institutions (suffix-stripping,
alias-aware) and writes my_network.js. Institutions you can reach get a
green dashed ring and your contacts appear in their detail panel — so the path
you → contact → institution → key person is visible on the map.
Privacy: my_network.js contains your personal contacts — never share it with the map.
The database is not static. Growth runs on three streams, executed by the daily 9 AM enrichment agent (a scheduled Claude session on this machine):
data/backfill_queue.csv (regenerated by
tools/backfill_queue.py) lists every institution still thin on leadership,
priority-ordered. The agent works the queue daily — researching each company's
current chairman/CEO/board with sources and adding them.ns flags re-checked against official sources and
flipped to v (or corrected), rotating through the regions weekly.
Every dossier also carries a Search on LinkedIn ↗ button (people-search
prefilled with the entity name) for manual network digging; automated LinkedIn
scraping is deliberately not part of the system (ToS) — use the official
Connections.csv export + tools/import_linkedin.py for your own network.The same pattern extends to any content: put items in an inbox, match on the alias
table, emit a *_data.js overlay. Candidates: press releases, tender awards,
event attendee lists, podcast transcripts.
The engine lives in map_template.html (stamped into every region page by
tools/build_regions.py); the landing page is the hand-editable index.html.
Connections.csv
export, a profile link, or manually) appear as a "You" pin linked to them; organizations
where unmatched contacts work become possible ways in. Updates live, no reload.?demo=1) — sample contacts that
are clearly labeled and never mixed with real data.dvh and visualViewport; reduced-motion respected.EN / 中文 switches UI chrome only; all data stays English. window.__map exposes a
debug/automation handle.
Repo: https://github.com/qizhangumich/power_network — index.html is the site entry
(identical to abu_dhabi_power_hub.html); zero-config static hosting.
git push then auto-deploys. Or CLI: vercel login
once, then vercel --prod in this folder..gitignore keeps my_network.js (your LinkedIn contacts) and
Connections.csv out of the repo — the public site simply shows no LinkedIn overlay.
Never commit these files.Facts vs. analysis stay separate. Roles/edges marked needs source are public-record but not yet re-verified against an official page. L3 "advisory ecosystem" edges (consultancies → ADDED etc.) are deliberately generic — replace with specific sourced engagements as you learn them. Parked V1 names pending role verification: Etienne Petit, Sherif Tawfik, Mohamed Almarzooqi.
Eight maps on one engine, linked by the folded region menu in the top bar:
| Path | Region | Core |
|---|---|---|
/ | Abu Dhabi | Al Nahyan · ADIA/Mubadala/ADQ/IHC · full news pipeline |
/dubai/ | Dubai | Al Maktoum · ICD/Dubai Holding · Emirates/DP World/Emaar |
/northern/ | Sharjah · RAK · Fujairah · Ajman · UAQ | Al Qasimi/Al Sharqi/Al Nuaimi/Al Mualla · Crescent/BEEAH/Wynn |
/saudi/ | Saudi Arabia | Al Saud (MBS) · PIF/Aramco · giga-projects |
/qatar/ | Qatar | Al Thani · QIA/QatarEnergy · LNG partners |
/bahrain/ | Bahrain | Al Khalifa · Mumtalakat/Bapco/Investcorp |
/oman/ | Oman | Al Said · OIA/OQ/PDO |
/kuwait/ | Kuwait | Al Sabah · KIA/KPC · merchant families |
Each region: <region>/network_data.js (same schema). tools/build_regions.py
stamps every region page from the root index.html, so design changes propagate
everywhere (update.py runs it; a region ships once its network_data.js exists —
add a new one by adding a row to REGIONS and a dataset).
News automation + CSV layer currently cover Abu Dhabi only; per-region
parameterization is the next step. All non-AD datasets are V1 backbones —
review the ns flags.