Inspiration

BetterSide helps people understand humanitarian needs and find projects they can support. It brings public reports and information on responding organizations into one workspace. AG Grid lets people inspect the evidence, and PayPal lets them set up monthly support for a project.

A food security assessment, an organization’s reported presence, and an appeal’s funding record answer different questions. We built BetterSide to make those records easier to explore together while keeping their sources, dates, and measures visible. OCHA Centre for Humanitarian Data

What it does

Find a need and see who is responding

The globe organizes reported needs by place and cause, including hunger, displacement, and flooding. Each record identifies the measure, geography, assessment period, and source. The Organizations directory shows where organizations report working and links to their websites or donation pages when available.

Compare records in AG Grid

BetterSide uses AG Grid to display the records behind a chat answer. Users can filter the results, open the source records, and export them to Excel. AG Charts plots historical observations, and Compare data exposes the same series in AG Grid so users can check each reported value and its reference period.

Set up and manage recurring support in PayPal

BetterSide associates each contribution goal with an eligible project and a monthly amount. PayPal Sandbox handles approval of the recurring subscription. Goals shows the subscription status and next billing date, while Contributions records payment history. AG Studio groups payments by project or month and provides access to individual receipts.

How we built it

Part of BetterSide Technology What it handles
Humanitarian data HDX HAPI, Next.js Brings reports into a common format with their source and reference period.
Globe and chat MapLibre, AWS Bedrock Shows where needs are reported and retrieves records that answer a question.
Data comparison AG Grid, AG Charts Shows trends alongside the individual observations behind them.
Recurring contributions PayPal Subscriptions, DynamoDB Handles approval and records subscription status and completed payments.
Contribution reports AG Studio Groups payments by project or month and shows individual receipts.

Humanitarian data, maps, and chat

BetterSide uses HDX HAPI to retrieve indicators including IPC food insecurity assessments, IOM internal displacement estimates, and OCHA response funding. It also reads hazard and emergency feeds from USGS, GDACS, NASA EONET, and IFRC GO. The Next.js server maps provider records to a common structure while retaining each measure, reference period, geography, and source. MapLibre displays those records on the globe. In chat, an AWS Bedrock model calls typed tools to search records, retrieve historical series, find organizations, and prepare contribution goals.

AG Grid, AG Charts, and AG Studio

The browser passes the returned records directly to AG Grid. A historical series can be drawn by AG Charts or opened as a grid with one detail row per observation. AG Studio uses a separate data source built from the signed-in user's contribution ledger. We configured a custom totals widget, a chart grouped by project or month, and a receipt grid that uses the same project filter.

PayPal Subscriptions and payment reconciliation

The server validates the project and amount, creates a monthly PayPal billing plan, and stores the subscription ID with the goal in DynamoDB. The buyer approves on PayPal. On return, BetterSide reads the subscription from PayPal and checks the subscription, plan, and goal identifiers before showing the updated status. Signed webhooks and an explicit refresh reconcile completed payments into the ledger. The PayPal transaction ID keeps a payment from being counted twice.

Challenges we ran into

Choosing the right measure

An early follow-up about internal displacement could retrieve refugee data. We changed the trend tool to carry the selected record's measure and scope into the query and reject incompatible datasets. An IOM estimate of people displaced within their country and a UNHCR count by country of asylum now take separate paths through the trend tool.

Handling approvals and payments separately

PayPal can return an active subscription before returning any transactions. We updated the parser to accept an empty transaction response and separated subscription state in Goals from payment history in Contributions. We also coordinated the cache across server instances after concurrent requests to the same humanitarian provider began hitting rate limits.

Accomplishments that we're proud of

BetterSide connects a project’s monthly goal to a PayPal subscription and associates recorded payments with that project. The AG Studio report lets users inspect the receipts behind their contribution totals.

What we learned

A date column is only useful when you know what it dates. We kept the assessment period separate from the publisher's update date, so people can compare observations by the period they describe. The same principle applies to billing. An approved agreement establishes a schedule. A receipt records a payment.

What's next for BetterSide

We want to work with aid organizations to publish projects with named recipients, concrete funding needs, and updates on what was delivered. That work includes confirming project ownership and onboarding recipients before accepting live contributions. On the research side, we want to show more of each source's geographic detail and distinguish projected figures from observed assessments wherever both are available.

The hosted app is accessible through Sign in with demo. Open BetterSide

Built With

Share this project:

Updates

Submission history