Thirteen open data sources, one reconciled dataset with a vector store, separate web research, and a method that shows its evidence and its limits. Written for readers who need to trust, reuse or check the results.
The core dataset is reconciled, stored and searched inside the platform, so figures are exact and every run is reproducible.
Norad open data
What: 47,887 disbursement rows (2015–2025) for 20,707 agreements with 2,952 partners in 146 recipient countries.
How: Processed in Databricks Delta (bronze → silver → gold); gold totals reconcile exactly to the source. Served from Lakebase Postgres.
Updated: Refreshed by an operator run after the source updates (scripts/landscape_sync.py).
Built from the same data
What: Every agreement's title and description, embedded with Vertex AI text-multilingual-embedding-002 (768 dimensions), so Norwegian and English texts match.
How: pgvector in Lakebase with an HNSW cosine index. A brief searches it with the reader's purpose, restricted to the countries and years in scope.
Updated: Re-embedded when the data is refreshed.
Written by the app
What: Watches, runs, every decision with its reason, briefs and feedback.
How: Lakebase schema landscape_app, next to the data, so each run starts from the last one.
Updated: Written on every run.
Each card in a brief carries its publisher, scope and retrieval date. A source that fails is shown as missing, never replaced.
| Source | What it measures | Scale | Updated | How the app gets it | Themes |
|---|---|---|---|---|---|
| OECD Creditor Reporting System OECD | Every official donor's disbursements by recipient and sector, and project-level records with channel and description | USD millions, current prices | Yearly latest year lags about one to two years | Live query per brief | Funding |
| OECD DAC1 OECD | Donors' total official development assistance, including the provisional latest year | USD millions | Yearly provisional figures each spring | Live, cached per server instance | Funding |
| OECD mobilised private finance OECD | Private money mobilised by official development finance, by mechanism (guarantees, syndicated loans, credit lines, direct investment, fund shares, co-financing) and sector | USD millions; published for provider groups only | Yearly | Live query per brief | FundingEconomy and investment |
| UN OCHA Financial Tracking Service UN OCHA | Humanitarian response plans: required vs funded, by year and cluster, with the largest donors | USD millions and % funded | Daily | Live query per brief | FundingHumanitarian |
| World Bank World Development Indicators World Bank | Need and context indicators the planner chooses (education, health, energy access, poverty, FDI inflows …) | Indicator units | Yearly staggered by indicator | Live query per brief | Development needsEconomy and investment |
| Worldwide Governance Indicators World Bank | Control of corruption, rule of law, regulatory quality, government effectiveness, political stability, voice and accountability | Percentile rank 0–100, higher is better | Yearly | All countries fetched once per server instance | GovernanceEconomy and investment |
| IMF World Economic Outlook IMF | Real GDP growth, inflation and government debt, including projections | % and % of GDP | Twice a year April, October | All countries fetched once per server instance | Economy and investment |
| INFORM Risk Index European Commission JRC | Risk that a crisis overwhelms national capacity: hazard and exposure, vulnerability, lack of coping capacity | 0–10, higher is riskier | Yearly | Cached per instance; a dated copy of the edition if the API is unreachable | Risk and environmentHumanitarian |
| ACAPS INFORM Severity Index ACAPS | How severe each ongoing crisis is, its drivers and three-month trend | 0–10 | Monthly | Monthly edition from the Humanitarian Data Exchange, cached | HumanitarianRisk and environment |
| ACAPS Humanitarian Access ACAPS | How hard it is for aid to reach people in each crisis, with its main constraints | 0–5, higher is harder | Monthly edition | ACAPS API, cached | Humanitarian |
| UNHCR refugee statistics UNHCR | Refugees and other displaced people hosted | People | Yearly with a mid-year update | Live query per brief | HumanitarianDevelopment needs |
| GDACS disaster alerts UN OCHA and European Commission JRC | Floods, cyclones, earthquakes and droughts of the last twelve months, with location and alert level | Green, orange, red | Near real time | Live; a circuit breaker says 'unavailable', never 'no alerts' | Risk and environmentHumanitarian |
| Web research Google Search via Gemini grounding | Current reporting on the question, with source links | Text | Live | Shown in a separate panel; never cited as evidence |
Country outlines: Natural Earth (public domain). Each source is used under its publisher's terms.
● main use · ○ useful context. A brief includes whatever applies to its countries; the reader's purpose decides what leads.
| NGO programmes | Foundations and donors | Humanitarian funds | Social enterprises | Investors and companies | Researchers and officials | |
|---|---|---|---|---|---|---|
| Who funds what, and through whom (Norwegian data, OECD CRS) | ● | ● | ○ | ● | ● | ● |
| Recent aid cuts and budgets (OECD DAC1) | ○ | ● | ● | ○ | ○ | ● |
| Private finance and guarantees (OECD mobilisation) | ○ | ● | ● | ● | ||
| Humanitarian funding gaps (OCHA FTS) | ● | ● | ● | ● | ||
| Corruption, rule of law, regulation (WGI) | ○ | ● | ○ | ● | ● | ● |
| Economic outlook (IMF) | ○ | ● | ● | ● | ||
| Crisis risk and severity (INFORM, ACAPS Severity) | ● | ● | ● | ○ | ● | ● |
| Access for aid delivery (ACAPS Access) | ● | ○ | ● | ○ | ○ | ● |
| Recent disasters (GDACS) | ● | ○ | ● | ● | ● | ○ |
| Need indicators (World Development Indicators) | ● | ● | ○ | ● | ● | ● |
A planner model turns the reader's words into a scope: countries (ISO3 codes), DAC sector codes, indicators, a semantic search query and a web query. The server validates every code against the official lists and drops anything unknown.
The applicable sources among 13 are read in parallel, live or from a recent cache. From Lakebase: exact SQL aggregates for the scope (totals by year with trend lines, partners, channels, sub-sectors, policy markers) and the largest agreements. From the vector store: the agreements whose descriptions are closest in meaning to the reader's purpose (the 14 nearest, 8 kept after removing duplicates of the largest agreements). From the OECD: all donors in the country and sector, and other donors' individual projects matched on purpose codes. Context indices cover up to three countries. Each result becomes a numbered evidence card with its publisher, scope and retrieval date.
Relevance comes from the reader's purpose, not from volume. The planner states the reader's need; the semantic search surfaces agreements that match it in meaning, even with different wording; the composing model is told to lead with what changes the reader's decision, to pair a donor's global trend with its local trend, and to prefer evidence over generalisation.
One Gemini 3.1 Pro call writes the brief from the reader's request and the evidence cards; only the cards count as evidence. Every figure must cite its card. It may not make claims about the reader's own organisation, and dramatic wording is replaced by neutral words.
Automated checks look for each cited number in its evidence cards (allowing honest rounding) and flag those they cannot find, confirm citations point to real cards, flag organisations named in no card, flag one-sided trend claims, and remove invented claims about the reader. The checks are heuristics, not proof: they flag some unsupported claims and miss others, so flags are shown to the reader and a person should still review the brief.
A separate search-grounded model reports current news. A comparison step lists where it differs from the brief. It is never mixed into the cited evidence.
For a watch, SQL over the recorded payments (2015–2025, refreshed by an operator) finds the latest-year change in funding, agreements whose first or last recorded payment year changed, and new partners. These are payment records, not contract start or end dates. A decision model weighs these signals with the reader's feedback and last brief, and chooses a new brief, a short update or a hold, with a reason. Scheduled checks run weekly; a reader's explicit check or new feedback can bring one forward. Fixed rules (evidence available, the cadence, an email allowlist) decide whether a brief may be sent at all.
Stated plainly, so results are used for what they can support.
Demonstration prototype: briefs are generated automatically and may contain errors. Quality-assure against the linked sources before use.