About the project

Pact started from a simple observation: most goals are easy to make and easy to ignore. We wanted to build something that makes a promise feel real. Instead of treating accountability like a passive habit tracker, we asked: what if following through felt social, high-stakes, and verifiable?

That led us to Pact, a social accountability app where users put a small amount of money behind a commitment, submit proof, and let a private circle of trusted friends decide whether they actually followed through. A user can create a goal like “do 5 Leetcodes today,” lock a stake, upload screenshot proof, and have 2 to 3 validators vote to approve or reject it. If approved, they get their money back. If rejected, the stake is forfeited.

What inspired us

We were inspired by the gap between intention and action. Plenty of people set goals, but very few systems create real consequences for not following through. We liked the idea of combining three things into one product loop:

  • personal commitments
  • social accountability
  • money at stake

The “circle” model was especially important to us. Instead of relying on strangers or automation, Pact uses a small group of people you actually know and trust. That makes the validation process simple, social, and believable.

We were also interested in using onchain infrastructure in a way that felt grounded. Rather than making blockchain the center of the experience, we used it to support the stake and escrow layer while keeping the focus on the commitment itself.

How we built it

We built Pact with a focus on keeping the core loop clean and understandable from end to end.

The backend was built with TypeScript, Fastify, Zod, Supabase/Postgres, and Solana devnet. We organized it around simple route, service, and repository layers so the commitment lifecycle stayed easy to reason about. The system supports:

  • user bootstrap and wallet creation
  • circle creation and membership
  • commitment creation
  • stake locking
  • proof submission
  • validator voting
  • majority-based resolution

For the onchain side, we used Solana devnet and SPL tokens to model stablecoin balances and escrow behavior. When a commitment is created, the stake can be locked, then later released or forfeited depending on the final vote outcome.

We kept the product centered around one clear flow:

  1. create a commitment
  2. invite a circle
  3. lock a stake
  4. submit proof
  5. resolve with validator votes

Challenges we ran into

One of the biggest challenges was deciding how much of the onchain side to make real. It is easy to spend too much time building protocol-heavy infrastructure that does not meaningfully improve the user experience. We had to be disciplined about where technical complexity was actually worth it.

Another challenge was keeping the system believable while still staying simple. Features like escrow, voting, and proof submission sound straightforward at a high level, but each one introduces edge cases:

  • who is allowed to validate
  • how many validators should be required
  • when a vote should auto-resolve
  • what happens when proof is missing
  • how funds should move in each outcome

We also had to think carefully about product clarity. Accountability tools can become cluttered quickly, so we spent a lot of time trying to make Pact feel serious, polished, and easy to understand.

What we learned

The biggest lesson was that strong products come from clarity, not feature count. We learned how valuable it is to control scope and make the central interaction feel complete.

We also learned a lot about designing around trust. In Pact, the most important part of the system is not just escrow. It is the relationship between the user, their proof, and the small group validating it. That trust model shaped both the product and the backend architecture.

We also came away with a better sense for how to use blockchain selectively. Instead of making the app about crypto, we treated onchain infrastructure as a tool that strengthens the accountability mechanic.

What we are proud of

We are most proud that Pact feels intuitive and credible. The combination of money at stake, private-circle validation, and a clean commitment lifecycle makes the idea immediately understandable.

At its core, Pact is about making your word mean something.

Built With

  • codex
  • fastify
  • node.js
  • rest
  • solana-devnet
  • solana/spl-token
  • solana/web3.js
  • supabase/postgres
  • typescript
  • zod
Share this project:

Updates