The UN Transparency Portal makes financial data from across the UN System accessible through interactive visualizations. Explore who contributes, which organizations receive funding, where resources are deployed, and which Sustainable Development Goals they support.
- Contributors — Treemaps and trends showing government and donor contributions by financing instrument
- Entities — Spending breakdowns for 48+ UN organizations
- Countries — Interactive world map with geographic spending data
- SDGs — Grid visualization of spending by Sustainable Development Goal
| Source | Coverage | Description |
|---|---|---|
| CEB Financial Statistics | 2011–2024 | Audited financial data from 48+ UN System organizations |
| UN Secretariat Spending | 2019–2023 | Granular breakdown into 150+ departments and missions |
| UNINFO | 2022–2024 | Cooperation Framework data for 127 countries |
Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS 4, Recharts, UNDP Data Visualization Library (for map component)
Data Processing: Python 3.13+, pandas, requests
src/
├── app/ # Next.js app router (single-page app)
├── components/ # React components
│ ├── *Treemap.tsx # Interactive treemap visualizations
│ ├── *Sidebar.tsx # Detail panels for selections
│ ├── *TrendsChart.tsx # Time series charts
│ ├── charts/ # Reusable chart primitives
│ └── ui/ # Base UI components (shadcn)
├── lib/ # Data loading, entity/SDG/region mappings
├── hooks/ # Custom React hooks
└── types/ # TypeScript interfaces
python/ # Data pipeline scripts (numbered, run in order)
public/data/ # Processed JSON served to frontend
├── {view}-{year}.json # Year-specific data per visualization
├── uninfo-countries/ # Per-country UNINFO data (127 files)
└── manifest.json # Data availability metadata
data/ # Raw/intermediate data (gitignored)
├── ceb/{raw,clean,fused}/ # CEB data processing stages
└── uninfo/raw/ # Cached UNINFO API responses
docs/ # Methodology documentation
└── research/ # Data source research notes
npm install
npm run devPython scripts in python/ fetch and process raw data into JSON. Run them in numbered order with uv run <script>.py.
See docs/ for detailed documentation:
- Data Availability — What data exists for which years
- Data Fusion: Revenue — How revenue sources are combined
- Data Fusion: Expenses — How expense data is merged
- Research Notes — Background research and data source analysis
MIT