AI Companion•Emotional Reflection•iOS Product

UNIMO

An AI emotional companion that helps users turn meaningful conversations into collectible Emotion Cards.

UNIMO 2
UNIMO 1
UNIMO 3
Overview

An AI emotional companion that helps users keep the moments that matter.

UNIMO identifies meaningful moments from a conversation and transforms them into visual cards that users can save and revisit.

I contributed to the product from experience design to production implementation, including the card creation flow, SwiftUI design system, API integration, and system states.

Role

Design Engineer

Skills

Product Strategy
Interaction Design
Design System
SwiftUI Development
API Integration

Duration

Jun 2025 to Present

Tools

Figma
SwiftUI

Product Goal

Turn one meaningful moment from a conversation into something users can keep.

Most AI companions bury important moments inside endless chat logs.

We designed a highly visual experience that captures single meaningful interactions and turns them into collectible Emotion Cards.

Chat History

AI Extraction

Visual Format

Meaningful Moment

Emotion Card

The Problem

We made reflection feel like a game of chance.

Our original assumption was that randomness would make Emotion Cards feel more collectible. After a conversation, some users received an unexpected opportunity to roll the dice. The result determined whether they could enter a card lottery, and the system then decided which part of the conversation became the card.

Testing showed that the surprise was masking the product's core value.

Users did not know when or how to create a card. Even after unlocking one, they could not understand why the system chose a particular moment. A long loading state then left them waiting without feedback.

Initial Flow

Chat

Random Dice

Card Lottery

AI Selected

Wait

Card

Impact

Results in four metrics.

442

Beta Users

18%

Higher Completion

800+

Cards Created

26

SwiftUI Components

More than 267 users created at least one Emotion Card.

Design Challenge 01

Give users control over what becomes a card.

The original experience treated Emotion Cards as random rewards.

After chatting with UNIMO, users occasionally received an opportunity to roll the dice. The result gave them a chance to enter a lottery and unlock a card. Only then could the card be generated.

Initial Flow

A random reward loop with little user control

Users had to wait for a random chance before they could create a card.

01

Original UNIMO conversation screen
Chat

Users shared meaningful moments in conversation.

02

Original random dice screen
Random chance

Card creation depended on an unexpected dice event.

03

Original card unlock screen
Unlock

The system randomly decided what the card would become.

04

Original card loading state
Wait

A long loading state gave users no sense of progress.

Unclear

Users did not know how to create a card.

Random

The system chose the content without user input.

Passive

Users waited without knowing what was happening.

Final Flow

A guided flow built around user intent

Users choose what matters, while clear system states make generation easy to follow.

01

Redesigned UNIMO conversation screen
Choose

AI surfaces meaningful moments for the user to review.

02

Redesigned card creation entry point
Confirm

The user decides which moment becomes a card.

03

Redesigned card generation screen
Generate

Visible states explain what the system is doing.

04

Completed UNIMO Emotion Card
Ready

The completed card returns with a clear ready state.

Design Challenge 02

Make a 30-second AI process feel transparent and recoverable.

Card generation could take up to 30 seconds. I designed the full response lifecycle so users could understand the system's progress, recover from failures, and keep their selected moment.

Define the Full Response Flow

Before designing the interface, I mapped out the complete AI response lifecycle, accounting for both the happy path and edge cases.

Card Generation State Flow

User Request
Analyzing
Selecting
Empty Response
Return to Chat
Summarizing
Timeout
Try Again
Generating
Failure
Preserve Progress
Success

Communicate Progress

I divided generation into four visible stages so users always knew what the system was doing.

9:4101 of 04

Identifying

Finding meaningful moments

Identifying
Analyzing
Formatting

Identifying

9:4102 of 04

Analyzing

Understanding emotional context

Identifying
Analyzing
Formatting

Analyzing

9:4103 of 04

Formatting

Building the card summary

Identifying
Analyzing
Formatting

Formatting

9:4104 of 04

Ready

Your Emotion Card is complete

Identifying
Analyzing
Formatting

Ready

Protect User Progress

If a request times out or fails, the selected moment stays saved. Users can retry without returning to the conversation.

Generation paused

A clear status replaces a dead end.

Moment saved

The selected context stays preserved.

Try again

Generation resumes from the saved moment.

Design System

Build a scalable SwiftUI design system.

As UNIMO added more conversational and card based features, we needed a reusable system that could support both design and development.

I translated the visual language from Figma into 26 production SwiftUI components.

The system includes conversation patterns, card components, selection controls, loading states, error messages, and recovery actions.

It also defines how the interface communicates during different AI states.

The component system helped the team maintain consistency and ship approximately one new feature each week.

Next Steps

Opportunities I see.

A Richer Card Collection

Help users organize, compare, and revisit cards as their emotional history grows.

The collection could make emotional patterns easier to recognize over time.

More Personalization

Use saved cards and emotional patterns to make future reflections more relevant to each user.

Faster Generation Feedback

Continue improving the connection between backend progress and frontend states so the waiting experience feels more accurate and responsive.

More Projects