How does baba know you finished typing?
This is the interesting part. A pause is not the same as a finished message. People stop mid-sentence to think, to switch apps, or to find a word. Starting a translation every time someone hesitates would waste a lot of work and still leave them waiting.
We use TypeSafe Jev for this. It answers one question about your text and returns a probability rather than a guess: is this message finished, or is the person still writing it? Below a threshold, baba waits.
The simple rules we tried first were not good enough. Punctuation does not settle it, because "I'll be there in ten minutes" usually has none. Length does not settle it either, because a single word is often a finished lookup. On a test set of complete and half-typed messages, the model got 40 of 42 right, and both misses were complete sentences it judged unfinished, which only costs a head start.
The check runs while you are still on the screen, so it never delays anything you see.
Who are you speaking to? We stopped asking so often
Hebrew changes with the person you are speaking to. "Are you coming?" is different for a man, a woman, or a group. baba has always let you pick, and after every English to Hebrew translation it asked whether you were speaking to someone specific.
The trouble is that most translations don't change at all with the listener. "Where is the train station?" is the same sentence no matter who you ask.
So we tested it. We took 150 real translations, had them labelled independently, and checked how often the Hebrew actually depends on the listener. The answer was about a third. The prompt was appearing on all of them.
Now baba asks the same model whether the wording depends on the listener, and only shows the question when it does. On our test set it agrees with the human labels about 95% of the time, and the audience control is always there if you want to change it yourself.
What we measured
These are server-side numbers, measured on our production system:
|
Before |
After |
| First word of a translation |
about 1.5 seconds |
about 0.3 seconds when it was started early |
| Whole translation finished |
about 2 seconds |
under half a second when it was started early |
| "Speaking to someone specific?" |
after every Hebrew translation |
on about a third of them |
A translation you tap without any warning still takes as long as the model needs. What changed is that most translations no longer start from zero.
What we threw away
The first thing we built with this was a badge that labelled the writing style of your text: casual, work, formal, marketing, and so on. It worked. On 260 real texts it was accurate about 91% of the time, and far better than the pattern matching we had before.
We deleted it.
Before shipping we tested whether telling the translator about the style made the Hebrew better. It did not. In a blind test of hundreds of translations, the existing prompt matched the right tone every time, and the style-guided version was slightly worse, with a few translations coming out stiffer than they should. The model was already reading the tone from your text, so the label added nothing.
We also tested two other ideas and left them out: offering reply drafts only for real messages, and flagging slang. Both were accurate enough to be tempting and not useful enough to earn a place on the screen.
A feature that measures well and changes nothing is still clutter. The one check that survived is the one that decides something: whether to start translating before you tap.
When can you use it?
The faster translations are live on Android now, and the iOS update is with Apple for review. You don't have to turn anything on. Paste something, or type a message and pause for a moment, and the translation should be waiting when you tap.