Skip to content

Latest commit

 

History

History
152 lines (110 loc) · 6.13 KB

File metadata and controls

152 lines (110 loc) · 6.13 KB

PAUSE — the psychology of communication

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.

PAUSE — a full session


What is actually measured (read this first)

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.


The ten modules

🤫 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.

The psychology

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.

SQ — the Silence Quotient

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.

The daily five minutes

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.

Levels

1 Awareness → 2 Control (600 XP) → 3 Influence (1800) → 4 Mastery (4000).


Deep coach (optional, online, off by default)

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.


Build

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.apk

build-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.

Files

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

Graceful degradation

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.