Tap the mic, say what you want, and your words appear in any app, already typed.
WhisperBoard Website · Get it on Google Play
Inspiration

Phones can do so much now, especially if you work with AI agents all day. But the more I used mine, the more typing long text on a screen keyboard hurt. You can't feel the keys, it's slow, and it's tiring. A physical keyboard fixed that but cost me what makes a phone a phone: it's portable, simple and always with me.
Voice is the obvious answer, but the built-in voice input never worked for me. I'm Indonesian, and my mother tongue isn't English. Most keyboards lock voice recognition to a single language, so switching between Bahasa Indonesia and English means changing a setting first, and the result still isn't accurate.
Meanwhile, many AI apps use Whisper for voice input, and it works great. The catch is that it only works inside those apps.
$$ \text{keyboard} \;+\; \text{Whisper} \;=\; \text{voice input that works in every app} $$
What if the Whisper-powered voice input was the keyboard?
What it does
WhisperBoard is a voice-first Android keyboard. Tap the mic, speak, and the transcribed text is typed into whatever app you're in.

- Whisper speech recognition in around 100 languages, with no per-language setting to switch
- Translate while you dictate: speak one language, send another
- Modes that give the model context for your jargon, names and spellings
- Bring your own key (OpenAI or any Whisper-compatible server), or use the managed WhisperBoard service with free minutes, subscription plans and credit packs
- Transcription history, a full typing keyboard for when you do need to type, and light, dark and system themes

Real screenshots from the app.
How we built it
- Native Android in Kotlin: an
InputMethodServicekeyboard with idle, recording and transcribing states, and a Material 3 design system created in Google Stitch - Whisper for recognition, either through the user's own provider or a managed service I run, so people who don't want to bring an API key can just subscribe
- Subscriptions and credit packs with RevenueCat
- Spec-driven workflow: every major feature was written as a spec, a plan and a task list before coding
- Release hardening with Firebase Crashlytics and R8
Challenges we ran into
- Testing purchases with license testers. Google Play license-tester purchases are treated as sandbox purchases by RevenueCat, so they never exercised the same path as a real customer. They couldn't prove the whole billing flow worked.
- Proving the real flow. To close that gap, I made a real purchase, confirmed it was fulfilled, then refunded it to check that access was revoked too. Subscriptions and one-time credit packs also behave differently, so each needed its own check.
- Polish in a tiny space. Fitting a full typing layout beside a voice-first interface took many small iterations.
Accomplishments that we're proud of
- I use WhisperBoard every day, which is the honest test of whether it solves the problem.
- The full purchase flow is verified end to end with a real purchase and a refund.
- A complete product, not just a demo: onboarding, history, modes, a full keyboard, bring-your-own-key and managed options, subscriptions and credit packs.
- Plans priced from a real cost model, so they are sustainable.
- It speaks my language, literally. I can dictate in Bahasa Indonesia or English without touching a setting.
What we learned
- A keyboard is a very different product from an app. It has to appear instantly, behave inside every host app and never get in the way.
- Pricing an AI product means modeling cost per minute of audio before choosing quotas, not after.
- Writing specs before code kept a large feature set coherent, even as a solo builder.
What's next for WhisperBoard: Voice-First Keyboard for Android
WhisperBoard started as a fix for my own problem, but I'm sure I'm not the only one who speaks more than one language or would rather type with their voice than their thumbs. Next up:
- Autocorrect and word prediction for the full keyboard
- Swipe typing
- More modes and templates
- Refining plans based on real usage
I hope it helps anyone with the same frustration, well beyond this hackathon.

Log in or sign up for Devpost to join the conversation.