AI keyboard that helps non-native speakers sound closer

Design + Engineering

AI Interaction

Overview

Designing an AI rewriting tool for second-language messaging

This project started from our early research that second language learners used to compress emotional expression in writing because they relied on a narrower set of familiar phrases. We designed the AI behavior and interactions for a custom keyboard that generated more personal, expressive versions of their original messages for conversations with close friends.

As the design engineer, I took the product from Figma to a working native iOS keyboard and covered the end-to-end interaction flow, prompting behavior, and SwiftUI implementation. Over 3 weeks, I refined the AI output and interface through 24 live user tests.

Collaborators

Ellie Na (Design Engineer)

Serena Gupta (Visual Director)

Chaki Ng (Engineering Advisor)

Soojung Ham (Design Advisor)

Skills

Interaction Design

AI Behavior & Prompt Design

Native iOS Implementation

User Testing & Iteration

Tools & Stack

Figma, Xcode, Swift / SwiftUI, Gemini API, Cursor, Claude Code

Duration

2026.03-2026.05

Outcome

1. Our AI keyboard cut message-rewriting time by 70% while texting.

In a timed comparison, users reached a rewrite they were ready to send in around 30 seconds with the keyboard, down from 1 minute 40 seconds using a general-purpose LLM.

1m 40s

~30s

Time to a send-ready rewrite

2. The generated rewrites scored 4.1/5 for intended nuance alignment.

We asked 24 second-language speakers to use the rewriting flow and rate how well the outputs conveyed their intended nuance. The outputs received an average rating of 4.1/5.

4.1/5

Intended nuance alignment

Key Interactions

An end-to-end rewriting flow within the keyboard

Texting is fast and lightweight, so each interaction needed to fit within the message field. The keyboard carried users from their original text through nuance selection, generation, interpretation, and insertion in one compact flow.

Start with the original message

Users entered the message they wanted to send directly in the keyboard. Keeping the entry point within the typing experience made the rewriting flow available across messaging apps and reduced the work of moving between a conversation and a separate AI tool.

Choose the intended nuance with labeled emotion tags

Our research showed that second-language speakers already used emojis to carry emotional nuance. We narrowed the control to seven common emotions and paired each emoji with an explicit label after testing revealed inconsistent interpretations.

Generate 3 alternatives while keeping context visible

Testing showed that users sometimes understood the words in a rewrite but missed the social meaning of unfamiliar expressions. Native-language interpretations clarified the intended nuance, and the Swap action inserted the selected rewrite directly into the message field.

Translate each rewrite and simply swap it

Back in 2024, the existing caselaw search systems were all filter-based, where people select conditions they barely know, then get flooded with a vast amount of results. It was too hard for the m

Research Insights

In a second language, emotional expression narrowed in two ways...

To understand what makes their writing feel less close and how this narrowing specifically appeared in everyday messages, we asked 5 people who learned English later in life to respond to the same close-friend messages in English and in their native language.

Pattern 1 - Relied on narrower set of familiar phrases

When writing in English, participants relied on familiar, low-risk phrases even with close friends. In their native languages, they drew on a broader range of expression like bringing in situational details, shared context, and more personal ways of showing care.

Pattern 2 - More frequent use of emojis to convey emotional intensity

When people struggled to find words that matched their feelings in English, they used emojis to add emotional intensity to short messages. In their native languages, the same feelings tend to come through with fuller sentences and more specific expressions.

Approach

Giving the AI and the user distinct roles in making messages feel closer

Looking across both patterns, we saw two different limits on expression and thought AI would broaden the language beyond the phrases users already knew, while users would choose the emotion they wanted to express more fully. This gave us two clear directions for designing the rewriting system.

Broader linguistic range

Deeper emotional expression

AI’s role

User’s role

Design Decision

1. Broader linguistic range: How should the AI broaden linguistic range, while keeping the message personal?

I defined what the AI should reveal, preserve, and suppress in each rewrite.

