Skip to content

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 < 5 are 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 infrastructureSocial::InviteAllyToCommunity interaction, inviteAllyToCommunity GraphQL mutation, new community_invite: 19 notification 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

PhaseNameStatusPRHighlights
73Founding Member badgeShipped#611Community-scoped epic-rarity badge, award automation, achievement toast with attribution
74Community private formation phaseShipped#6125-member discovery threshold, 30-day Founding label, creator-progress UI, counter-cache optimization
75Better Together onboarding interstitialShipped#615Post-wizard ally-prompt modal, shared-streak framing, skip-above-fold contract
76Community creation guided toward ally pathShipped#621Post-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.vue pattern.
  • 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.vue NOT 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:

CategoryRequirementsStatus
BADGE5All satisfied
COMMUNITY6All satisfied
ONBOARD6All satisfied
CREATE5All satisfied
OBSERVE1Satisfied
DOCS4All 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.svg is a placeholder (team-coral.svg) in BadgeCollection.js. Desi to supply a dedicated icon pre-v1.16 tag.
  • (Phase 73) Roy NIT: FoundingMemberBadgeJob spec for community-not-found case deferred (soft-delete + idempotency already covered indirectly).
  • (Phase 74) Roy: communities_query_spec.rb Case 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.vue family 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-success 11px + dark-mode text-foreground inversion 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 in docs/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 updated docs/features/onboarding-timeline.md instead. Resolution: Created docs/features/onboarding.md as a new consolidated onboarding index page (86 lines, covering the wizard, post-wizard interstitials, community joining, and ally invite arc), with docs/features/onboarding-timeline.md as a linked sub-page. Updated docs/features/index.md to nest the timeline/goal-builder/coach-builder sub-pages under the new parent.
  • 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

Loading…