directorytree/privacy-filter
Laravel wrapper around the privacy-filter.cpp binary that installs the compiled executable and GGUF model, then detects private entities in text through a small PHP API.
score and accepts a runtime threshold (default 0.5). That means a PM can make an explicit call — "for transcripts shown to agents, bias to over-redaction; for analytics export, bias to under-redaction" — and it is one config value, not a model retrain. Get that policy written down before engineering starts tuning.f16 build, per the README). That flips the cost question from "cost per document" to "do we have a box with enough RAM" — usually a much easier approval.Redactor interface keeps the option to swap in Presidio or a hosted DLP later as a one-class rewrite. That makes this a genuinely low-regret bet rather than a lock-in.Adopt when most of these are true:
v1.0.0 → v1.1.0), and a versioned binary/model download from GitHub releases and Hugging Face as a deploy step. You need a deploy story that pins PRIVACY_FILTER_BINARY_VERSION, vendors or mirrors the artifacts, and does not depend on GitHub or Hugging Face being reachable during a release.Look elsewhere when:
EntityType enum is a fixed vocabulary and unknown types return null. Validate against your actual data before committing; the model is English-centric by provenance.For executives: This is a free, self-hosted PII detector that keeps customer text inside our infrastructure. It installs in about ten minutes and replaces a per-request API bill with a fixed amount of server memory. The trade is that it is an early-stage open-source package from a single maintainer, so we should time-box a two-week spike against our own data — measure the catch rate and the false-positive rate on real transcripts and logs — before it touches anything customer-facing. Worst case we spend two weeks and learn what our PII actually looks like.
For engineering: Treat the install as a deploy concern, not a local convenience. privacy-filter:install pulls an OS-matched binary and a multi-gigabyte GGUF model into storage/app/privacy-filter/; pin the release version, mirror the artifacts, and skip the installer on every boot. Put classification on a dedicated queue with a hard worker count sized to available RAM. Wrap the facade behind an app-owned Redactor interface on day one, redact by byte offset in reverse order rather than the README's str_replace demo, and use PrivacyFilter::fake() from the first test. First deliverable is a log-scrubbing service — no latency budget, highest regulatory exposure removed per engineering hour.
How can I help you explore Laravel packages today?