دراسة حالة

Tulk — ترجم في أي مكان حتى دون اتصال

منتج ترجمة يعمل دون اتصال أولًا ويشغّل NLLB-200 بالكامل على هاتفك — أكثر من 200 لغة، صوت، دردشة، ووضع وجهًا لوجه بلا حساب وبلا استدلال سحابي بعد تنزيل النموذج مرة واحدة.

200+
Languages
Offline
Network
~1.3 GB
Model
Tulk — Fully offline translation across 200+ languages

Background

Most translation apps fail the moment the network drops — airports, trains, rural travel, fieldwork. Cloud models also create privacy and latency costs that don’t fit travel or sensitive conversations.

Tulk was built so translation keeps working after a single model download, with every inference staying on the device.

Problem statement

Travellers and teams need translation that:

  • works with no signal after setup
  • covers a wide language set without per-language packs
  • supports chat, voice, and face-to-face conversation modes
  • keeps text and speech private — processed locally

Goals

Product

  • Ship a production offline translator on iOS
  • One unified model covering 200+ languages
  • Make download-once, translate-forever the default story

Experience

  • Clear first-run model download and priming
  • Chat threads as a growing offline phrasebook
  • Face-to-face split view for two people sharing one phone

Trust

  • No accounts, no tracking, no cloud telemetry for inference
  • Legal and support surfaces for App Store compliance

Approach

Model lifecycle

  • NLLB-200 distilled encoder/decoder in ONNX (~1.3 GB total)
  • One-time download, then all languages available offline
  • Speech via on-device engine — no cloud round-trips for inference

Interaction model

  • Quick translate for one-off phrases
  • Named chat threads for ongoing conversations
  • Face-to-face mode with partner half rotated 180°

Delivery model

  • React Native + Expo for a focused iOS release
  • MMKV and local storage for threads and preferences
  • EAS Update path for post-launch iteration

UX and design decisions

Offline-first, not offline-as-fallback

The product story leads with “works without internet,” so first-run download is treated as setup — not a failure state.

One model, not language packs

Users pick any of 200+ languages after priming without managing per-language downloads.

Face-to-face as a first-class mode

Split-screen with inverted partner text makes two-person translation feel natural on one device.

Privacy by architecture

Local inference removes the need for accounts or cloud logs for core translation — trust is structural, not a policy footnote.

Technical implementation

React Native and Expo client with on-device NLLB-200 via ONNX Runtime, speech input/output on-device, local chat persistence, and a free App Store release pipeline.

React Native
Expo
TypeScript
ONNX Runtime
NLLB-200
Whisper
MMKV

Trust and store readiness

  • Hosted Privacy and Support surfaces under /tulk
  • Clear offline and model-size expectations in store listing
  • No account wall for core translation flows
  • App Store–ready screenshots and localisation assets

Key challenges and solutions

Shipping a multi-GB model without killing UX

المشكلة

A ~1.3 GB download can feel broken if progress, retries, and priming aren’t obvious.

الحل

Dedicated first-run download and priming states so users know when the app becomes fully offline-capable.

Keeping inference usable on phone hardware

المشكلة

On-device NMT can stutter if the runtime path isn’t tuned for mobile.

الحل

ONNX Runtime integration with a distilled NLLB-200 pair and pragmatic interaction modes that match device constraints.

Conversation continuity without the cloud

المشكلة

Travellers need more than one-off phrase translation.

الحل

Named local chat threads that grow into an offline phrasebook you can reopen anywhere.

Two-person translation on one screen

المشكلة

Passing a phone back and forth breaks conversational flow.

الحل

Face-to-face mode with the partner’s half rotated so each person reads in their language.

Outcomes

  • Live free on the App Store for iOS
  • 200+ languages from one on-device model
  • Fully offline after the one-time download
  • Chat, voice, and face-to-face modes shipping in production
  • Privacy-preserving architecture — inference stays on device
  • Reusable pattern for offline, on-device AI in other mobile products

Product in the hand

From first launch through chat and face-to-face — how Tulk feels when the network isn’t there.

Tulk — Launch
Launch — Brand-forward entry into an offline-first translator.
Tulk — Quick translate
Quick translate — One-shot translation across 200+ languages on-device.
Tulk — Language pickers
Language pickers — Any supported language after the model is primed — no packs.
Tulk — Chat mode
Chat mode — Threaded conversations that become your offline phrasebook.
Tulk — Face-to-face
Face-to-face — Split view built for two people sharing one phone.
Tulk — Voice
Voice — Speak in, hear translations back — processed locally.

مرّر لاستكشاف المنتج

What's next

  • Broader platform coverage beyond the iOS launch
  • Deeper travel and fieldwork workflows
  • Continued model and runtime performance work
  • Patterns reused for client offline / on-device AI products

تبني ذكاءً اصطناعيًا دون اتصال أو على الجهاز في منتج جوال؟

نساعد الفرق على إطلاق منتجات React Native تعمل النماذج فيها على الجهاز — بنفس الصرامة وراء Tulk.