// the take
A demo project showing two different approaches to detecting profanity: a small TensorFlow.js text-classification model served from a Bun/Node API, and a Cloudflare Vectorize-based semantic matcher that catches rephrased or evasive swearing via embeddings. A Next.js frontend ties both together into a live typing demo. It's built as a tutorial/reference implementation, not a library or service you drop into production.
The vector-api is the actually interesting part — using embeddings instead of a keyword blocklist means it catches leetspeak and paraphrased profanity that regex-based filters miss, and it's a clean small example of Vectorize usage in a real Worker. Two working end-to-end pipelines (model-based and embedding-based) side by side is a genuinely useful comparison for anyone deciding which approach fits their case. The frontend demo makes the tradeoff tangible instead of just describing it in a README.
model.json/weights.bin are committed straight into the repo instead of being fetched or hosted separately, which bloats clone size and is exactly the kind of binary-in-git churn that gets painful over time. There's no test suite, no CI, and no versioned package for either API — you'd have to copy-paste and adapt the code rather than install anything. tensor-api mixes yarn.lock and pnpm-lock.yaml in the same folder, a sign this was never meant to be dependency-managed cleanly. No commits since August 2024 and the structure (demo screenshots, YoutubePlayer component) makes clear this shipped alongside a tutorial video rather than as a maintained tool, so don't expect fixes or model updates.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →