Rituals
Orchestrated multi-sensory moments that create emotional connection. Sound, haptics, and visuals working together.
Why Rituals Matter
Rituals transform routine interactions into meaningful moments. When Ferni wakes up for the first time today, it's not just an app launch—it's a greeting. When you achieve something, it's not just a checkmark—it's a celebration.
Each ritual combines three sensory channels: visual (glow animations), audio (signature sounds), and haptic (tactile feedback). Together, they create moments that feel remembered, not programmed.
Core Rituals
The app breathing to life for the first time today
Voice connection successfully established
First user speech detected in session
New persona activated
Quick acknowledgment of achievement
Significant accomplishment celebration
Consecutive day milestone
Team member becomes available
Emotional or cognitive breakthrough moment
Proactive no-agenda outreach
Graceful session conclusion
Step Types
Each ritual step has a type that determines which system handles it.
Glow
Avatar glow animations—breathing, pulsing, celebrating, persona color shifts
type: "glow"
Audio
Sound effects from the audio library—startup chimes, celebrations, notifications
type: "audio"
Haptic
Tactile feedback patterns—taps, bumps, vibration sequences
type: "haptic"
Visual
Screen animations—confetti, particles, celebration effects
type: "visual"
User Preferences
Users can customize ritual behavior to match their preferences.
Haptics
Sounds
Visual Effects
Usage
import { triggerRitual, rituals } from 'design-system/rituals';
// Trigger a ritual by ID
await triggerRitual('small_win');
// Trigger with custom parameters
await triggerRitual('streak', {
streakCount: 7,
personalized: true
});
// Check if ritual can fire (respects cooldowns)
if (rituals.canFire('thinking_of_you')) {
await triggerRitual('thinking_of_you');
}
// Listen for ritual completion
rituals.on('ritual:complete', (ritual) => {
console.log(`Ritual ${ritual.id} completed`);
});