Karma ships - May edition

Mahesh Murthy
Karma ships - May edition

May was a big month at Karma. We closed out the multi-phase migration that moves all offchain milestone state onchain, shipped a new AI Interface that puts the chatbot at the center of any community grant program, and stood up the infrastructure to let AI agents (both ours and yours) connect to Karma directly. Across 276 PRs and 134 issues, here's everything that landed.

By the numbers

  • 276 PRs merged across our repos
  • 134 issues shipped to production
  • 25+ new features and capabilities
  • 14 UX improvements
  • 30+ bug fixes
  • 27 Filecoin-focused updates as we prepared for ProPGF Batch 3
  • 3-phase on-chain milestones migration completed

The AI Interface for funding communities, plus AI evaluation for everyone

Filecoin is one of the most active grant programs we work with, and ProPGF Batch 3 opened on May 26. In the weeks leading up to it, we rebuilt the grant interface around the AI assistant. The chatbot is no longer a panel off to the side. It's the primary way applicants explore programs, ask about eligibility, and figure out how their work fits.

A lot went into making that experience worth using. We ingested the full Filecoin documentation into the RAG knowledge base, rewrote how the bot returns answers (no more "Based on the knowledge base..." preamble, step-by-step instructions inline instead of pointers to external guides), and added a thumbs up/down rating system tied to Langfuse so we can see what's working. We also taught the agent to answer reviewer-scenario questions like "what's Eva reviewing this week?" and to surface cross-project context when a reviewer is evaluating someone they've seen before.

Alongside the Filecoin work, we shipped general-purpose AI evaluation of grant applications. Paste your evaluation criteria, upload a CSV of applications, and get scored results back in minutes instead of weeks. Reviewers also get richer context now: when they open an application, AI pulls the team's historical milestones, impact metrics, and past program participation from their Karma profile and surfaces it right in the review workspace. Less tab switching, better decisions.

OAuth for AI agents, and Hermes for non-profits

The third big shift in May is harder to see in screenshots but is going to matter a lot. We stood up an OAuth server as a separate service so external AI agents can connect to Karma securely. That's the prerequisite for the next wave of agent-assisted grant workflows: applicants who use an AI agent to draft applications, reviewers who delegate triage to one, program operators who build automations on top of Karma without us having to bake every integration in by hand.

We also shipped Hermes agents, the per-org AI assistant for non-profits. Any non-profit on Karma can now spin up its own AI employee with org-specific context loaded in. No engineering required, just configuration. And to back the funder research side, we ingested IRS Form 990, 990-EZ, and 990-PF filings back to 2020 so grantees can find aligned funders from inside Karma instead of bouncing between five different tools.

The last quiet shift: Sentry alerts now spin up Claude to open PRs that fix common production issues automatically. It's how we kept the bug count down while shipping this much.

Onchain milestones, end to end

For most of the past year, milestone state on Karma has lived in a hybrid place: some onchain, some offchain, and a lot of careful merging in between. That was always meant to be a step on the way to something cleaner. In May, we finished the trip.

We shipped the migration in three phases. Phase one backfilled every legacy completion onchain and tightened up indexer dedup so old and new milestones tell the same story. Phase two cut every reader over to on-chain as the source of truth and demolished the off-chain writers. Phase three surfaced server-merged milestone statuses to admins, plus on-chain delete and cross-community auth hardening on top.

More highlights this month

  • Karmagrants and Grant Atlas merged into the main app: one product surface for browsing grants, applying, and tracking progress instead of three separate destinations.
  • Slack and Telegram DMs for reviewers: reviewers get direct nudges when something needs their attention, configurable at the program or community level.
  • Async portfolio reports: monthly and biweekly portfolio reports now generate in the background, so admins keep working while the LLM does its job.
  • Safe multisig claim queue: multisig grantees can queue claim transactions instead of needing the whole quorum online at the same time.
  • Reviewer reuse across programs: pick from existing community reviewers when launching a new round instead of re-adding them every time.
  • Completion criteria in the review workspace: reviewers see what counts as "done" for a milestone right where they review it.
  • Custom metrics in intake forms: programs can define structured metrics in application forms instead of relying on free-text fields.
  • Per-community access messages: customize what users see when they hit a "not allowed" wall, with clearer context on which role they need and who to contact.
  • Required Funding Requested and Completion Criteria fields on milestones, so reviewers always have the bar to grade against.
  • "How to review" walkthrough link attached to reviewer notifications on Telegram and Slack.

UX polish

  • One Telegram nudge per mention: if a reviewer is tagged across N items, they get one consolidated message instead of N pings.
  • OAuth consent page redesigned with role-grouped scope copy (operator, grantee, non-profit) so people understand what they're approving.
  • Updates page redesign plus milestone review page cleanup.
  • Markdown tables in application form descriptions actually render now.
  • Multiline text areas are no longer bold by default.

Performance and reliability

  • Admin-wallet nonce coordination hardened across every on-chain write service, preventing dropped or stuck transactions.
  • Smoke-test coverage expanded across pages.

Notable fixes

  • EIP-7702 nonce fix so embedded-wallet users (email, Google, Farcaster login) can sign gasless attestations again.
  • Closed an access-code gate bypass where the application form was unlocking on wrong codes.
  • Rabby chain-switch error on cross-chain submits, resolved.
  • Privy auth fetch failure on the program apply flow, resolved.
  • Edit-application crash on form fields with digit-leading labels, fixed.
  • Milestone-edit duplication bug (editing a milestone created a duplicate and broke ordering), fixed.

Thank you to every funder and ecosystem builder who trust Karma with your work. Your feedback shapes everything we build.