Inspiration
Most AI companions today are selected from preset roles, but they often feel generic and scripted. We wanted to build something more personal: a virtual human that grows from the user’s own relationship data instead of being chosen from a menu.
That idea became YaYa. Users can import relationship-style conversation data, connect external channels, and generate a personalized virtual human that feels familiar, supportive, and emotionally grounded.
What the application does
YaYa is a relationship-native virtual human interface.
It lets users:
- import conversation data such as Discord or WeChat-style excerpts
- analyze relationship tone, care patterns, and language habits
- generate one personalized virtual human
- enter a live conversation mode with that virtual human
- connect OpenClaw as the execution and channel shell
The product is designed as a two-screen experience:
Setup / Generation
- import source data
- connect OpenClaw
- generate the virtual human
Live Session
- left side: the virtual human
- right side: the chat interface
- the system supports voice, expression, and ambience layers around the conversation
How it was built
We separated the system into clear layers.
- MiniMax M2.7 powers relational analysis, persona generation, dialogue, and task intent
- Gemini TTS powers the speech layer
- Imagen 4 powers the visual avatar layer
- Lyria 3 Clip powers ambient emotional audio
- OpenClaw handles channels, runtime shell, and execution
We also built a standalone YaYa backend, a two-screen web interface, and a local OpenClaw bridge so that real-time Discord-style messages can be routed into the YaYa system.
Challenges we ran into
One major challenge was drawing the right boundary between YaYa and OpenClaw.
We decided that:
- historical relationship data should belong to YaYa
- real-time channels and execution should belong to OpenClaw
This gave us a cleaner architecture:
- relationship history -> YaYa
- real-time channel + execution -> OpenClaw -> YaYa backend
Another challenge was making the product feel like a live conversation instead of an AI dashboard. That led us to redesign the UI into a setup screen and a conversation-first screen.
What makes it different
YaYa is not just a chatbot or a preset roleplay system.
It is designed as a relationship-grown virtual human:
- generated from user-imported relational data
- expressed through voice, avatar, and ambience
- connected to external channels through OpenClaw
- focused on entering a live session quickly, not staying in a dashboard
What we are proud of
We are proud that YaYa already works as a real product direction, not just a concept.
We built:
- a working M2.7-powered backend
- a setup-to-live-session product flow
- a local OpenClaw bridge
- a conversation-first interface
- a clean architecture boundary between data generation and real-time execution
What we learned
We learned that building a convincing AI companion is not just about using stronger models. It is about making the product feel coherent.
The most important design decision was separating:
- relationship generation
- real-time conversation
- execution channels
- visual and audio expression
That separation made the whole system much clearer.
Next steps
Our next steps are:
- improve automated import flows for more real chat history sources
- strengthen the live visual expression layer
- deepen long-term memory and personalization
- expand real-time OpenClaw channel integrations
- make the virtual human feel even more alive turn by turn
Built With
- gemini
- gemini-tts
- imagen-4
- lyria-3-clip
- minimax
- next.js
- openclaw
- typescript
Log in or sign up for Devpost to join the conversation.