Skip to content
← The Workbook

No. 21 · 2026Built

Curse-Collar

Always-on curse-word detector that vibrates a Bousnic dog collar over 433 MHz from a Jetson Orin Nano. The safe-mode, shipped version of Red Phone v.2, vibrate only, shock opcode intentionally omitted from the high-level API. Working on the desk; proving the loop before the upgrade.


Status
Built
Year
2026
Stack
AI · Hardware · Jetson · RF · Behavior
Proof
Buzzing on the desk

The Concept

A microphone in the room, an LLM on the Jetson, a 433 MHz transmitter wired to a Bousnic dog collar. Say a curse word, get a vibrate.

The version that exists today is the safe one. Vibrate only. The shock opcode the receiver supports is intentionally omitted from the high-level Python API. The collar doesn't go on a human; it sits on the desk as the proof that the loop works end to end.

This is the sibling of Red Phone v.2, same hardware family, same closed-loop instinct, but built first because vibrate-only made it the responsible thing to ship before any of the harder questions about wearable negative feedback are real.

The Stack

  • Mic: Logitech C920 USB.
  • Brain: Jetson Orin Nano Super, JetPack 6, Python 3.10.
  • Transmitter: MX-FS-03V 433 MHz OOK module on GPIO 17, with a 17 cm quarter-wave antenna wire because the module is weak and needs every dB it can find.
  • Receiver: Bousnic collar (PET998D-compatible, FCC ID 2AYAF-RS2).
  • Pairing: the 3-bit device code is set at the factory when remote and collar are paired. There are only eight possibilities, so the pairing script brute-forces them and watches for the vibrate pulse that identifies the unit.

What It Actually Does

Captures audio continuously, runs voice activity detection, transcribes through a local STT model, scans the transcript for the curse-word list, and on a hit, fires the vibrate opcode over the air to the paired collar. End to end in well under a second.

The "curse-word" list is one config file. Could just as easily be filler words, hedging language, "synergy", or any other speech pattern someone wants to train themselves out of.

What's Not There (On Purpose)

The shock opcode. The collar's receiver supports it. The Python API doesn't expose it. The README has a note telling anyone forking the project not to bypass the omission. Designing the guardrail into the code itself, not just the documentation.

Status

Built. Sits on the desk. Used as the test-bed for the broader question that Red Phone v.2 is trying to answer: does closed-loop physical feedback actually change behavior on the kind of timescales worth caring about? The vibrate version is enough to start collecting answers.

Pairs with Red Phone v.2 (the wrist-mounted next step) and The Red Phone (the larger bounded-AI household it lives inside).