Inspiration

What it does

How we built itInspiration

Nonprofits do not just have a spending problem, they have a restrictions problem. Every dollar can come with grant rules, program rules, merchant restrictions, and approval requirements, but most of that logic still lives in spreadsheets, inboxes, and after-the-fact reconciliation. We wanted to build something that enforces those rules at the moment money moves, not weeks later during reporting. That became Lumen: a policy-first spending platform that helps nonprofits spend correctly, not just quickly.

What it does Lumen lets a nonprofit create spending policies tied to grants, issue virtual cards against those policies, and enforce restrictions in real time when a card is used. A swipe can be auto-approved, auto-declined, or routed into a live approval inbox depending on the merchant, category, amount, and remaining grant budget. The result is that every transaction is compliant, categorized, and reportable the moment it happens. On top of the transaction flow, Lumen also gives operators a clean dashboard, grant-level views, and funder-ready reporting so finance teams can see exactly where restricted money went.

How we built it We built Lumen as a single Next.js app with TypeScript, backed by Neon Postgres, and connected to Stripe Issuing in test mode. The core of the product is a lightweight policy engine that evaluates every authorization request coming from Stripe and decides whether to approve, decline, or require human approval. We used Stripe webhooks for real-time decisioning, Stripe test helpers to simulate swipes without hardware, and a mobile-friendly approvals inbox so a finance lead can approve a transaction from a second device during the demo. For the frontend, we used Tailwind and shadcn/ui to move quickly while still giving the product a polished, operational feel.

Challenges we ran into The biggest challenge was making the demo feel real without overbuilding. We had to choose very carefully which parts needed to be truly live, like card issuance, authorization handling, and approvals, and which parts could be seeded or simplified for a hackathon setting. Another challenge was designing an approval flow that worked within the realities of Stripe authorization timing, so we landed on an optimistic decline-and-retry pattern that still feels intuitive in the product. We also spent a lot of time balancing technical credibility with demo clarity so the system could show real policy enforcement without getting buried in edge cases.

Accomplishments that we're proud of We are proud that the core path is not mocked. Lumen can issue a real Stripe virtual card, simulate a real authorization, evaluate it against policy, and return different outcomes in real time. We are also proud of the policy-first model itself, because it makes the architecture feel purpose-built for nonprofits rather than adapted from corporate spend tools. Finally, we are proud that the experience feels coherent end to end: operators can create policies, issue aid, review approvals on mobile, and generate reporting from the same underlying transaction data.

What we learned We learned that for nonprofit finance, the most important primitive is not the card, it is the policy behind the card. Once policy, grant lineage, and approval logic are modeled correctly, a lot of downstream reporting and compliance becomes much simpler. We also learned that hackathon velocity improves dramatically when you isolate the truly load-bearing parts of the demo and keep everything else intentionally lightweight. Most of all, we learned that a small, well-chosen core, in our case a single real-time decision engine sitting between Stripe and the database, can create a surprisingly compelling product story.

What's next for Lumen Next, we want to expand Lumen from a compelling demo into a production-ready platform. That means adding real authentication and role-based permissions, richer policy controls, delivery of approvals through channels like SMS and email, and more robust audit logging. We also want to support physical cards, deeper grant and accounting integrations, and better reporting workflows for funders and finance teams. Longer term, we see Lumen becoming the infrastructure layer that helps nonprofits move restricted money with the same speed as modern fintech, but with the controls and transparency their work actually requires.

If you want, I can also turn this into a more punchy Devpost-style version or a shorter, more judge-friendly version.

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for Lumen

Built With

Share this project:

Updates