I treated linguistic range as more than using richer vocabulary. Each rewrite needed to surface the thoughts and feelings already implied in the draft while staying grounded in the sender’s meaning, texting style, and relationship context. I also identified patterns that made close-friend messages feel generic or overly polished and excluded them from generation.

Reveal

underlying thoughts

implied feelings

emotional intent

Preserve

original meaning

texting style

sentence context

message length

Suppress

assistant-like explanations

generic reassurance

over-polished phrasing

forced humor

2. Deeper emotional expression: How should users direct the emotion in each rewrite?

I used emojis as a familiar parameter for emotional nuance.

Participants already used emojis to carry emotional intensity their English wording left implicit. I built on this familiar messaging behavior, allowing users to select the emotion they wanted the AI to bring forward and express more fully in each rewrite.

I narrowed the parameter to seven familiar emotions.

I selected seven commonly used emojis that covered a broad range of emotions while keeping the choice lightweight during texting.

😮

surprise

😂

laughing

😆

excited

😍

loving

😭

crying

😅

awkward

🥺

pleading

Then I defined how each emotion should affect the rewrite.

...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.

😭

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"

Behavioral prompt specification (e.g. Crying)

SYSTEM ARCHITECTURE

I combined the message, selected emotion, and AI behavior in one rewriting flow

The original message grounded the rewrite in the sender’s meaning and conversational context. The selected emoji indicated which emotion to express more fully. Gemini then applied the reveal, preserve, and suppress rules to generate three alternatives that varied in phrasing while remaining connected to the original message.

ex. I didn’t know that

Original message

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

VALIDATION & ITERATION

Could users recognize the intended nuance in each rewrite?

The rewrites scored 4.1/5 across 24 live tests and we noticed two points of confusion.

Across 24 live testing sessions, participants wrote their own messages, selected an emotion, and reviewed the generated rewrites in real time. They rated how closely each output matched the nuance they intended. The average score showed that the system generally conveyed the selected emotion, while their feedback revealed two recurring points of confusion around interpreting the emoji and understanding unfamiliar English expressions.

Live testing at the Brown School of Engineering

Messages, selected emotions, and ratings collected across 24 tests

Finding 1

The same emoji meant different things to different users.

Participants sometimes selected an emoji based on a personal interpretation that differed from the meaning assigned within the system. This created a mismatch between the emotion users expected and the direction the AI applied during generation.

So I paired each emoji with an explicit emotion label.

Labels such as Crying, Loving, and Laughing made the system’s interpretation visible before generation, helping users choose an emotional direction with clearer expectations.

Finding 2

Unfamiliar expressions made the intended nuance difficult to judge.

Some generated rewrites included casual phrases that participants had not encountered before. They could read the English but were unsure how the expression would come across in a close-friend conversation, making it difficult to confidently apply the rewrite.

I added a native-language preview before users applied a rewrite.

Users could view each result in their native language to understand its meaning and emotional nuance, then return to English when they were ready to use it. I removed the swap action from the translated view so evaluation and application happened as separate steps.

NEXT STEP

The next step is making closeness more personal.

Our system generated expressive rewrites for close-friend conversations, but people express closeness differently depending on who they are speaking with and how they naturally text. Future iterations could adapt the same behavioral framework to each relationship and individual communication style.

1. Adapt expression to each relationship

Closeness can mean playful teasing with a best friend, reassurance with a sibling, affection with a partner, or warmth with a coworker. The system could use relationship context to adjust emotional intensity, directness, humor, and familiarity for each recipient.

2. Learn each user’s way of texting

The system could learn from the rewrites users select, edit, and send to better reflect their preferred vocabulary, sentence length, humor, and emotional style over time.

TAKEAWAY

Designing emotional AI required a shared language between the user and the system

The quality of a rewrite depended on more than expressive output. Users needed to understand how the AI interpreted their emotion and confidently judge how each suggestion would come across. Making that interpretation visible became central to the experience.