Not connected

Circles Flow

How Mutual Aid Map uses Circles primitives in the MVP.

Pathfinding transfer, not a bolt-on checkout
Funding goes through the connected Safe injected by the Circles host. The app checks trust-path capacity and builds an advanced CRC transfer.
  1. Requester opens the app in the Circles host and creates a local aid request with their Safe address as recipient.
  2. The app encodes the request into a share link so funders can import the same need without a backend.
  3. A funder opens the link in the Circles playground/host, checks max transferable CRC via @aboutcircles/sdk pathfinding, then funds with sendTransactions().
  4. The host signs and submits the flow-matrix transaction through the funder Safe; the app records returned transaction hashes locally.
const runner = {
  address,
  sendTransaction: async (txs) => sendTransactions(
    txs.map((tx) => ({
      to: tx.to,
      data: tx.data,
      value: tx.value?.toString() ?? '0',
    }))
  ),
};

const sdk = new Sdk(undefined, runner);
const avatar = await sdk.getAvatar(address);
await avatar.transfer.advanced(recipient, amountAtto, {
  useWrappedBalances: true,
});
Why it fits circles/garage
The app is designed around human trust, direct CRC funding, repeat use, and invite/share loops.
Circles integration

Profile view, trust stats, pathfinding max flow, and advanced CRC transfers.

Usefulness

Small urgent needs become fundable links communities can circulate quickly.

UX

A map-first aid layer with clear progress, urgency, and wallet state.

Activity/referrals

Every request produces a playground link that invites a funder to open the app.