Inspiration

Selling to Africa online still means one account, one integration and one currency for every country. Buyers pay with mobile money, bank transfer, USSD and cash vouchers, and a card form alone misses many of them. Sellers lose buyers at checkout, and every new country is a new setup.

We are Prone Data, a small team with roots in Guinea and Cameroon, based in France. We built Prone Data Learning to teach AI and automation across Africa, and we hit this wall ourselves. So we built the layer we were missing: ProneBridge, one checkout for every African market. PayPal is the rail the world already trusts. AI is what makes the layer smart enough to run itself.

What it does

ProneBridge is one app with three tabs, like a browser: Buyer, Seller and Admin. They update each other live.

  • Buyer. A storefront and a checkout. The buyer picks a country, and the price, the currency and the payment methods follow. Method Match puts the method most likely to work first, with its numbers.
  • Seller. A dashboard of every payment, customer, payout, payment link and country. An AI copilot answers questions about the business in plain words and prepares changes, which only happen when the seller confirms.
  • Admin. The view of the whole network. Every payment gets a risk rating before any money moves: low goes through, medium waits for a person, high is blocked. The admin also marks payment corridors working, slow or down, and has a fairness page that proves country never decides risk.
  • Demo director. Eight one-click scenarios, from a sale to a card testing attack to a mobile money outage, run through the same checkout, rules and notifications as a real payment.

Real and simulated. PayPal runs in the PayPal sandbox and the AI is live. Local payment methods (mobile money, bank transfer, USSD, cash voucher), exchange rates and all demo data are simulated, and the app labels each one. No bank, wallet or payment company is integrated or named as a partner.

How it uses PayPal

PayPal is the payment rail.

  • Checkout. The PayPal JavaScript SDK v6 draws PayPal's own button and card fields, so card numbers go to PayPal and never to our server.
  • Orders v2. The server creates the order with the price read from the database, never from the browser, and captures it after the buyer approves.
  • Payouts. Sellers are paid in one PayPal Payouts batch. The batch id is the idempotency key, so a retry never pays twice.
  • Webhooks. Verified by PayPal itself and written once by event id, so nothing settles twice.
  • US dollars. Everything settles in US dollars, so the diaspora and international buyers can pay a seller in Africa with a method they already trust.

How it uses AI

The AI is real and live, on OpenAI's Responses API. It has two jobs and a strict limit on both.

  • The seller copilot (gpt-6.1-sol) has twelve strict tools. It reads the seller's own data, so every number comes from the database. It can prepare a change, such as turning a payment method on or making a payment link. A change is only saved as a proposal. It happens when the seller presses Confirm, and it expires after fifteen minutes. It cannot refund, delete or edit a price.
  • Notes on held payments (gpt-6-luna). The rules score the payment. The AI writes one or two plain sentences from what the rules found. It is never told a name, an email or a country, and the rules' own sentence stands if the AI is off, slow or over budget.

The rules decide. The AI explains. A daily token budget and rate limits keep cost under control.

How we built it

One npm package. React 19 and Vite on the front, with AG Grid Community for the tables. A Hono API in layers (routes, controllers, services, repositories) that runs unchanged as a Vercel function, on Node or in Docker. Supabase Postgres with row level security on every table, and Supabase Realtime for the live signals, which carry ids and nothing else.

We tested it like a product: 1,328 tests on a real Postgres in memory, including end to end journeys through the real app and the real API, a fairness experiment, and a security suite. A strict Content Security Policy was checked in a browser against the PayPal SDK.

Challenges we ran into

  • An honest demo. Local methods are simulated, so we labeled every simulated thing in the app and the README and never name a bank, wallet or payment company as a partner.
  • Fairness. A fraud engine that quietly learns that one country is riskier does harm. So country is not an input at all. The engine takes a closed list of signals and refuses anything else with an error. A test shuffles every buyer's country across the history and requires that not one score moves, and a control proves the test would notice if it could.
  • An AI that can act. The copilot can change a seller's setup, so it never does on its own. It proposes, the server writes the proposal in plain words, and a person confirms.
  • A strict policy. The browser check caught our own theme script being blocked by the Content Security Policy. We moved it into a file instead of loosening the policy.

Accomplishments that we are proud of

  • A fraud engine that cannot use country, name or nationality, with tests that fail the build if one gets through.
  • A copilot that is useful and cannot hurt anyone: every number from the database, every change confirmed.
  • A demo director that runs real traffic, including an attack, through the real pipeline.
  • No blank page anywhere: every page has loading, empty and error states, and a brand new empty database opens cleanly.

What we learned

Trust is the product. A seller trusts a number because it came from the database, a buyer trusts a checkout that explains itself, and a judge trusts a demo that says what is real. Most of the work was making each of those true and provable.

What is next for ProneBridge

Sign-in and roles, so each seller reaches only its own data. Real local payment rails through licensed providers, behind the same checkout. PayPal in live mode once those exist. More countries, and Method Match learning from real results instead of demo data.

Built With

Share this project:

Updates

Submission history