Back to Conversational & Ritual System
Features & Journeys
Step-by-step workflows with detailed diagrams showing what is asked and saved at each stage.
Core Features
Voice-First Content Creation
Users create personalized content (affirmations, guided meditations, or rituals) through guided conversation, not forms. The system uses natural language dialogue to understand intent, gather context, and generate customized practices.
Content Library
Users save content and return to practice them regularly. No gamification—users return for intrinsic value. Unlimited replay (practice is free, no credit consumption).
Marketplace
Facilitators/creators publish ritual packs. Users discover, purchase, and subscribe to creator content.
Content Creation Workflows
Affirmation Creation
flowchart TD
Start([User Selects
Create Affirmation]) --> Greeting[System Greets] Greeting --> Intent[Ask: What do you want
to affirm or strengthen?] Intent --> IntentResp[User Response:
e.g., 'I want confidence'] IntentResp --> Statements[Ask: What specific statements
feel true for you?] Statements --> StatementsResp[User Provides
3-7 statements] StatementsResp --> Voice[Ask: Your voice or
selected voice?] Voice --> VoiceResp[User Chooses Voice] VoiceResp --> Review[System Presents Summary] Review --> Confirm{User Confirms?} Confirm -->|Yes| Generate[Generate Affirmation
0.5 credits] Confirm -->|No| Modify[Return to Statements] Modify --> Statements Generate --> Complete[Affirmation Ready] Complete --> Save[Save to Library]
Create Affirmation]) --> Greeting[System Greets] Greeting --> Intent[Ask: What do you want
to affirm or strengthen?] Intent --> IntentResp[User Response:
e.g., 'I want confidence'] IntentResp --> Statements[Ask: What specific statements
feel true for you?] Statements --> StatementsResp[User Provides
3-7 statements] StatementsResp --> Voice[Ask: Your voice or
selected voice?] Voice --> VoiceResp[User Chooses Voice] VoiceResp --> Review[System Presents Summary] Review --> Confirm{User Confirms?} Confirm -->|Yes| Generate[Generate Affirmation
0.5 credits] Confirm -->|No| Modify[Return to Statements] Modify --> Statements Generate --> Complete[Affirmation Ready] Complete --> Save[Save to Library]
Step-by-Step: What is Asked and Saved
| Step | System Asks | User Provides | System Saves |
|---|---|---|---|
| 1. Greeting | "Let's create an affirmation together. What would you like to affirm or strengthen?" | Intent (e.g., "I want confidence") | intent: string |
| 2. Statements | "What specific statements feel true for you? Share 3-7 statements in present tense." | 3-7 affirmation statements | statements: string[] |
| 3. Voice | "Would you like to use your voice or a selected voice?" | Voice preference | voice_id: uuid, voice_type: 'user' | 'standard' |
| 4. Review | Presents summary: intent, statements, voice | Confirmation or modification request | Updates saved data if modified |
| 5. Generation | N/A (background process) | N/A | content_text: text, audio_url: string, audio_duration: integer, content_type: 'affirmation', credit_cost: 0.5 |
Guided Meditation Creation
flowchart TD
Start([User Selects
Create Meditation]) --> Greeting[System Greets] Greeting --> Intent[Ask: What state do you
want to access?] Intent --> IntentResp[User Response:
e.g., 'I need calm'] IntentResp --> Duration[Ask: How long?
5-20 minutes] Duration --> DurationResp[User Chooses Duration] DurationResp --> Practice[Ask: What practice type?
Breath work, body scan, etc.] Practice --> PracticeResp[User Chooses Practice] PracticeResp --> Imagery[Ask: Any specific imagery
or visualization?] Imagery --> ImageryResp[User Provides
or skips] ImageryResp --> Voice[Ask: Voice preference] Voice --> VoiceResp[User Chooses Voice] VoiceResp --> Review[System Presents Summary] Review --> Confirm{User Confirms?} Confirm -->|Yes| Generate[Generate Meditation
1 credit] Confirm -->|No| Modify[Return to Duration] Modify --> Duration Generate --> Complete[Meditation Ready] Complete --> Save[Save to Library]
Create Meditation]) --> Greeting[System Greets] Greeting --> Intent[Ask: What state do you
want to access?] Intent --> IntentResp[User Response:
e.g., 'I need calm'] IntentResp --> Duration[Ask: How long?
5-20 minutes] Duration --> DurationResp[User Chooses Duration] DurationResp --> Practice[Ask: What practice type?
Breath work, body scan, etc.] Practice --> PracticeResp[User Chooses Practice] PracticeResp --> Imagery[Ask: Any specific imagery
or visualization?] Imagery --> ImageryResp[User Provides
or skips] ImageryResp --> Voice[Ask: Voice preference] Voice --> VoiceResp[User Chooses Voice] VoiceResp --> Review[System Presents Summary] Review --> Confirm{User Confirms?} Confirm -->|Yes| Generate[Generate Meditation
1 credit] Confirm -->|No| Modify[Return to Duration] Modify --> Duration Generate --> Complete[Meditation Ready] Complete --> Save[Save to Library]
Step-by-Step: What is Asked and Saved
| Step | System Asks | User Provides | System Saves |
|---|---|---|---|
| 1. Greeting | "Let's create a guided meditation. What state would you like to access?" | Intent (e.g., "I need calm", "I want clarity") | intent: string |
| 2. Duration | "How long would you like this meditation? (5-20 minutes)" | Duration preference | duration_preference: integer |
| 3. Practice Type | "What practice type? Breath work, body scanning, visualization, or combination?" | Practice type selection | practice_type: 'breath-work' | 'body-scanning' | 'visualization' | 'combination' |
| 4. Imagery | "Any specific imagery or visualization you'd like included?" | Imagery description or skip | imagery: string | null |
| 5. Voice | "Voice preference?" | Voice selection | voice_id: uuid, voice_type: 'user' | 'standard' |
| 6. Review | Presents summary: intent, duration, practice type, imagery, voice | Confirmation or modification | Updates saved data if modified |
| 7. Generation | N/A (background process) | N/A | content_text: text, structure: jsonb (grounding, breath work, attention direction, imagery, closure), audio_url: string, audio_duration: integer, content_type: 'guided_meditation', credit_cost: 1 |
Ritual Creation
flowchart TD
Start([User Selects
Create Ritual]) --> Greeting[System Greets] Greeting --> Intent[Ask: What is changing
in your life?] Intent --> IntentResp[User Response:
e.g., 'I'm transitioning careers'] IntentResp --> Context[Ask: Why does this matter?
What's the deeper meaning?] Context --> ContextResp[User Shares Context
and Meaning] ContextResp --> Duration[Ask: How long?
10-30 minutes] Duration --> DurationResp[User Chooses Duration] DurationResp --> Practice[Ask: What practice type?
Breath work, body scan, etc.] Practice --> PracticeResp[User Chooses Practice] PracticeResp --> Identity[Ask: What identity-level
language resonates?] Identity --> IdentityResp[User Provides
Identity Statements] IdentityResp --> Emotional[Ask: What emotional state
do you want to anchor?] Emotional --> EmotionalResp[User Describes
Emotional Goal] EmotionalResp --> Voice[Ask: Voice preference] Voice --> VoiceResp[User Chooses Voice] VoiceResp --> Review[System Presents Summary] Review --> Confirm{User Confirms?} Confirm -->|Yes| Generate[Generate Ritual
1 credit] Confirm -->|No| Modify[Return to Context] Modify --> Context Generate --> Complete[Ritual Ready] Complete --> Save[Save to Library]
Create Ritual]) --> Greeting[System Greets] Greeting --> Intent[Ask: What is changing
in your life?] Intent --> IntentResp[User Response:
e.g., 'I'm transitioning careers'] IntentResp --> Context[Ask: Why does this matter?
What's the deeper meaning?] Context --> ContextResp[User Shares Context
and Meaning] ContextResp --> Duration[Ask: How long?
10-30 minutes] Duration --> DurationResp[User Chooses Duration] DurationResp --> Practice[Ask: What practice type?
Breath work, body scan, etc.] Practice --> PracticeResp[User Chooses Practice] PracticeResp --> Identity[Ask: What identity-level
language resonates?] Identity --> IdentityResp[User Provides
Identity Statements] IdentityResp --> Emotional[Ask: What emotional state
do you want to anchor?] Emotional --> EmotionalResp[User Describes
Emotional Goal] EmotionalResp --> Voice[Ask: Voice preference] Voice --> VoiceResp[User Chooses Voice] VoiceResp --> Review[System Presents Summary] Review --> Confirm{User Confirms?} Confirm -->|Yes| Generate[Generate Ritual
1 credit] Confirm -->|No| Modify[Return to Context] Modify --> Context Generate --> Complete[Ritual Ready] Complete --> Save[Save to Library]
Step-by-Step: What is Asked and Saved
| Step | System Asks | User Provides | System Saves |
|---|---|---|---|
| 1. Greeting | "Let's create a ritual together. What is changing in your life right now?" | Intent describing change (e.g., "I'm transitioning careers", "I'm healing from a breakup") | intent: string |
| 2. Context | "Why does this matter to you? What's the deeper meaning or significance?" | Context and meaning (personalized story) | context: jsonb {why_matters: string, deeper_meaning: string, life_moment: string} |
| 3. Duration | "How long would you like this ritual? (10-30 minutes)" | Duration preference | duration_preference: integer |
| 4. Practice Type | "What practice type? Breath work, body scanning, visualization, or combination?" | Practice type selection | practice_type: 'breath-work' | 'body-scanning' | 'visualization' | 'combination' |
| 5. Identity Language | "What identity-level language resonates with you? How do you want to speak to yourself?" | Identity statements (present-tense, personalized) | identity_statements: string[] |
| 6. Emotional Anchoring | "What emotional state do you want to anchor? What do you want to feel?" | Emotional goal description | emotional_goal: string |
| 7. Voice | "Voice preference?" | Voice selection | voice_id: uuid, voice_type: 'user' | 'standard' | 'premium' |
| 8. Review | Presents complete summary: intent, context, duration, practice type, identity statements, emotional goal, voice | Confirmation or modification | Updates saved data if modified |
| 9. Generation | N/A (background process) | N/A | content_text: text, structure: jsonb {grounding, context, core_affirmations, emotional_anchoring, closure}, context: jsonb (full creation context), audio_url: string, audio_duration: integer, content_type: 'ritual', credit_cost: 1 |
Return Loop Workflow
sequenceDiagram
participant User
participant Library
participant Audio Service
participant CDN
User->>Library: Open library
Library->>User: Display saved content
(by type, tags, folders) User->>Library: Select content item Library->>User: Show details
(title, duration, tags, created date) User->>Library: Start practice Library->>Audio Service: Request audio URL Audio Service->>CDN: Get pre-signed URL CDN-->>Audio Service: Return audio URL Audio Service-->>Library: Return URL Library->>User: Start playback User->>Library: Pause/Resume (optional) User->>Library: Complete practice Library->>Library: Record practice event
(last_played_at, play_count++) Library->>User: Return to library
(by type, tags, folders) User->>Library: Select content item Library->>User: Show details
(title, duration, tags, created date) User->>Library: Start practice Library->>Audio Service: Request audio URL Audio Service->>CDN: Get pre-signed URL CDN-->>Audio Service: Return audio URL Audio Service-->>Library: Return URL Library->>User: Start playback User->>Library: Pause/Resume (optional) User->>Library: Complete practice Library->>Library: Record practice event
(last_played_at, play_count++) Library->>User: Return to library
Step-by-Step: What is Asked and Saved
| Step | System Action | User Action | System Saves |
|---|---|---|---|
| 1. Library View | Displays saved content organized by type, tags, or folders | User browses and selects content | N/A (read-only) |
| 2. Content Selection | Shows content details: title, duration, tags, created date | User reviews and selects "Start Practice" | N/A (read-only) |
| 3. Audio Request | Requests pre-signed URL from CDN | N/A | N/A (temporary URL) |
| 4. Playback | Starts audio playback | User listens, can pause/resume | N/A (no save during playback) |
| 5. Completion | Records practice completion | User completes practice | last_played_at: timestamp, play_count: integer++ |
Marketplace Workflow
sequenceDiagram
participant User
participant Catalog
participant Payment
participant Stripe
participant Library
User->>Catalog: Browse packs
(search/filter) Catalog->>User: Display pack results User->>Catalog: View pack details Catalog->>User: Show pack info
(description, creator, rituals, price) User->>Payment: Purchase/Subscribe Payment->>Stripe: Process payment Stripe-->>Payment: Payment confirmed Payment->>Library: Grant access to pack Library->>Library: Add pack rituals
to user library Library->>User: Pack available User->>Library: Practice pack rituals
(search/filter) Catalog->>User: Display pack results User->>Catalog: View pack details Catalog->>User: Show pack info
(description, creator, rituals, price) User->>Payment: Purchase/Subscribe Payment->>Stripe: Process payment Stripe-->>Payment: Payment confirmed Payment->>Library: Grant access to pack Library->>Library: Add pack rituals
to user library Library->>User: Pack available User->>Library: Practice pack rituals
Step-by-Step: What is Asked and Saved
| Step | System Asks/Shows | User Provides | System Saves |
|---|---|---|---|
| 1. Browse | Displays pack catalog with search/filter options | User searches or browses | N/A (read-only) |
| 2. Pack Details | Shows pack description, creator info, rituals included, price, reviews | User reviews pack | N/A (read-only) |
| 3. Purchase Decision | Shows pricing options (one-time or subscription) | User selects purchase/subscribe | N/A (decision only) |
| 4. Payment | Redirects to Stripe checkout | User completes payment | payment_id: uuid, payment_status: 'completed', pack_access: granted |
| 5. Access Grant | Grants access to pack rituals | N/A | user_pack_access: jsonb {pack_id: uuid, access_granted_at: timestamp, ritual_ids: uuid[]} |
| 6. Library Update | Adds pack rituals to user library | N/A | Updates content items with pack_id: uuid, marks as accessible |
User Journeys
New User Onboarding
journey
title New User Onboarding Journey
section Discovery
Discovers waQup: 3: User
Reads about voice-first rituals: 4: User
Decides to try: 5: User
section First Experience
Opens app: 4: User
Sees simple interface: 5: User
Chooses content type: 4: User
Creates first content: 5: User
Practices content: 5: User
Feels value: 5: User
section Engagement
Returns to practice: 5: User
Creates more content: 4: User
Explores marketplace: 4: User
Builds habit: 5: User
Content Creation Progression
journey
title User Progression Through Content Types
section Starting Point
Creates affirmation: 5: User
Practices daily: 5: User
Feels resistance: 3: User
section Deepening
Uses guided meditation: 5: User
Accesses deeper state: 5: User
Feels ready for change: 5: User
section Encoding
Creates ritual: 5: User
Experiences identity shift: 5: User
Integrates change: 5: User
Progression Logic:
- Affirmations repeat (daily, lightweight)
- Meditations open (when resistance appears)
- Rituals encode (when something truly matters)
Journey Principles
Trust-Based
- No manipulation or dark patterns
- Transparent pricing and terms
- Clear value proposition
- Honest communication
User Autonomy
- Users control their practice
- No pressure or dependency
- Easy exit (export, delete)
- Respect for user agency
Calm & Supportive
- No urgency or FOMO
- No comparison or competition
- Supportive, not pushy
- Respects user's pace