kvsoftware

KataMata

Word collecting for expats learning the language of where they live

An iOS app for expats who need the everyday language of the country they're living in. Collect a word and KataMata translates it, explains it, and shows how it's used, generated with Apple's Foundation Models.

Living abroad means running a life in a language you don't speak yet: the landlord, the market, the clinic. A dictionary gives you a word, but not when to use it. KataMata is for expats picking up the everyday language of the country they live in, one useful word at a time.

What it does

Collect words

Save the words you run into in daily life, building a collection that's yours.

Translate and explain

Each word comes with a translation and a plain explanation of what it means.

See it in use

An example of how the word is used, so it's ready for the next real conversation.

How it's built

A SwiftUI app. The explanations and examples are generated with Apple's Foundation Models framework, so the language help comes from the model built into the device.

  1. A word

    Collected from daily life.

  2. Prompt

    Written for this one use: an expat learning everyday words.

  3. Structured output

    Translation, explanation, and example as fields, not free text.

  4. Check or fall back

    If the result doesn't fit, a fallback instead of a bad card.

From a collected word to a card, on the device.

My role

I was the iOS applied AI engineer on a team of six, at the Apple Developer Academy from May to June 2026. I built the AI side: the prompts, the structured output the app reads, and the fallbacks for when the model's answer doesn't fit. All of it had one job: make sure what the model gives back matches what an expat actually needs.

Three iPhones: a collection of words captured from photos, and two opened words, pengunjung and gratis, each with a translation, definition, and spoken examples
The collection, and two words opened: the translation, a definition, and examples you can listen to.

What surprised me

The model on the device has real limits, and it isn't instant. Both shaped the design more than I expected: the prompts had to stay focused, and the app had to handle the wait and the misses gracefully instead of assuming every answer would be fast and right.

Back to the work