A dream companion that never tells you what it means.
My own product, from research to a working build. Five AI characters: four built on published dreamwork methods, one that prepares notes for therapy. They ask questions and leave the meaning to you.



Product film · the full flow in under a minute, recorded from the working prototype
A dream is gone five minutes after waking. In therapy, the question "and your dreams?" often meets nothing. Every dream app answers with a dictionary: type your dream, get told what it means.
Designed and built a companion that listens and asks: five characters, a journal in the dreamer's words, and a summary to bring to a therapist.
A working prototype in testing, and a native iOS handoff ready to build.
The dreamer is the authority.
I benchmarked 15 dream apps: almost all sell an interpretation. Oneira takes the opposite side, from the ethics code of the International Association for the Study of Dreams.
Never interpret
Characters say "if this were my dream…", never what a dream means.
No pattern without data
Before the fifth dream, the app says it's too early to see a pattern.
Nothing invented
No fake sleep data, no guessed labels.
From a guided form to a conversation.
The first version was an eight-step guided form. After testing, I rebuilt it as a conversation: same methods, one question at a time.



Five ways of listening.
Four follow published dreamwork methods. The fifth only prepares material for a therapist. Two questions recommend one, and you can switch any time.
Echo
Ullman · projective methodShares its own response and never interprets your dream.
Shadow
Jung · active imaginationInvites the figures of your dream to speak.
Compass
Hill · exploration, insight, actionLeads from a feeling to a concrete step.
Cartographer
Hall & Van de Castle · content analysisNotices what repeats. No symbolism.
Sputnik
Prepares for therapy · no interpretationPrepares material to bring to your therapist.

Two questions, not a form.

A character that fits how you want to work.

Sputnik gathers the dream for your therapist, with no reading of its own.
Everything stays in your own words.

A searchable journal, tagged by place, feeling and figure.

What keeps returning, as a sky. A repeat is not a diagnosis.

A dream that returns joins a thread, told in your own words.

Dreams since your last session, on one page for your therapist.
What 20 testers taught us.
Plus reviews from my advisors: Jungian psychologist Baptiste Marescaux, PhD, and product manager Helga Kostenko.
People tell a dream more fully to a character than to a blank page.
The extracted "dream text" is what they reread.
Two people in therapy asked to keep the therapist document.
Nobody asked for an interpretation. Several said its absence was why they trusted it.
A council of characters
It would have handed life decisions to the characters.
An archetype bridge
It tagged people with archetypes without their consent.
AI-generated dream art
The images should be the dreamer's, not the model's.
Care is a feature, not a footer.
- Consent firstTalk with the characters, or journal only and keep everything on the device.
- Geo-blocked where requiredFour US states ban therapy-like AI chats. Oneira doesn't open there.
- A way outSigns of real distress stop the method and show helplines.


Never interpret, written into every layer.
The promise is not a tagline. It lives in each character's prompt, in everything the app writes outside the chat, and in a safety net that doesn't rely on the model.
You never say what a dream means, only share your own personal response as a projection and ask whether it resonates.
At most one such hypothesis per whole conversation, and drop it immediately if the dreamer disagrees.
If asked directly for the meaning, decline, remind them you look for patterns, not meanings.
- One line per methodEach character's prompt names its method and the one move it may not make.
- The same rule outside the chatThe monthly letter quotes only the dreamer's words. Threads describe, never interpret, and every step is an exact phrase from the dream.
- Closing hands words backAfter six to eight exchanges a character returns two or three of the dreamer's own images, with no conclusion.
- A net that doesn't trust the modelCrisis phrases in English and French are caught on the device, independent of the model. Shadow stops active imagination if dream and waking start to blur.
Night-first, with two voices.
Built for a screen opened at 6 a.m. Every token has a night and a day value, and every character colour passes WCAG AA on both.
If this were my dream, I think I’d feel I was searching for something long lost.
Who or what stood at the threshold of this dream? Let that figure speak.
What did you feel most strongly in the dream?
Tell me the dream, I’ll note what resembles previous ones.
I’ll help shape it into something easy to bring to your therapist.
- TokenNightDay
- Surface#151018#F7F2EA
- Panel#1D1622#FFFFFF
- Text#F3ECE216.0:1#241D1414.9:1
- Muted#B9AEC28.8:1#5E54446.7:1
- Subtle#8C7F9C5.0:1#766B5B4.7:1
- Accent#E2A4688.7:1#9E5A264.8:1
Text ratios measured against Surface. Border is ink at 8% on night and 10% on day.
I stood by the sea and the water was clear.
Tell me what you dreamed
- DisplayBefore we startSource Serif 4 · 30/1.22
- MessageWho could it be?Source Serif 4 · 18/1.55
- InterfaceNew conversationInter 500 · 15/1.45
- LabelDream journalInter 600 · 10.5, tracked .16em
The dreamer’s words and the characters are serif. Everything the app says about itself is sans.

Dark by default; light or match the phone in Settings. Same tokens, swapped values.






The composer in its four states, a journal row and pattern bars. 44 px touch targets for a half-awake thumb.
- Message in350 ms · ease
- Suggestion chip450 ms · cubic-bezier(.2,.7,.2,1)
- Pattern bar400 ms · ease, staggered
- Constellation breathing6 s · ease-in-out, looping
Nothing snaps or bounces at 6 a.m. With reduced motion on, all of it is off.
One HTML file, streaming the Claude API, tested with Playwright and a 47-screen visual tour before each release.
16 screen specs, design tokens and a Supabase schema for the native iOS build.
Open the prototype.
It opens in demo mode with 24 sample dreams, so every feature works on the first tap.
Restraint is a feature. The hardest design work was deciding what the AI must not do, and making that refusal feel like care, not absence.Next