Tuning the Wordlist
The lexicon scanner is just word matching. It works well for some categories (slurs, drug names, explicit threats) and poorly for others (anything where context matters). You can adjust which categories fire and what words they look for.
Quick toggles
Peak → Settings → Categories
The left pane shows each category with an enable toggle:
- profanity
- sexual
- slurs
- drugs
- alcohol
- violence_threats
- self_harm
- predatory_grooming
- personal_info_sharing
Turn off any category you don't want in your reports. Disabled categories aren't scanned at all — nothing about them appears in the review PDF or CSV. Toggle them back on whenever you want.
The most commonly disabled category is profanity. For most teens, swearing in private messages is not a parenting issue worth tracking. Most parents leave slurs, predatory_grooming, self_harm, and drugs on.
Editing the wordlist itself
Click any category in the Settings → Categories pane to open its wordlist on the right. You can:
- Add a custom word or phrase. Type into the field at the bottom and press Return. Multi-word phrases like
meet me aloneare supported. - Remove a default word. Click the minus icon next to it — the word is marked "removed" and won't fire in future scans. You can restore it any time.
- Remove a custom word. Click the minus icon next to anything tagged "added" to drop it from your custom list.
Each edit is saved immediately. The next scan you run uses the updated lexicon. Use Reset to defaults in the category's header to clear all your customizations for that category.
Custom edits live in your local preferences (UserDefaults) — they survive app upgrades and don't leave the Mac.
False-positive patterns to expect
Some words match too broadly. The most common false positives by category:
- profanity —
assmatches things like "fat ass" (joke), "kicked ass" (compliment), "pass" (no — bounded by word boundary), "class" (no — bounded). It will not match inside other words, but it does match the standalone word in benign contexts. - sexual —
headis deliberately NOT in the list because it has too many benign meanings.sexmatches "Section" — wait, no, also bounded. But it does match "sex education" (a parent might consider that fine). - drugs —
potmatches "pot of soup", "pot luck".loudmatches its everyday English meaning. - alcohol —
shotsmatches "basketball shots".beeris straightforward. - violence_threats —
killmatches "that test was killing me", "you killed it" (compliment).shootmatches "let's shoot some hoops". - slurs — usually accurate. Common edge case: words used by the in-group reclaimingly (e.g.,
n-wordvariants among Black users,dykeamong lesbian users). Peak can't tell context.
You're seeing a queue of candidates. Use the message text shown in the report to dismiss false positives in seconds.
False-negative patterns
Things the wordlist will NOT catch:
- Coded language and slang the list doesn't know. Drug slang in particular evolves fast (e.g. "molly" was novel ten years ago, today "perc" is older, "wock" is newer).
- Emoji-only references. A pill emoji, a syringe emoji, a flame emoji, a snowflake emoji — all common drug references that the text scanner doesn't see.
- Pictures. Peak doesn't OCR images or run any vision model. A photo of a vape isn't flagged. (Future versions may add image classification on-device.)
- Sentiment. A sentence like "she's so easy" carries weight in context but contains no flagged word.
- Misspellings the leetspeak normalizer doesn't cover. We handle basic substitutions (
@→a,3→e,1→i,0→o,$→s,7→t) and repeated-letter elongation (fuuuuck→fuck), but creative spelling escapes.
If your kid is using coded language or images, no purely lexical scanner will catch it. Phase 2 of Peak (on macOS 26+) adds an on-device LLM rating step that reads each lexicon hit in surrounding context and can catch some of these. It runs entirely on your Mac via Apple Foundation Models; no message text ever leaves the machine.
Next: Troubleshooting.