Inspiration

nonprofits don't have engineers or AI budget. they juggle 11 saas tools (bloomerang, salesforce npsp, microsoft 365, zoom, sharepoint, instrumentl, quickbooks, powerbi, powerautomate, knowbe4, plus on-chain rails) and the answer to almost every real question lives across three or four at once.

the engineers who could glue this together work at stripe and openai. a $200/hr integration consultant isn't in the budget when every dollar is mission-restricted. so the data stays siloed, executive directors spend their days tab-switching, and capital campaigns repeat forever because nonprofits have zero recurring revenue infrastructure beyond donations. every dollar requires fresh fundraising.

we built kali to close that gap. it's the agentic context layer for mission-driven orgs: one chat for every saas they own, with citations on every answer, audit logs on every tool call, plus two onchain rails that give nonprofits permanent passive infrastructure they could never afford to build themselves. agent-driven USDC donations via HTTP 402, and cause coins on solana that turn community awareness into recurring fee revenue routed 100% to the treasury.

the nonprofit software market is $4.95B in 2026, projected to hit $7.24B by 2031 (7.9% CAGR). the incumbents (blackbaud, bloomerang, salesforce npsp) are silent on agents and silent on onchain. kali is designed to be the tool to help people who help people.

What it does

the chat layer. one question, every tool, with receipts.

ask "who's our top lapsed donor most likely to renew?" and kali pulls bloomerang giving history, m365 email cadence, zoom event attendance, ranks candidates, cites every record. ask "are we on track for restricted-fund commitments?" and it crosses quickbooks balances with program budgets and instrumentl grant deadlines. immutable audit log on every tool call, csv-exportable for compliance.

13 connectors. ~70 tools. parallel tool-use streamed live over SSE, so the ui shows the agent hitting 7 tools at once instead of a 12-second loading spinner.

the donation rail (x402). agent-native fundraising over HTTP.

