Install
openclaw skills install continuous-user-researchRun longitudinal, in-context diary studies for product teams and convert weekly participant entries into concise User Signals + Recommendations with evidence...
openclaw skills install continuous-user-researchAutomatically run a lightweight diary study and turn it into weekly product signals and experiment-ready recommendations.
Credential contract:
CONTINUOUS_USER_RESEARCH_PROFILE: runtime profile selector used to choose enabled integrations and routing mode.RESEARCH_STUDY_STORAGE_RAW_PATH: restricted location for raw entries.RESEARCH_STUDY_STORAGE_REPORTS_PATH: redacted report output location.RESEARCH_REDACTION_SALT: deterministic redaction tokenization salt.RESEARCH_NOTION_TOKEN, RESEARCH_NOTION_DATABASE_ID.RESEARCH_SLACK_BOT_TOKEN, RESEARCH_SLACK_SIGNING_SECRET.RESEARCH_EMAIL_PROVIDER, RESEARCH_EMAIL_API_KEY, RESEARCH_EMAIL_FROM.RESEARCH_LINEAR_TOKEN, RESEARCH_LINEAR_TEAM_ID, RESEARCH_GITHUB_TOKEN, RESEARCH_GITHUB_REPO.Profile selector note:
core, slack, email, notion, mixed.CONTINUOUS_USER_RESEARCH_PROFILE is a non-secret selector and does not grant external API access.Strict rule:
Primary scope anchor:
Support these study types in the same workflow:
Rule:
broad_behavior: wide behavior context.targeted_product: product feature/flow usage.targeted_activity: one behavior or task.journey: multi-stage touchpoint progression.signal default for lightweight studies.event for rare/high-value moments.interval for high-frequency habits.mixed when one mode is insufficient.Mid-study adjustment rules (bias-safe):
Use this decision sequence:
event.interval.signal.mixed.Mode guidance:
event mode:interval mode:signal mode (default):mixed mode:Mixed-mode patterns:
signal once daily + event when user exits onboarding unfinished.interval daily + signal at end-of-week reflection.event per stage transition + signal every 2-3 days for missing stages.Qualitative target ranges (completed participants):
Overrecruit rule:
recruit_n = ceil(sample_size_target * overrecruit_factor).overrecruit_factor: 1.4.1.3 to 1.8 depending on expected attrition.Attrition planning:
Saturation reminder:
Core rules:
Recommended structure:
min_entries_required and consent/compliance rules.max_entries_allowed.Default calculation model:
min_entries_required = ceil(planned_prompt_count * 0.7).max_entries_allowed = planned_prompt_count + ceil(planned_prompt_count * 0.2).total_incentive = base_completion + (per_entry_bonus * min(valid_entries, max_entries_allowed)).Anti-gaming controls:
max_entries_allowed.Run pilot before live recruitment:
Pilot checks:
Pilot pass criteria:
If pilot fails:
Track per participant daily:
Reminder policy:
Fallback prompt requirements:
Dropout rescue flow:
Use only when:
Interview constraints:
Outputs:
debrief vs diary.Analysis sequence:
Saturation logic:
Recommendation requirements:
Report constraints:
Low/Med/High) and explicit reason.Experiment plan minimum:
Writing rules:
Use templates in /prompts:
prompts/consent_message.mdprompts/pre_study_brief.mdprompts/entry_templates.mdprompts/followup_rules.mdprompts/post_study_interview_guide.mdStandard operational snippets:
{
"goal": "Identify the highest-impact onboarding drop-off behaviors this week and define fixes with measurable impact.",
"research_questions": [
"At which onboarding step do users stop most often?",
"What context or blockers are present when they stop?",
"What do users say they plan to do next versus what they actually do next day?",
"Which prompt or UI changes are most likely to reduce drop-off this week?"
],
"focus_type": "targeted_product",
"timing_mode": "mixed",
"reporting_period_days": 7,
"expected_event_frequency": "1-2 onboarding attempts per participant per week",
"participant_profile": {
"summary": "New sign-ups in first 72h, self-serve onboarding, mixed device usage",
"segments": ["new_trial", "team_invited"],
"inclusion_criteria": [
"Created account within last 7 days",
"Has not completed onboarding"
],
"exclusion_criteria": [
"Completed onboarding before study start"
]
},
"sample_size_target": 14,
"overrecruit_factor": 1.5,
"incentive_plan": {
"currency": "USD",
"base_completion_amount": 25,
"per_entry_amount": 2,
"payout_timing": "within_7_days_of_completion",
"quality_requirements": [
"Include one closed response and one open explanation per entry",
"No duplicate spam entries"
]
},
"min_entries_required": 5,
"max_entries_allowed": 8,
"channels": ["email", "slack"],
"timezone_handling": {
"default_timezone": "participant_local",
"prompt_window_local": "09:00-20:00",
"dst_strategy": "auto_adjust",
"missing_timezone_policy": "ask_onboarding_then_fallback_utc"
},
"tools_config": {
"notion": {
"enabled": true,
"database_id": "notion-db-onboarding-weekly"
},
"airtable": {
"enabled": false
},
"google_sheets": {
"enabled": true,
"spreadsheet_id": "gs-onboarding-weekly"
}
},
"privacy_redaction": true
}
{
"goal": "Understand how often Feature X is used in real workflows and what causes skipped usage days.",
"research_questions": [
"On which days and contexts is Feature X used versus skipped?",
"What motivates repeated use?",
"Which friction points reduce weekly usage frequency?",
"What product experiment can increase consistent weekly usage?"
],
"focus_type": "targeted_activity",
"timing_mode": "interval",
"reporting_period_days": 7,
"expected_event_frequency": "daily to every-other-day",
"participant_profile": {
"summary": "Active users with at least one Feature X use in last 14 days",
"segments": ["individual_contributor", "manager"],
"inclusion_criteria": [
"Used Feature X at least once in prior 14 days"
],
"exclusion_criteria": [
"No product activity in prior 30 days"
]
},
"sample_size_target": 12,
"overrecruit_factor": 1.4,
"incentive_plan": {
"currency": "USD",
"base_completion_amount": 20,
"per_entry_amount": 1.5,
"payout_timing": "weekly",
"quality_requirements": [
"Closed + open responses required",
"Reflection prompt completed at least twice"
]
},
"min_entries_required": 5,
"max_entries_allowed": 9,
"channels": ["email", "discord"],
"timezone_handling": {
"default_timezone": "participant_local",
"prompt_window_local": "18:00-22:00",
"dst_strategy": "auto_adjust",
"missing_timezone_policy": "fallback_to_account_timezone"
},
"tools_config": {
"notion": {
"enabled": true,
"database_id": "notion-db-featurex-habit"
},
"airtable": {
"enabled": true,
"base_id": "airtable-featurex-habit"
},
"google_sheets": {
"enabled": false
}
},
"privacy_redaction": true
}
{
"goal": "Map how prospects move from research to decision to purchase and identify where momentum is lost.",
"research_questions": [
"Which touchpoints are most common in each stage?",
"Where do delays or reversals happen in the journey?",
"How do channel and device choices influence progression speed?",
"Which experiment can reduce time-to-purchase without harming quality?"
],
"focus_type": "journey",
"timing_mode": "mixed",
"reporting_period_days": 7,
"expected_event_frequency": "2-4 decision-related interactions per week",
"participant_profile": {
"summary": "Prospects currently evaluating purchase within 30-day window",
"segments": ["self_serve", "sales_assisted"],
"inclusion_criteria": [
"In active evaluation state",
"Has interacted with at least one research touchpoint"
],
"exclusion_criteria": [
"Existing long-term customers"
]
},
"sample_size_target": 18,
"overrecruit_factor": 1.6,
"incentive_plan": {
"currency": "USD",
"base_completion_amount": 35,
"per_entry_amount": 2,
"payout_timing": "end_of_study",
"quality_requirements": [
"Include channel and device context for each major event",
"At least one reflection entry on decision confidence shift"
]
},
"min_entries_required": 6,
"max_entries_allowed": 10,
"channels": ["email", "sms"],
"timezone_handling": {
"default_timezone": "participant_local",
"prompt_window_local": "10:00-19:00",
"dst_strategy": "auto_adjust",
"missing_timezone_policy": "ask_participant_then_fallback_utc"
},
"tools_config": {
"notion": {
"enabled": true,
"database_id": "notion-db-journey-map"
},
"airtable": {
"enabled": false
},
"google_sheets": {
"enabled": true,
"spreadsheet_id": "gs-journey-weekly"
}
},
"privacy_redaction": true
}
Period: 2026-03-02 to 2026-03-08
Decision focus: Reduce onboarding abandonment in first session
Top 3 User Signals + Recommendations
[
{
"title": "Step-2 setup ambiguity causes immediate exits",
"description": "Participants frequently paused at workspace setup because the required input and expected outcome were unclear.",
"evidence": [
{
"participant_code": "P03",
"timestamp": "2026-03-03T10:42:00Z",
"snippet": "[REDACTED] I stopped because I was not sure what this field changes later."
},
{
"participant_code": "P09",
"timestamp": "2026-03-04T18:21:00Z",
"snippet": "[REDACTED] I left to ask a teammate what to enter, then never came back."
}
],
"confidence": "High",
"confidence_reason": "Observed across 8 participants over 3 separate days with consistent language and matching abandonment behavior.",
"recommended_experiment": {
"hypothesis": "If Step-2 includes plain-language helper text and one prefilled example, abandonment at Step-2 will decrease.",
"method": "A/B test revised Step-2 copy and helper UI for new sign-ups.",
"primary_metric": "Step-2 to Step-3 completion rate",
"decision_rule": "Ship variant if completion improves >=12% with no increase in support tickets per user.",
"owner": "PM Onboarding",
"timebox": "7 days"
},
"tags": ["onboarding", "clarity", "abandonment"],
"impacted_stage": "onboarding_step_2",
"change_over_time": "Signal strengthened from Day 2 to Day 6 as more participants hit the same blocker."
},
{
"title": "Mobile users defer verification and fail to return",
"description": "Verification prompts on mobile during commute/work transitions often caused postponement and no same-day return.",
"evidence": [
{
"participant_code": "P05",
"timestamp": "2026-03-05T07:58:00Z",
"snippet": "[REDACTED] Could not complete this at the station and forgot later."
},
{
"participant_code": "P11",
"timestamp": "2026-03-06T17:12:00Z",
"snippet": "[REDACTED] I planned to do it on desktop after work but did not reopen it."
}
],
"confidence": "Med",
"confidence_reason": "Pattern appears in 4 mobile-first participants; moderate sample but consistent context timing.",
"recommended_experiment": {
"hypothesis": "If mobile users can defer verification with one-tap reminder scheduling, return completion will increase.",
"method": "Add defer flow with default same-day reminder and compare against current hard-stop flow.",
"primary_metric": "24h return-to-onboarding rate for mobile starters",
"decision_rule": "Adopt if return rate improves >=10% without higher next-day abandonment.",
"owner": "Growth Engineer",
"timebox": "7 days"
},
"tags": ["mobile", "verification", "return-rate"],
"impacted_stage": "onboarding_verification",
"change_over_time": "Stable pattern; no reduction after reminder copy tweak on Day 4."
},
{
"title": "Perceived setup effort mismatch reduces trust",
"description": "Users expected a 2-minute setup based on landing copy, but diary logs showed perceived effort of 8-12 minutes.",
"evidence": [
{
"participant_code": "P02",
"timestamp": "2026-03-03T15:33:00Z",
"snippet": "[REDACTED] This looked quick but took too long for a first try."
},
{
"participant_code": "P08",
"timestamp": "2026-03-07T09:06:00Z",
"snippet": "[REDACTED] I expected instant setup and bailed once it asked for more details."
}
],
"confidence": "Med",
"confidence_reason": "Repeated in 5 entries with aligned closed-question effort ratings, but some variance by user type.",
"recommended_experiment": {
"hypothesis": "If pre-onboarding expectations match real setup effort, trust and completion rates will improve.",
"method": "Update pre-onboarding messaging with realistic duration + quick-start path; compare against current messaging.",
"primary_metric": "Onboarding completion among users who saw updated expectation message",
"decision_rule": "Keep changes if completion increases >=8% and dissatisfaction mentions decrease.",
"owner": "PMM + PM",
"timebox": "7 days"
},
"tags": ["expectation-setting", "trust", "onboarding"],
"impacted_stage": "pre_onboarding_to_step_1",
"change_over_time": "Emergent by Day 3, then stable across remaining period."
}
]
Period: 2026-03-02 to 2026-03-08
Decision focus: Increase weekly repeat use of Feature X
Top 3 User Signals + Recommendations
[
{
"title": "Feature X is used when tied to a standing weekly ritual",
"description": "Usage frequency increased when participants attached Feature X to recurring planning routines.",
"evidence": [
{
"participant_code": "P04",
"timestamp": "2026-03-04T19:04:00Z",
"snippet": "[REDACTED] I use it every Monday planning block; otherwise I skip it."
},
{
"participant_code": "P10",
"timestamp": "2026-03-06T20:11:00Z",
"snippet": "[REDACTED] Worked when I paired it with my weekly review slot."
}
],
"confidence": "High",
"confidence_reason": "Seen across both segments and supported by closed frequency fields over the full week.",
"recommended_experiment": {
"hypothesis": "If Feature X offers one-click recurring schedule anchors, repeat weekly usage will rise.",
"method": "Launch scheduling shortcut CTA after first successful use.",
"primary_metric": "7-day repeat usage rate",
"decision_rule": "Roll out if repeat usage improves >=15% and no decline in completion quality.",
"owner": "Feature X PM",
"timebox": "14 days"
},
"tags": ["habit", "ritual", "retention"],
"impacted_stage": "post_first_use",
"change_over_time": "Signal strengthened through week as more users adopted routine anchoring."
},
{
"title": "Setup friction suppresses second use",
"description": "Participants who needed to reconfigure settings each time skipped follow-up usage.",
"evidence": [
{
"participant_code": "P01",
"timestamp": "2026-03-03T21:30:00Z",
"snippet": "[REDACTED] I avoided it because setup felt repetitive again."
},
{
"participant_code": "P07",
"timestamp": "2026-03-07T18:52:00Z",
"snippet": "[REDACTED] I wanted to use it but not redo the same settings."
}
],
"confidence": "Med",
"confidence_reason": "Present in 4 participants; indicates meaningful friction but sample narrower than top signal.",
"recommended_experiment": {
"hypothesis": "If prior configuration is remembered by default, second-use rate will improve.",
"method": "Enable smart defaults from last run for eligible users.",
"primary_metric": "Second-use conversion within 7 days",
"decision_rule": "Ship if second-use conversion improves >=10% with no increase in correction edits.",
"owner": "Growth PM",
"timebox": "10 days"
},
"tags": ["friction", "configuration", "repeat-use"],
"impacted_stage": "first_to_second_use",
"change_over_time": "Stable but not increasing; concentrated in users with more complex workflows."
},
{
"title": "Value perception drops when outcomes are not visible",
"description": "Users skip Feature X on days when immediate output or progress feedback is not obvious.",
"evidence": [
{
"participant_code": "P06",
"timestamp": "2026-03-05T17:09:00Z",
"snippet": "[REDACTED] Hard to tell what changed after I used it."
},
{
"participant_code": "P12",
"timestamp": "2026-03-08T19:44:00Z",
"snippet": "[REDACTED] I skip it when I cannot see immediate payoff."
}
],
"confidence": "Med",
"confidence_reason": "Repeated in open-text plus low confidence ratings in closed responses; effect size likely moderate.",
"recommended_experiment": {
"hypothesis": "If Feature X shows immediate outcome deltas after each use, users will maintain higher weekly frequency.",
"method": "Introduce post-action result card with before/after summary.",
"primary_metric": "Average weekly uses per active user",
"decision_rule": "Keep feature if weekly usage increases >=8% and user-reported clarity improves.",
"owner": "Design + PM",
"timebox": "14 days"
},
"tags": ["value-visibility", "feedback", "habit"],
"impacted_stage": "ongoing_usage",
"change_over_time": "Signal emerged mid-week and persisted in end-of-week reflections."
}
]
Period: 2026-03-02 to 2026-03-08
Decision focus: Reduce stalls from research to purchase decision
Top 3 User Signals + Recommendations
[
{
"title": "Cross-channel handoff from comparison doc to pricing page is the main stall point",
"description": "Prospects often move from shared docs to pricing pages on mobile, then postpone due to context switching.",
"evidence": [
{
"participant_code": "P14",
"timestamp": "2026-03-03T13:40:00Z",
"snippet": "[REDACTED] I checked pricing on phone after reading docs and decided to revisit later."
},
{
"participant_code": "P17",
"timestamp": "2026-03-06T08:26:00Z",
"snippet": "[REDACTED] Switching devices broke momentum before final decision."
}
],
"confidence": "High",
"confidence_reason": "Observed in both self-serve and assisted segments with repeated stage-transition delay logs.",
"recommended_experiment": {
"hypothesis": "If prospects can save and resume a prefilled pricing context across devices, decision stalls will decrease.",
"method": "Add cross-device resume link from comparison page to personalized pricing state.",
"primary_metric": "Research-to-pricing-to-trial conversion within 48h",
"decision_rule": "Adopt if conversion improves >=12% and median time-to-next-step drops.",
"owner": "Growth Team",
"timebox": "14 days"
},
"tags": ["journey", "handoff", "cross-device"],
"impacted_stage": "research_to_pricing",
"change_over_time": "Persistent throughout week with no natural recovery in later days."
},
{
"title": "Decision confidence rises only after peer validation touchpoint",
"description": "Participants report low confidence until they receive peer or manager confirmation.",
"evidence": [
{
"participant_code": "P15",
"timestamp": "2026-03-04T16:11:00Z",
"snippet": "[REDACTED] I was unsure until my teammate confirmed this matched our workflow."
},
{
"participant_code": "P18",
"timestamp": "2026-03-07T11:09:00Z",
"snippet": "[REDACTED] Needed one external opinion before committing."
}
],
"confidence": "Med",
"confidence_reason": "Strong narrative consistency, but concentration in team-based buyers reduces generality to solo buyers.",
"recommended_experiment": {
"hypothesis": "If we provide lightweight shareable decision summaries, team-validation delay will shrink.",
"method": "Test share-to-teammate decision snapshot on pricing and proposal pages.",
"primary_metric": "Time from pricing visit to purchase decision",
"decision_rule": "Roll out if median decision time decreases >=20% for multi-stakeholder accounts.",
"owner": "PM + Lifecycle",
"timebox": "21 days"
},
"tags": ["confidence", "stakeholders", "purchase"],
"impacted_stage": "evaluation_to_decision",
"change_over_time": "Signal increased during late-week entries as purchase deadlines approached."
},
{
"title": "SMS reminders outperform email for reactivation after stalled decisions",
"description": "When participants stalled after pricing review, SMS prompts produced quicker return than email nudges.",
"evidence": [
{
"participant_code": "P13",
"timestamp": "2026-03-05T09:02:00Z",
"snippet": "[REDACTED] Saw the text quickly and reopened the comparison."
},
{
"participant_code": "P16",
"timestamp": "2026-03-08T10:31:00Z",
"snippet": "[REDACTED] Email got buried; text made me finish the decision."
}
],
"confidence": "Low",
"confidence_reason": "Signal direction is clear but sample size for matched channel comparison is small this week.",
"recommended_experiment": {
"hypothesis": "If stalled users receive SMS-first reactivation within 6h, return-to-decision rate will exceed email-first follow-up.",
"method": "Randomized channel assignment for stalled prospects in the same segment.",
"primary_metric": "Reactivation to decision completion within 72h",
"decision_rule": "Scale SMS-first if lift >=10% and opt-out rate remains below threshold.",
"owner": "Lifecycle Marketing",
"timebox": "14 days"
},
"tags": ["reactivation", "channel", "journey"],
"impacted_stage": "stalled_post_pricing",
"change_over_time": "Emergent late-week signal requiring confirmation next cycle."
}
]