AI keyboard that helps non-native speakers sound closer

Project overview

For late L2 learners, one of the most frustrating moments is coming across as cold or distant because they lack the expressive range to communicate. Most language AI tools optimize rewrites for linguistic accuracy, but in close friendships, sounding emotionally close matters just as much. We designed an AI keyboard that rewrites messages for emotional closeness in real time.

ROLE & Contribution

Design Engineer. Design & prototyped end-to-end flows, then technically implemented Figma designs with Claude Code. Validated AI output quality through user testing, iteratively refining prompts to optimize better results.

Key Interactions

Input

Tone tag selection

Result generation

Translation & Text swap

writing patterns & Insights

To understand what makes their writing feel less close, we asked 5 L2 (late second language) English speakers to reply to the same message in English, then in their native language. In terms of differences in expressiveness, we found they tend to compress emotion more in their non-native language in two ways:

Relied on familiar, low-risk phrases

Response in Non-native English

Response translated from native language

M

E

99

Ellie

I think I completely bombed that exam.

🥺 I'm sorry to hear that. I'm sure you'll do better next time though!

they answered afterwards,

“not sure about the boundaries,

don’t know what else to say”

M

E

99

Ellie

(Translated from Korean)

Wait seriously? You studied so hard though. Let's grab something spicy and complain about it

I think I completely bombed that exam.

Emotional compensation through emojis

Response in Non-native English

Response translated from native language

M

E

99

Ellie

I finally passed the exam!

omg 😭😭😭 Congratulations!!!🥰

they answered afterwards,

“When I try to say in English, it’s hard to come up with anything else, but once I throw in an emoji, it actually feels like it shows how happy I am at least a bit”

M

E

99

Ellie

(Translated from Chinese)

Congrats!! I knew you could do it hahaha I'm really proud of you

I finally passed the exam!

Design Principles for AI

To sound closeness between friends...

A message feels personal when it shows the thought or feeling behind it. "Why weren't you in class?" asks about what happened. "I was looking for you all day. Are you okay?" reveals what someone was feeling.

Close friends rarely write perfectly polished messages. A quick "lol same" or a typo left uncorrected feels more like a friend than a carefully edited reply.

Behavior & System design

We translated the design principles into concrete prompting behaviors for closeness between friends that guided what the LLM model should reveal, preserve and suppress during generation.

Reveal

underlying thoughts

implied feelings

emotional intent

Preserve

texting style

sentence context

emotional intensity

sentence length

Suppress

assistant-like explanations

generic reassurance

over-polished phrasing

performative humor

And then configured the system architecture.

ex. I didn’t know that

Plain text

e.g. Why you weren’t in class?

Input

Process

Output

Expressive alternatives

e.g. I was looking for you all day. U good?

Gemini API

Applies:

Emoji (nuance parameter)

e.g. Crying - 😭 / ...

Reveal

Preserve

Suppress

Why Emoji as a nuance parameter?

→ It functions as an additional expressive language and is naturally used in a messaging situation to compensate for emotional nuances that are difficult to convey through texts alone

Nuance Parameter

We narrowed the emoji set to 7, chosen from the most globally used emojis and mapped onto universal human emotions to balance broad emotional coverage with stable generation.

😮

surprise

😂

laughing

😆

excited

😍

loving

😭

crying

😅

awkward

🥺

pleading

The same emoji can be read differently, so leaving the nuance up to emoji alone makes its interpretation inconsistent. To anchor the consistent output across generations, we defined observable texting behaviors the model should follow.

Behavioral prompt specification (e.g. Crying)

😭

crying

Definitions

1

Behavioral cues

2

guardrails

3

Example outputs

4

Dramatic devastation with attitude—not quiet sadness, but loud, indignant grief. The feeling is "I can't believe this happened to me."

- Increase emotional intensity

- Speak from a personally wronged perspective

- Use dramatic but believable wording

Tone-specific

- quiet, restrained sadness

- passive or gentle phrasing

Shared across all tones

- therapist-like reassurance

- meme humor or roleplay energy

"I literally can't believe this happened 😭"

"nah this is actually so unfair"

"I'm actually devastated"

Output Quality Validation & Iteration


We ran 24 rounds of user testing, having people type and review the system’s output in real-time. On a 5 point scale measuring how well the intended nuance came through, we scored an average of 4.1 and found two important areas to improve.

Brown U School of Engineering Science Poster

Screenshots of results from the 24 rounds of user testing

Finding 1 - Ambiguous emoji interpretation ("I interpreted this emoji differently”)

I’m late, everyone will look at me

😭

🥰

😂

😆

😮

😅

🥺

i'm so screwed. Everyone's gonna notice me walking in

Swap

omg i'm late. everyone's gonna stare at me the second i open the door

Swap

nooo i'm gonna be late. i hate when everyone looks at me as i walk in 😭

Swap

Serena

􀆊

Back

Only Emoji

Design change - Added explicit emotion labels to align individual’s interpretation

I’m late, everyone will look at me

😭

crying

😍

loving

😂

laughing

😆

excited

😮

surprise

😅

awkward

🥺

pleading

i'm so screwed. Everyone's gonna notice me walking in

Swap

omg i'm late. everyone's gonna stare at me the second i open the door

Swap

nooo i'm gonna be late. i hate when everyone looks at me as i walk in 😭

Swap

Serena

􀆊

Back

Emoji + Emotion Label

Finding 2 - Difficulty grasping the nuance of second-language expressions (“I'm not really sure what this expression means.”)

I’m late, everyone will look at me

😭

🥰

😂

😆

😮

😅

🥺

i'm so screwed. Everyone's gonna notice me walking in

Swap

omg i'm late. everyone's gonna stare at me the second i open the door

Swap

nooo i'm gonna be late. i hate when everyone looks at me as i walk in 😭

Swap

Serena

􀆊

Back

English only

Design change - Added native-language interpretation to convey the intended nuance of unfamiliar expressions.

I’m late, everyone will look at me

😭

crying

😍

loving

😂

laughing

😆

excited

😮

surprise

😅

awkward

🥺

pleading

Show in Korean

Change language

i'm so screwed. Everyone's gonna notice me walking in

Swap

omg i'm late. everyone's gonna stare at me the second i open the door

Swap

nooo i'm gonna be late. i hate when everyone looks at me as i walk in 😭

Swap

Serena

􀆊

Back

I’m late, everyone will look at me

😭

crying

😍

loving

😂

laughing

😆

excited

😮

surprise

😅

awkward

🥺

pleading

Back to English

Change language

😭

Serena

􀆊

Back

Native-language

translation

Removed the Swap button to keep

the focus on understanding first, then returning to the second-language

Show in English (Second-language)

Translate to native-language

Next step is...


1. Scaling emotional closeness across platforms

We chose the keyboard as the MVP because it provides a cross-app, zero-friction touchpoint at the exact moment people type. But the challenge of expressing emotional closeness in a second language could extend wherever people write. Future iterations could bring the same behavioral rewriting system to social media, email, browser extensions, and other writing experiences.

2. Personalizing closeness by relationships

While this project focuses on making messages sound emotionally closer, closeness itself varies across relationships. The way people communicate with a best friend, sibling, partner, or coworker differs significantly. Future work could explore how AI adapts its rewrites based on the user's relationship with the recipient, making suggestions feel more personally authentic rather than universally friendly.