Skip to content

Phase 7: Monetization & Teams -- PRD

Product: Objectuve (codename: Enkidu) Phase: 7 (Monetization & Teams) Status: Discovery / Design Date: April 2026


1. Problem Statement

Objectuve is committed to remaining free for individuals without ads, data selling, or core feature gating. However, to sustain the Public Benefit Company mandate long-term, it must generate revenue.

The strategy relies on two pillars: an optional "Supporter" tier for individuals who want cosmetic perks, and a "Teams" tier for B2B structured accountability (e.g., corporate wellness programs, specialized coaching groups, or academic cohorts). Phase 7 implements the billing infrastructure and the exclusive B2B feature set necessary to justify a $5/user/month cost.

Phase 7 turns Objectuve into a sustainable business.


2. Priority Features Scope

To avoid scope creep, this PRD focuses on the minimum required to launch the Teams tier and collect the first dollar:

  1. Billing & Subscriptions (The Revenue Engine)
  2. Private Team Communities & Invites (The Container)
  3. Team Goals: Collective Progress (The Shared Output)
  4. Team Leaderboards (The Engagement Driver)

Phase 7 Success Metrics

MetricTarget (12 months post-launch)
B2B Revenue (MRR)$2K - $8K
Churn on Paid Teams< 5% per month
Supporter Tier Conversion1.5% of free MAU
Team Member Engagement1.5x higher DAU/MAU than Free

3. Feature 1: Billing & Subscriptions (Clerk)

3a. Concept & Value

Building a custom Stripe integration is a massive distractor. Clerk (our Auth provider) offers natively integrated Billing. This unified system allows a user to manage their identity and their credit card in the same flow. Subscriptions unlock feature flags for individual users (Supporter) or across an entire Community (Teams).

3b. User Stories

  • US-1: As a user, I want to upgrade to a Supporter tier for $4/mo via a secure, trusted checkout flow.
  • US-2: As a community admin, I want to upgrade my group to a "Teams" organization and be billed per-seat ($5/user/month).
  • US-3: As an admin, I want access to billing history, invoices, and a straightforward cancellation flow.

3c. UX Flow

  1. The Pitch: The Settings tab receives a new primary callout: "Upgrade to Objectuve Teams."
  2. The Checkout: Tapping it opens the native Clerk User Profile modal, directly routing to the new Billing tab.
  3. Provisioning: Upon successful payment, a webhook hits the Rails backend.
    • If it's a Supporter sub, a supporter role is added to the User.
    • If it's a Teams sub, the user is prompted to select which Community they are elevating to a Team.

3d. Engineering Notes

  • Infrastructure: Extensive webhook handling is required (app/services/clerk_webhook_handler.rb). The webhook must be idempotent to handle retries safely.
  • Database: While Clerk acts as the source of truth, cache subscription status on the User and Community models to avoid n+1 API calls during feature gating checks.

4. Feature 2: Private Team Communities & Invites

4a. Concept & Value

Existing communities are public or unlisted. A "Team" is a hardened, private space containing its own goals, leaderboard, and chat. It requires strict invite management. If a company is paying per seat, the admin must have absolute control over who has access.

4b. User Stories

  • US-1: As a Team Admin, I want to generate a secure invite link that expires after 7 days or 10 uses.
  • US-2: As a Team Admin, I want to remove a departing employee from the Team, instantly revoking their access to the Team's data.

4c. UX Flow

  1. Inviting: Inside a Team Community, the Admin sees an "Invite Members" button. They can enter emails (dispatches a branded email via Mailtrap) or generate a copyable link.
  2. Onboarding: A user clicking the link is routed through auth, then dropped directly into the Team's custom onboarding guide (e.g., "Welcome to Acme Corp's Wellness Challenge!").
  3. Management: The Admin Dashboard lists all members, their last active date, and a one-click "Revoke Access" button.

4d. Engineering Notes

  • Model Expansion: A new CommunityInvite model linking community_id, token (secure hash), max_uses, expires_at, and created_by.
  • Billing Sync: Revoking access or adding a user must trigger a Clerk Billing API call to adjust the seat count proportionally.

5. Feature 3: Team Goals (Collective Progress)

5a. Concept & Value

B2B clients don't just want individual tracking; they want collective achievement (e.g., "The Engineering team wants to log 1,000 hours of deep work this month"). Team Goals allow multiple users to contribute checking-in to a single, unified progress bar.

5b. User Stories

  • US-1: As an admin, I want to set a goal of "Read 50 Books" for the whole team.
  • US-2: As a team member, when I check in, I want to see my contribution added to the shared team progress bar.

5c. UX Flow

  1. Creation: Admin creates a goal and checks the "Make this a Collective Goal" box.
  2. The View: The Team Dashboard features a massive progress bar for the Collective Goal. Underneath, an avatar row shows who has contributed the most so far (e.g., "Sarah: 14 books").
  3. Check-in: When a user checks into their mapped personal objective, the UI animations celebrate both the personal streak and the team total.

5d. Engineering Notes

  • Data Model: Add is_collective (boolean) to Goal. Team members create a standard personal Goal, but its parent_collective_goal_id points to the Team Goal.
  • Aggregation: TeamGoalProgressService dynamically aggregates the GoalEvent counts of all child goals to render the master progress bar.

6. Feature 4: Team Leaderboards

6a. Concept & Value

To keep a B2B wellness or accountability program alive, you need structured, friendly competition. The Team Leaderboard assigns a unified point value to actions (checking in, encouraging others, completing goals) and ranks the team over a weekly, monthly, and all-time timescale.

6b. User Stories

  • US-1: As a team member, I want to check the leaderboard on Friday morning to see if I can beat John before the week ends.
  • US-2: As an admin, I want to see a monthly leaderboard so I can give out real-world prizes to the top 3 members.

6c. UX Flow

  1. Discovery: A prominent "Leaderboard" tab inside the Team Community.
  2. The UI: Podium for top 3 (Gold, Silver, Bronze styling). List below for the rest. A toggle switches between "This Week", "This Month", and "All Time".
  3. Nudging: Next to members who are trailing closely behind you, a quick "Send Taunt/Encouragement" button appears.

6d. Engineering Notes

  • Points Engine: Create PointsAllocationService. Assign standard values: Check-in = +5, Encourage = +2, Badge Earned = +15.
  • Querying: Needs highly optimized views or Redis sorted sets (ZINCRBY team_leaderboard_week_42 user_id_1 5) to ensure the leaderboard loads instantly, as it will be heavily trafficked.

7. Delivery Strategy

Sprint 1: Clerk Billing Integration & Webhook infrastructure. Sprint 2: Community Invites and Seat Management synchronization. Sprint 3: Collective Team Goals (Parent/Child goal mapping). Sprint 4: Team Leaderboards (Points engine and Redis sorted sets). Sprint 5: Polish, B2B Marketing Assets, End-to-End QA, Analytics validation.

Last updated: 2026-05-04

Loading…