An Android app that trains one sequence:
Think → Pause → Listen → Understand → Respond instead of React → Speak → Defend → Regret
The idea it is built around: your most powerful response may be silence — and silence is a trainable skill, not a personality trait.
Offline, no account, no server, no tracking. Everything below runs on the phone.
The app is honest about the difference between measurement and content.
Delivery is really measured. While a scenario runs, the microphone feeds a
Web Audio analyser at 40 Hz. From that loudness trace, mic.js computes:
| Measured | How |
|---|---|
| Pause before answering | first speech onset after the other side stops, with hysteresis so a cough is not a sentence |
| How long you spoke | end of the last speech run minus the onset |
| Interruptions | speech runs that begin before the other side finished |
| Pauses inside your answer | internal gaps ≥ 400 ms between your own speech runs |
| Voice steadiness | coefficient of variation of loudness across your speech frames |
The noise floor is calibrated from the first 400 ms of room tone, so the threshold adapts to a quiet bedroom or a noisy café. No audio is recorded, stored or transmitted — only a rolling list of loudness numbers exists in memory, and it is discarded after scoring.
Content is not transcribed. There is no speech recognition (Android's
WebView has none) and no language model in the offline app. After you answer out
loud, you pick which of four answers is closest to what you said. Each answer
carries tags (labeling, defensive, boundary, silence, …) that map to the
eight profile dimensions in score.js. That self-classification step is
deliberate: it makes you name your own move, which is most of the Adlerian work.
The "AI" is a deterministic engine, not a model. Scoring, feedback and the
profile come from stated rules you can read in score.js. One optional feature
is genuinely online — see Deep coach below — and it is off by default.
🤫 Power of Silence · 👂 Active Listening · 🧠 Adler Psychology · ❤️ Emotional Intelligence · 🗣️ Communication Skills · ⚔️ Conflict · 💼 Leadership · 🤝 Relationships · 💰 Negotiation · 🎭 Social Situations
30 lessons, each with an Adler note and a drill. 20 scenarios, each with four answers, a reason for every answer, and the principle behind the situation.
Alfred Adler's individual psychology is the spine: behaviour serves a purpose, the safeguarding tendencies (excuse, aggression, distance) protect self-worth at the cost of the relationship, belonging and contribution drive most difficult conversations, encouragement is not praise, and spitting in the soup names a hidden purpose so it stops paying.
Alongside it: Rogers' active listening, Rosenberg's non-violent communication, Gottman's four horsemen, Voss's labelling / mirroring / calibrated questions, Ury's "go to the balcony".
This is communication training. It is not therapy and not medical advice.
A single number, 0–100, that only measures the use of silence. It is a weighted blend of five things the app can actually observe:
| Component | Weight |
|---|---|
| Pause before answering, across recent attempts | 0.30 |
| Restraint in length (talk time vs the scenario's useful range) | 0.18 |
| Not interrupting | 0.17 |
| Longest clean, mic-verified hold in the pause trainer | 0.18 |
| Share of chosen answers that were questions/labels rather than lectures | 0.17 |
Bands: <40 talks too quickly · 40–60 developing awareness · 61–75 good control · 76–90 excellent strategic communication · 91+ master of the pause.
Day N of a 28-day programme (then it wraps): read the principle → hold a mic-verified silence for N seconds → answer a scenario → review → answer it again. The day's score is 25 % hold + 75 % your best attempt, with a streak and a delta against yesterday.
1 Awareness → 2 Control (600 XP) → 3 Influence (1800) → 4 Mastery (4000).
Everything above is offline and keyless. If you want written feedback on an
answer you typed yourself, More → Deep coach accepts your own Anthropic API
key. One request then sends the situation, your typed answer and the device
measurements to Anthropic (claude-opus-5), and you pay for that call. The key
is stored only in this device's localStorage and is deleted when you disable
the feature or reset the app. Turning it on is the only thing in PAUSE that
leaves the phone.
npm install
npm test # 1800+ checks: translations, dangling ids, scoring curves
npm run serve # http://localhost:4210 (add ?nosw=1 while developing)
npm run apk # -> PAUSE-debug.apkbuild-apk.ps1 stamps the service-worker cache name with the version from
package.json, runs the self-test, and refuses to build if it fails.
Android needs RECORD_AUDIO and MODIFY_AUDIO_SETTINGS in the manifest —
Capacitor's WebChromeClient requests both together, and an undeclared
MODIFY_AUDIO_SETTINGS makes the whole permission request come back denied.
www/i18n.js UI strings, en + mk
www/content.js modules, lessons, 20 scenarios, 28-day curriculum
www/store.js localStorage state, streak, XP, profile
www/mic.js microphone engine: VAD, pause/talk/interrupt measurement
www/score.js scoring rules, SQ, profile deltas
www/coach.js the optional Anthropic call
www/app.js views, router, hold drill, scenario runner
tools/selftest.js the test suite
No microphone, permission denied, or a WebView that never answers the prompt (there is an 8-second timeout): the app drops to content-only scoring and says so, the hold drill becomes a timer and stops claiming it verified real silence. Nothing hangs and nothing silently pretends to have measured you.
MIT.