kali implements the HTTP 402 payment protocol. an AI agent (claude, gpt, anyone's) can hit /api/x402/, get a 402 with accepted payment methods, settle in USDC on solana devnet, and receive a signed PDF receipt at /r/. fully programmatic, no human in the loop. recurring subscriptions via inngest cron. soft credits auto-flow back into bloomerang and salesforce npsp. OFAC/TRM screening on every payment. agent passport at /api/x402/agents//passport for delegation proofs.

this is donations as native infrastructure for the agent economy. when AI agents are buying things on behalf of users, nonprofits need to be in the routing table.

the issuance rail (cause coins). transparent participatory giving.

a nonprofit clicks "launch cause coin" and kali deploys a meteora dynamic bonding curve token on solana with the org's EIN baked into onchain metadata, 1% trading fee routed 100% to the treasury wallet, 0% creator fee, mint-locked at deploy (no rug), graduation to meteora DAMMv2 with locked LP, and member-directed governance over a community grant fund weighted by holder balance. at $50K/day token volume × 1% fee, that's $182K/year in passive recurring revenue for an org that previously had none. the agent reasons over trade flow alongside donor data: "$RVRT generated $2.1k in fees this week from 312 holders, 2 of whom are also $5K+ bloomerang donors."

framing matters. this is not pump.fun for nonprofits. it's transparent participatory giving with onchain rails. speculation is a side effect; awareness and recurring fees are the goal.

How we built it

stack: next.js 16 (turbopack), typescript strict, tailwind 4, bun, app router. claude sonnet 4.6 with prompt caching pinned to the system prefix and tool definitions. supabase, drizzle ORM, postgres. inngest for background jobs. privy for per-tenant server wallets with delegated signing. solana web3.js, SPL token-2022.

13 connectors, ~70 tools, ~330 tests. every connector is a zod-typed schema plus query layer plus tool surface. one fictional nonprofit ("rivertown community foundation") seeded across all thirteen via a deterministic RNG, so the same person shows up as a donor in bloomerang, contact in salesforce, attendee in zoom, grant recipient in instrumentl, and holder of $RVRT cause coin. cross-references stable across runs.

context layer. rule-based entity resolution with a confidence ladder (email exact > phone normalized > full-name + corroborating > substring) plus pgvector embeddings (voyage-3 with openai fallback) for semantic retrieval over docs, emails, transcripts. a context.entityProfile meta-tool aggregates one human across every connector in a single call.

agent runtime. SSE protocol emits start | tool_call | tool_result | text | done. parallel tool_use blocks emit tool_call events before handlers run, then tool_result events as each completes. judges watch the agent fan out across 7 tools at once.

x402 verifier. decodes the X-Payment header, validates the inner solana tx (recipient ATA, USDC mint, amount, blockhash, signatures), screens against TRM/OFAC, settles, and signs a receipt. recurring charges run on inngest cron, signed via privy delegation proofs.

cause coin stack. deploy via meteora dynamic bonding curve SDK with EIN in metadata. trades emit fee splits (100% to treasury, 0% to creator). inngest indexer polls trades q10s/q60s. graduation watcher detects threshold and migrates to DAMMv2 with streamflow LP lock (12mo). member-directed governance via snapshot-style voting weighted by holder balance.

design system. locked kawaii brand: matcha-cup mascot (7 inline SVG poses, zero-bundle), 5-color strawberry-matcha palette, sticker-pack wordmark. the brand decision was deliberate. nonprofit executive directors are drowning in clinical saas blue (every fundraising tool, every CRM, every dashboard product looks identical, all of them feel like enterprise software designed for someone else's workflow). soft pink and sage green on cream signals respect: this was built with you in mind, not as a vertical-specific reskin of a generic b2b template. the cuteness is a credibility filter. it works because the receipts (immutable audit logs, onchain signatures, citation chains) carry the seriousness so the surface doesn't have to. every component themed: chat, dashboard, 6-step onboarding wizard. the entire surface area looks nothing like nonprofit saas, and that's the point.

discovery surfaces. MCP server at /api/mcp for agent tool catalog. well-known directory at /pay/.well-known/x402-directory.json, a public registry of nonprofits accepting x402 that mirrors the x402 spec discovery format.

Challenges we ran into

  • deterministic seed across 13 tools. every cross-tool join depends on the same person showing up everywhere with stable cross-references. one seeded RNG feeds every projection. one bug breaks every demo query.

  • prompt caching with dynamic tool inventories. the cached prefix has to stay byte-stable while the tool list tail changes. cache invalidation kept silently breaking until we split the system prompt and pinned cache_control to the right boundary.

  • parallel tool calls over SSE. anthropic streams parallel tool_use blocks. we emit tool_call events before handlers run, run handlers concurrently, emit tool_result events as each completes, all without losing ordering for the ui.

  • bonding curve math + graduation. meteora DBC parameterization, slippage bounds, fee routing 100% to treasury, mint-lock at deploy, plus the graduation watcher that has to detect threshold and atomically migrate liquidity to DAMMv2 with a streamflow lock.

  • x402 verifier security. decoding payment headers, validating the inner solana tx end-to-end (recipient ATA + mint + amount + blockhash + signatures), TRM/OFAC screening, signed receipts that can't be tampered with, all while still answering in under 2s.

  • dual-mode solana. live devnet transfers when authorized, simulated otherwise. the demo always works. real money moves when we want it to.

Accomplishments that we're proud of

  • 13 connectors shipping in a weekend, each with zod schemas, tests, and real cross-tool joins.
  • two production onchain rails: x402 agent donations (HTTP 402, USDC, recurring, signed receipts, CRM sync) and cause coins (bonding curve, 100% fee routing, graduation, governance), both live on solana devnet.
  • first nonprofit infra to ship cause coins. no incumbent has touched this space.
  • first nonprofit infra to implement HTTP 402 / x402. when AI agents start paying for things, nonprofits are in the routing table.
  • immutable audit log on every tool call. the compliance receipt nonprofits actually need before trusting AI.
  • a brand that doesn't look like every other nonprofit saas. strawberry-matcha kawaii as deliberate positioning, not decoration.
  • MCP server + x402 well-known directory. kali isn't just an app, it's discoverable infrastructure.

What we learned

  • the marginal cost of completeness is near zero with parallel agents. ship the whole stack, not a slice.
  • typed everywhere or pay later. zod at every connector boundary caught more bugs than tests did.
  • streaming + parallel tool use is the demo. nobody is impressed by "the model thought for 8 seconds." they're impressed watching it hit 7 tools at once.
  • audit logs aren't a feature. they're trust. nonprofits cannot ship a hallucinating agent.
  • solana on devnet demos onchain money without spending money, and the signature is just as verifiable on solscan.
  • soft brand + hard receipts is a positioning moat. nonprofits are drowning in clinical saas; warmth differentiates without sacrificing credibility.

What's next for kali.

  • discovery interviews through the warm-intro pipeline (matthew's dad's network of small/mid nonprofits), turning demo into product feedback.
  • mainnet solana with multi-sig treasury controls for production disbursement and real cause coin launches.
  • live OAuth connectors against the real saas tools. current fixtures are realistic; next step is real org data behind real auth.
  • structured query DSL compiling to safe SQL for the analytics layer.
  • agent-to-agent x402. when openai's agents start booking things and anthropic's agents start buying things, the nonprofit donation endpoint should already be in the discovery directory. we built the infrastructure ahead of the demand curve.
  • the bigger arc. kali is the wedge into agentic infrastructure for mission-driven orgs. every nonprofit, school district, public-health agency, mutual aid network, and faith community runs the same fragmented stack. one chat, every tool, with receipts, plus the rails to actually move money: onchain, transparent, programmatic, recurring.

we want to be the platform every mission-driven org runs on by 2030. cause coins and x402 are how we get there without burning the runway.

Built With

  • anthropic
  • bun
  • claude
  • drizzle
  • figma
  • gsap
  • higgsfield
  • inngest
  • lenis
  • mcp
  • meteora
  • next.js
  • node.js
  • openai
  • pgvector
  • postgresql
  • privy
  • react
  • server-sent-events
  • shadcn
  • solana
  • solana-web3.js
  • spl-token
  • sql
  • streamflow
  • supabase
  • tailwind-css
  • trm-labs
  • typescript
  • usdc
  • vercel
  • voyage-ai
  • x402
  • zod
Share this project:

Updates