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:
- Billing & Subscriptions (The Revenue Engine)
- Private Team Communities & Invites (The Container)
- Team Goals: Collective Progress (The Shared Output)
- Team Leaderboards (The Engagement Driver)
Phase 7 Success Metrics
| Metric | Target (12 months post-launch) |
|---|---|
| B2B Revenue (MRR) | $2K - $8K |
| Churn on Paid Teams | < 5% per month |
| Supporter Tier Conversion | 1.5% of free MAU |
| Team Member Engagement | 1.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
- The Pitch: The Settings tab receives a new primary callout: "Upgrade to Objectuve Teams."
- The Checkout: Tapping it opens the native Clerk User Profile modal, directly routing to the new Billing tab.
- Provisioning: Upon successful payment, a webhook hits the Rails backend.
- If it's a Supporter sub, a
supporterrole 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.
- If it's a Supporter sub, a
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
UserandCommunitymodels 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
- 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.
- 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!").
- 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
CommunityInvitemodel linkingcommunity_id,token(secure hash),max_uses,expires_at, andcreated_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
- Creation: Admin creates a goal and checks the "Make this a Collective Goal" box.
- 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").
- 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) toGoal. Team members create a standard personal Goal, but itsparent_collective_goal_idpoints to the Team Goal. - Aggregation:
TeamGoalProgressServicedynamically aggregates theGoalEventcounts 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
- Discovery: A prominent "Leaderboard" tab inside the Team Community.
- 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".
- 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