v1.16 — Community Cold-Start
Objectuve's community surface now feels alive at launch. New communities go through a 30-day private formation phase, founding members earn a prestige badge, and new users are guided to invite accountability allies.
Summary
Objectuve ships a four-phase cold-start flywheel that turns the empty-community problem into a feature. At public launch, new users join communities that feel alive—built by founders and grown through direct ally invites—rather than algorithmic suggestion of ghost towns. The work is entirely additive: no new models, no data layer changes, no infrastructure cost. All four phases reuse existing gamification, community, and onboarding infrastructure.
The milestone ships four complementary pieces: a Founding Member badge that celebrates early builders, a private formation phase hiding sub-5-member communities from public discovery, a post-onboarding "Better Together" interstitial that prompts ally invites, and a community creation flow that guides founders toward seeding with allies. Together, they establish a perception feedback loop: new users see active communities in discovery, which encourages them to join, which encourages them to invite allies, which grows communities faster, which improves the feed experience for subsequent cohorts.
Goal
Ship four small, additive engineering changes that make the community surface feel alive during the cold-start window—without invite gates, without FOMO, and without delaying the north-star metric (goals completed) for early adopters who derive value from solo use.
Scope — What Shipped
- Founding Member badge — Community-scoped achievement at epic rarity. Awarded automatically when a user joins a community within 30 days of its creation. Surfaces via the existing toast pipeline with community-name attribution.
- Private formation phase — Communities with
members_count < 5are hidden from public discovery. A "Founding" label marks graduated communities for 30 days. Direct links and ally invites work at any member count. - Better Together interstitial — Post-wizard modal on the Dashboard that explains the shared-streak mechanic and offers one-tap ally invite. Skippable, feature-flagged via
better-together-interstitial. - Community creation ally-invite step — Post-create interstitial on Community detail that lists the creator's existing allies and offers one-tap invite per ally. Skippable, feature-flagged via
community-create-ally-step. - New backend infrastructure —
Social::InviteAllyToCommunityinteraction,inviteAllyToCommunityGraphQL mutation, newcommunity_invite: 19notification kind, 7-day invite idempotency window. - Feature documentation — Updated
docs/features/communities.md(discovery + creation flow),docs/features/achievements.md(badge catalog),docs/product/onboarding-flow.md(ally-seeded onboarding).
Phases
| Phase | Name | Status | PR | Highlights |
|---|---|---|---|---|
| 73 | Founding Member badge | Shipped | #611 | Community-scoped epic-rarity badge, award automation, achievement toast with attribution |
| 74 | Community private formation phase | Shipped | #612 | 5-member discovery threshold, 30-day Founding label, creator-progress UI, counter-cache optimization |
| 75 | Better Together onboarding interstitial | Shipped | #615 | Post-wizard ally-prompt modal, shared-streak framing, skip-above-fold contract |
| 76 | Community creation guided toward ally path | Shipped | #621 | Post-create interstitial, ally list + one-tap invite, new InviteAllyToCommunity mutation, idempotency |
Key Decisions
- Additive, not disruptive — All four items fit into existing surfaces (badge toast, discovery filter, post-wizard modal, post-create modal). No wizard slide count change, no new model layer, no infra additions.
- Discovery threshold is 5 members — Achievable via ally-invite path, meaningful signal of community momentum. 3 reads as private, 10 creates chicken-and-egg trap.
- Founding window is 30 days — Locks the moment of community creation. Both badge-award predicate (Phase 73) and discovery label (Phase 74) use the same constant.
- Post-wizard placement for Better Together — Surfaces after first goal creation, not as a wizard slide. Preserves the wizard's sidebar-zero contract and mirrors the existing
WelcomeBackInterstitial.vuepattern. - Post-create placement for ally-invite — Surfaces after community creation, not mid-modal. User has committed and is looking at their new community—better product moment than a modal step.
- Ally terminology is locked — User-facing copy uses "ally" throughout this milestone (matches PRD and onboarding persona). Existing
PartnerWidget.vueNOT renamed; terminology-alignment pass is carry-forward tech debt. - Feature flags for reversibility — Phases 75 and 76 ship behind PostHog flags (
better-together-interstitial,community-create-ally-step) so they can be toggled off in production without code revert. - No invite gates — Both interstitials have skip-above-fold. No features block behind "send N invites." Suggestions and rewards, never gates.
Requirements Coverage
26 / 26 requirements satisfied across 6 categories:
| Category | Requirements | Status |
|---|---|---|
| BADGE | 5 | All satisfied |
| COMMUNITY | 6 | All satisfied |
| ONBOARD | 6 | All satisfied |
| CREATE | 5 | All satisfied |
| OBSERVE | 1 | Satisfied |
| DOCS | 4 | All satisfied (includes deferred discrepancy reconciliation) |
Full breakdown: v1.16-ROADMAP.md § Requirements covers each requirement's phase mapping and status.
Outcomes
For users:
- New communities no longer surface as ghost towns in discovery, eliminating a cold-start churn trigger.
- Joining a community within its first 30 days is visibly rewarded with a Founding Member badge.
- New users are prompted to invite accountability allies right when they've proven they'll use the app (post-first-goal), increasing ally network density at launch.
- Community creators are nudged toward seeding with allies at the moment of highest motivation (post-creation), accelerating the formation phase.
For the product:
- Communities grow faster through ally-seeded invites rather than algorithmic suggestion alone.
- Early user cohorts see "alive" communities in discovery, which anchors perception and improves retention.
- The cold-start flywheel is self-reinforcing: visible communities → more joins → more invites → faster graduation to discovery.
- Accountability infrastructure (allies, shared streaks, community membership) is front-loaded into the new-user experience.
For operators:
- PostHog events (ally invites sent, skip rates, community creation flow completion) are instrumented and monitored.
- Feature flags allow independent control of Better Together and ally-invite interstitials without redeploying.
Tech Debt & Deferrals
- (Phase 73) Badge asset:
founding_member.svgis a placeholder (team-coral.svg) inBadgeCollection.js. Desi to supply a dedicated icon pre-v1.16 tag. - (Phase 73) Roy NIT:
FoundingMemberBadgeJobspec for community-not-found case deferred (soft-delete + idempotency already covered indirectly). - (Phase 74) Roy:
communities_query_spec.rbCase 2 user-scoped bypass test not load-bearing (counter-cache promotes community to discoverable before query). Apply Roy's fix in a hardening pass. - (Phase 75/76) Terminology alignment: existing
PartnerWidget.vuefamily NOT renamed in this milestone. Carry-forward: full "ally" vs "partner" rename across both families for a dedicated future phase. - (Phase 75/76) Runtime contrast verification at staging:
text-success11px + dark-modetext-foregroundinversion inside Ionic modal deferred to v1.16 staging QA before tag. - (All phases) Pattern learning: wave-based dispatch (Phase 76 organized into 4 parallel waves) validated as default for ≥3-parallelizable phases.
Docs Discrepancies Resolved
- Phase 73 docs target: Original plan named
docs/features/gamification.md, but badge catalog lives indocs/features/achievements.md. Both files exist; Dori to reconcile filename split at a future docs-hygiene pass. - Phase 75 docs target: Plan intended
docs/features/onboarding.md, but Phase 75 Codi updateddocs/features/onboarding-timeline.mdinstead. Resolution: Createddocs/features/onboarding.mdas a new consolidated onboarding index page (86 lines, covering the wizard, post-wizard interstitials, community joining, and ally invite arc), withdocs/features/onboarding-timeline.mdas a linked sub-page. Updateddocs/features/index.mdto nest the timeline/goal-builder/coach-builder sub-pages under the new parent.
Related Artifacts
- Roadmap: v1.16-community-cold-start-ROADMAP.md
- Requirements: v1.16-ROADMAP.md § Requirements
- Milestone Audit: v1.16-MILESTONE-AUDIT.md
- Phase artifacts: .planning/milestones/v1.16-community-cold-start-phases/
- PRD: Community Cold-Start — PRD
- Phase 73 PR: #611 (Founding Member badge)
- Phase 74 PR: #612 (Private formation phase)
- Phase 75 PR: #615 (Better Together interstitial)
- Phase 76 PR: #621 (Community creation ally-invite)
Related Commits
602ee1e9— feat(76.5+76.8): CommunityAllyInviteInterstitial component + E2E smoke (Phase 76 final wave)f699b8b4— feat(76.3+76.6): InviteAllyToCommunity interaction + mutation + flag + enum (Phase 76 wave 1)b36e8477— feat(76.4): useCommunityAllyInvite composable + INVITE_ALLY_TO_COMMUNITY_MUTATION constant (Phase 76 wave 2)047f35e7— docs(76.7): PostHog event schema for community ally invitations (Phase 76 docs)aed20bff— feat(v1.16): Better Together onboarding interstitial (Phase 75 shipped)226db886— feat(communities): community private formation phase (Phase 74 shipped)970d24e8— feat(gamification): founding member badge (Phase 73 shipped)b1a2853e— plan(v1.16): kick off Community Cold-Start milestone
Last updated: 2026-05-23