One conversation across text, calls and the web: notes from building Ember
Ember is an AI people talk to about the thing they keep coming back to: a marriage that has gone quiet, someone who stopped replying, a loss. Many of the people who use it most never open an app. They text it, or they ca
Ember is an AI people talk to about the thing they keep coming back to: a marriage that has gone quiet, someone who stopped replying, a loss. Many of the people who use it most never open an app. They text it, or they call it, the way they'd reach a person.
That shaped the engineering more than anything else. Here are a few things we learned making one conversation work across a browser, an app, a phone call and a text thread.
Joining is one text
We didn't want a password between someone and the first thing they say. On a phone, "Join" opens your messages app with a short text already written. You send it, and that's the account: your number is who you are.
The part that took longest wasn't the text, it was what happens after. The browser that started the sign-up has to find out that the text arrived, and the phone has to end up signed in too, even if the person started in an in-app browser that doesn't share cookies with Safari. So the reply carries a link that signs that phone in and lands on the same conversation. Nobody who just joined ever sees a login form.
One thread, many doors
Web chat, the app, SMS and voice calls all write to the same conversation. That sounds obvious; it changes a lot:
- A call becomes part of the thread. If someone calls on their lunch break and texts that evening, the evening reply knows what was said on the call.
- Memory isn't a feature you turn on in one channel. "You said you might tell him last night. How did it go?" only works if last night's conversation and this morning's text are the same conversation.
- The reply has to fit the door it's going out of. A paragraph that reads fine on a screen is a wall in a text bubble and a monologue on a call.
SMS is not a chat UI
Text messages have constraints a chat window hides:
- Long messages are split into segments. We once sent a 616-character message with a link near the end. The carrier split it, and the link landed across the boundary between two segments, so on some phones it wasn't tappable. Now the words and the link always go out as two separate messages.
- A link can be a card. On iMessage a link sent on its own renders as a preview card, which turned out to be a better way to say "pick up where you left off" than a sentence with a URL in it.
- Be a contact, not a number. The first reply includes a contact card, so Ember shows up by name instead of as a string of digits in someone's messages.
The same rules on every door
An AI that people talk to about hard things has to behave the same way whichever way they reach it:
- It says it's an AI, on the web, in the app, by text and on a call.
- When words carry a risk of self-harm, crisis lines are offered right there in the conversation, not just on a website somewhere.
- Ember may text first now and then, for example when it has a letter for someone. That can be turned off in Settings, and replying STOP stops texts entirely.
- Reminders happen only when someone asks for one, at a time they choose, within the next two weeks.
Say the privacy truth plainly
There's one privacy fact we decided to state everywhere instead of burying: texts from Ember arrive like any other text, so anyone who can see the messages on your phone can see them too. For some people that's fine. For someone talking about their marriage on a shared family phone, it isn't, and they can talk on the web without an account instead. Telling people that up front matters more than any setting.
The other two promises are simple: nothing you tell becomes a public post, and no one can read what Ember writes from your conversation unless you separately say yes.
What's behind the conversation
The reason any of this is worth the trouble is what sits behind the conversation. Ember learns from real people's lives: what others in a similar situation went through, what they tried, and what happened next. When someone's story could help a person standing where they stood, Ember asks them once, and only with that yes can it be read. Later, if someone wants, Ember can introduce them to people they'd get along with.
We call that an AI-native community for human support. The engineering above is mostly about making sure the way in is as easy as sending a text.
Ember is made by Oriscen Inc. You can try it at ember.space. Ember is an AI; it isn't therapy or an emergency service.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.