The Gemma 4 Good Hackathon

The Gemma 4 Good Hackathon · Special Technology Track · Cactus prize

KawanIsyarat

Built by Pradana Yahya

An Android communication prototype with on-device Gemma, a Whisper fallback, and BISINDO classifiers. The shipped word model has eight labels, despite a sixteen-class claim; we did not install the APK.

I also participated in this hackathon with Memory Moment. This coverage was prepared independently after results were announced.

The idea worth stealing

Load the fallback model, use it once, unload it.

The builder describes a Pixel 6a memory budget for one model at a time. KawanIsyarat sends raw PCM straight to Gemma 4 for transcription, and only if that comes back empty or throws an exception does it pull Whisper Base into memory, transcribe, and immediately unload it so Gemma can reclaim the RAM for simplification. The same discipline runs through the app: thinking mode off after the builder reported two-minute replies, long recordings decimated before they reach the model, and Gemma’s vision coaching grounded with a reference library of BISINDO hand shapes it does not know on its own.

What we checked

Date checked: .

Public repository at the submission revision, Kaggle writeup, and linked artifacts; code was read, not executed. Deployment checks and limits are described below.

Labels apply to each finding and the evidence described, not to the project as a whole.

Not independently verified means the available evidence was insufficient to confirm a claim. It does not mean the claim is false.

  1. Whisper is loaded only after Gemma gives up

    Verified

    The provider disposes Whisper, strips the WAV header, sends raw PCM to Gemma, and only on an empty result or an exception initializes Whisper, transcribes, and disposes it again before simplification. There is no timeout. Source

  2. Thinking off, 256 KB guard on

    Verified

    cactus_wrapper sets enable_thinking_if_supported to false; recordings over 256 KB of PCM, about eight seconds, are decimated up to twice before the audio encoder sees them. Source

  3. The shipped sign model knows eight words

    Inconsistent

    bisindo_wl_labels.json lists air, belajar, hari, maaf, makan, saya, terima_kasih, and tuli. The README and writeup describe a sixteen-class model at 86.2 percent, with different words. Source

    What we need: The submitted APK’s model and labels with its evaluation output, or a corrected eight-class description.

Under the hood

A 512-token context and four threads
Cactus starts with n_ctx 512, an FP16 KV cache, batch size 1, and four of eight threads to leave room for the camera and the Flutter UI; the weights are Cactus’s INT4 Gemma 4 E2B.
The reference library is a Dart map
Fifty hand-shape descriptions, 26 BISINDO and 24 SIBI letters, are constants in gemma_service.dart and injected into every vision prompt so the coach has something to compare against.

Nuance

The APK is a 349 MB release from May 10 that we did not install; the Pixel 6a figures are the builder’s. The word-sign gap may be an older model left in assets, but the app loads the eight-class file. The alphabet classifiers, 26 and 24 classes, match their labels. One widget test exists.