Backend: Add Curator 30-Day Streak Curation and Onboarding Loop #8

Merged
dv merged 1 commits from backend/service-curation-layer into staging 2026-06-23 18:48:20 +00:00
Owner

PR Description

Summary

Implements the backend Curator system for generating and storing personalized 30-day streak plans. This includes the service curation layer, ICP/playbook-based plan generation, service registry deep-link building, and the one-time onboarding loop that creates a user’s first streak plan after onboarding completion.

What Changed

  • Added the Service Curation Layer for personalized 30-day streak planning.
  • Added prompt assembly using user context, ICP/persona playbook, goals, profile, resume, activity, and QScore signals.
  • Added structured 30-day plan generation with weekly themes and daily tasks.
  • Kept the stored backend sprint as a real 30-day plan.
  • Updated preview/output shape to support 4 core weeks plus closeout days for days 29-30 without breaking frontend expectations.
  • Added Sunday-based week alignment while still respecting the user’s subscription/onboarding start day.
  • Added ICP playbook config/definitions for persona-driven task generation.
  • Added service registry integration for generating frontend/backend service deep links.
  • Added idempotent curation behavior so retrying the same user/context does not duplicate plans.
  • Added persistence for generated sprint plans associated with the user.
  • Added Curator Onboarding Loop triggered after onboarding completion.
  • Onboarding loop fetches user context from User Service, Resume Service, and QScore.
  • Onboarding loop generates the initial 30-day streak plan through the curation layer.
  • Stores weekly themes such as Baseline + First Proof, Fix Obvious Gaps, and related progression stages.
  • Surfaces Day 1 tasks for the frontend Streak Component.
  • Emits analytics/event tracking for curator onboarding completion.
  • Added notification-ready behavior for plan-ready state.
  • Refined the curation prompt so plans are personalized to each user’s goals, context, ICP, and career target.

Notes

  • The implementation uses deterministic curation with an LLM-ready prompt/hash stored for idempotency.
  • It does not make an uncached live LLM call during onboarding, which avoids duplicate or inconsistent plans on retries.
  • Live LLM generation can be added later behind a cached/validated generation layer if needed.

Validation

  • Verified the plan format supports 30 days.
  • Verified frontend contract compatibility for streak/sprint preview.
  • Verified onboarding loop is safe to retry.
  • Verified service registry deep links are used for task URLs.
  • Verified Day 1 tasks are generated from the stored sprint plan.
# PR Description ## Summary Implements the backend Curator system for generating and storing personalized 30-day streak plans. This includes the service curation layer, ICP/playbook-based plan generation, service registry deep-link building, and the one-time onboarding loop that creates a user’s first streak plan after onboarding completion. ## What Changed - Added the Service Curation Layer for personalized 30-day streak planning. - Added prompt assembly using user context, ICP/persona playbook, goals, profile, resume, activity, and QScore signals. - Added structured 30-day plan generation with weekly themes and daily tasks. - Kept the stored backend sprint as a real 30-day plan. - Updated preview/output shape to support 4 core weeks plus closeout days for days 29-30 without breaking frontend expectations. - Added Sunday-based week alignment while still respecting the user’s subscription/onboarding start day. - Added ICP playbook config/definitions for persona-driven task generation. - Added service registry integration for generating frontend/backend service deep links. - Added idempotent curation behavior so retrying the same user/context does not duplicate plans. - Added persistence for generated sprint plans associated with the user. - Added Curator Onboarding Loop triggered after onboarding completion. - Onboarding loop fetches user context from User Service, Resume Service, and QScore. - Onboarding loop generates the initial 30-day streak plan through the curation layer. - Stores weekly themes such as Baseline + First Proof, Fix Obvious Gaps, and related progression stages. - Surfaces Day 1 tasks for the frontend Streak Component. - Emits analytics/event tracking for curator onboarding completion. - Added notification-ready behavior for plan-ready state. - Refined the curation prompt so plans are personalized to each user’s goals, context, ICP, and career target. ## Notes - The implementation uses deterministic curation with an LLM-ready prompt/hash stored for idempotency. - It does not make an uncached live LLM call during onboarding, which avoids duplicate or inconsistent plans on retries. - Live LLM generation can be added later behind a cached/validated generation layer if needed. ## Validation - Verified the plan format supports 30 days. - Verified frontend contract compatibility for streak/sprint preview. - Verified onboarding loop is safe to retry. - Verified service registry deep links are used for task URLs. - Verified Day 1 tasks are generated from the stored sprint plan.
dv added 1 commit 2026-06-22 19:26:04 +00:00
- Increased weekIndex max from 5 to 6 in curator task, plan day, and week schemas.
- Adjusted days array in curator week schema to allow a minimum of 1 day.
- Modified weeks array in curator plan schema to accept between 5 and 6 weeks.
- Enhanced CuratorUserContext type to include detailed user information and QScore.
- Introduced Curator ICP Playbooks for various user profiles with structured actions.
- Implemented onboarding loop for user onboarding completion and notification.
- Added prompt builder for generating structured 30-day plans based on user context and playbooks.
dv merged commit dfdde7fa4d into staging 2026-06-23 18:48:20 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: growqr-app/growqr-backend#8
No description provided.