Inspiration

This project comes from a personal problem I have struggled with for a long time. I've been trying to get back on my fitness journey after an injury a couple years ago, and ever since then it has been very difficult to stick to my goals. I've always wondered if there'd be an app that made me go stick to my goals.

There wasn't, so I created Onus.

What it does

Onus is a financial accountability platform that makes you put your money where your mouth is. Users commit to a weekly gym schedule and select a subscription tier — Starter, Committed, Dedicated, or Onus One — each with a different penalty structure for missed sessions. When you miss a workout, real financial penalties are deducted based on your tier. Points are earned for consistency, redeemable for rewards, creating a dual system of negative reinforcement to start and stick to a habit and positive reinforcement to sustain it. An AI coaching layer powered by Claude provides personalized nudges, check-ins, and motivational feedback based on your weekly performance.

How we built it

Onus is a full-stack web app built with:

  • Next.js 14 (App Router) — Framework handling routing, SSR, and API routes
  • TypeScript — End-to-end type safety across the entire codebase
  • Tailwind CSS + shadcn/ui — Dark, premium UI component system with custom design tokens
  • Supabase — Auth, Postgres database, and real-time data for tracking sessions and penalties
  • Anthropic Claude API — Powers the AI coaching layer on the dashboard, giving users personalized accountability messages and weekly recaps
  • Vercel — Deployment and hosting

The app follows a clean layered architecture: a landing page → 3-step onboarding flow (tier selection, goal builder, accountability contract) → a live dashboard → history view → rewards redemption. The penalty engine runs on the backend, calculating owed amounts based on tier multipliers and missed session counts.

Challenges we ran into

  1. Designing the penalty model: Balancing the economics so penalties feel meaningful but don't immediately churn users was genuinely hard. Getting the tier pricing, penalty caps, point multipliers, and the split percentages right required multiple iterations of napkin math and a lot of economical thinking and simulating using Claude.
  2. Onboarding UX: We wanted onboarding to feel like signing a real contract, not just a form. Making that feel weighty and intentional while remaining frictionless took significant design work. The line between "supportive coach" and "nagging app notification" is also thin, so we had to navigate that a little carefully while designing the app.
  3. Mocking vs. real integrations: Given hackathon time constraints, we had to make clear architectural boundaries between mocked data (like Stripe payments and AI-based goal development) and real integrations (i.e. Supabase and pricing structure), while keeping the app fully functional to demo.

Accomplishments that we're proud of

  1. We built genuinely novel accountability mechanic that goes beyond just streaks and badges, something that develops real financial skin in the game
  2. We created a polished, premium dark UI that actually looks like a product you'd pay for.
  3. A well-thought-out tiered business model and strategy with real unit economics, thinking through the pricing structure, penalty pools, and point system are actually defensible.
  4. We did a pretty good job designing an end-to-end onboarding flow that makes users feel the psychological weight of their commitment before they even see the dashboard
  5. Clean, typed, production-ready codebase with a proper development setup.

What we learned

  • Financial incentives change behavior in ways that gamification alone doesn't. The psychology of loss aversion is a genuinely powerful product lever if used right and in combination with positive reinforcement for sustained habit development and behavioral change.
  • Designing for accountability is different from designing for engagement. Most apps optimize for time-in-app, but Onus optimizes for you to close the app and go to the gym
  • Getting AI tone right in a health/fitness context is subtle. Users in this space are often vulnerable or frustrated, so the coaching voice needs to be built with that in mind
  • Good pricing model design is a product skill, not just a business skill. The tier structure directly shapes how users perceive commitment and fairness, so we have to account for that when we design Onus.

What's next for Onus

  • Architecting Stripe integration: Making penalties real money, not just accruing points
  • Developing the Mobile app for gym check-ins via geolocation or NFC to prevent lying/fraud
  • Creating the Onus Community with accountability partners and group challenges with shared penalty pools
  • Integrating wearables like Apple Watch / Garmin for automatic workout detection, supplementing fraud prevention or potentially even replacing the need for manual check-ins
  • Expanded AI coaching with personalized habit recognition, injury-aware scheduling (definitely a personal motivation for building this), and weekly AI-generated performance reports
  • Creating a B2B line with corporate sponsorships to develop multiple income streams.

Built With

  • next-js
  • supabase
  • tailwind-css
  • vercel
Share this project:

Updates