Talk to the Team

Tell us about your stack and the privacy problems you're trying to solve. We typically respond within one business day.

Prefer email? support@philterd.ai

Prefer to skip the form? Pick a time on our calendar →
or send a message

Please do not enter PII or PHI in this form. If you need to share an example, use a sanitized one.

PII drift and trend monitoring

Phield

Phield receives PII type counts via an API or Kafka topic and alerts when a count deviates significantly from the established trend. Get notified through PagerDuty or Slack when there is a sudden spike in credit card numbers or an unexpected drop in redacted names.

View on GitHub

Why Phield

Drift and trend detection

Phield builds a baseline from the PII type counts it receives and flags when a new sample deviates significantly from the established trend. A sudden spike in credit card numbers or an unexpected drop in redacted names gets caught automatically.

Flexible ingestion

Send PII type counts to Phield over its HTTP API or publish them to a Kafka topic. Either way, the payload shape is the same: a timestamped map of entity types to counts, tagged with a source and context.

MongoDB time-series or in-memory

Phield stores samples in a MongoDB time-series collection for durable, queryable history. When MongoDB is not available, it falls back to in-memory storage so you can still run it without external dependencies.

PagerDuty and Slack alerts

When a count deviates from the trend, Phield sends alerts to PagerDuty, Slack, or both. Your on-call team gets paged with the entity type, the observed count, the baseline, and the deviation.

Per-source, per-entity tracking

Counts are tracked per source, per context, and per entity type. You can monitor multiple pipelines independently and see exactly which entity type drifted in which system.

Self-hosted

Runs entirely inside your perimeter. No SaaS dashboard, no external data shipping. Your PII telemetry stays where you put it.

Sending PII counts to Phield

Phield receives PII type counts over HTTP or from a Kafka topic, stores them in a MongoDB time-series collection (or in memory), and runs the configured baseline detector against each new sample. Send the same payload shape either way.

Counts can be reported before or after redaction. The same Phield instance can compare both vantages of the same pipeline.

curl -X POST http://localhost:8080/ingest \
  -H "Content-Type: application/json" \
  -d '{
    "timestamp":    "2026-05-23T18:00:00Z",
    "source_id":    "patient-records-api",
    "organization": "acme-health",
    "context":      "production",
    "pii_types": {
      "credit-card": 25,
      "email":       110,
      "ssn":         4,
      "name":        60
    }
  }'

Install: pip install requests

import requests
from datetime import datetime, timezone

requests.post(
    "http://localhost:8080/ingest",
    json={
        "timestamp":    datetime.now(timezone.utc).isoformat(),
        "source_id":    "patient-records-api",
        "organization": "acme-health",
        "context":      "production",
        "pii_types": {
            "credit-card": 25,
            "email":       110,
            "ssn":         4,
            "name":        60,
        },
    },
)
package main

import (
    "bytes"
    "encoding/json"
    "net/http"
    "time"
)

func main() {
    payload, _ := json.Marshal(map[string]interface{}{
        "timestamp":    time.Now().UTC().Format(time.RFC3339),
        "source_id":    "patient-records-api",
        "organization": "acme-health",
        "context":      "production",
        "pii_types": map[string]int{
            "credit-card": 25,
            "email":       110,
            "ssn":         4,
            "name":        60,
        },
    })
    http.Post("http://localhost:8080/ingest", "application/json", bytes.NewReader(payload))
}

Frequently asked questions

If something here isn’t covered, get in touch and we’ll answer.

What is Phield?
Phield is a PII drift and trend monitor. It receives counts of PII entity types over time, stores them as a time series, builds a baseline, and alerts when a new count deviates significantly from the established trend. A sudden spike in credit card numbers or an unexpected drop in redacted names gets caught automatically.
What data does Phield need? Does it see the actual PII?
No. Phield only ingests counts: a timestamped map of entity types to numbers, tagged with a source and context. It never receives the underlying documents or the sensitive values themselves. You get monitoring and alerting on your redaction pipeline without centralizing any of the PII the pipeline is meant to protect.
How does Phield decide that a count is anomalous?
Phield builds a baseline from the history of counts it has received for each source, context, and entity type, then compares every new sample against that established trend. When a sample deviates beyond the configured sensitivity, Phield raises an alert with the entity type, the observed count, the baseline, and the deviation.
How do I get counts into Phield?
Two ways, with the same payload shape: POST them to Phield's HTTP API, or publish them to a Kafka topic. Counts can be reported before or after redaction, and the same Phield instance can compare both vantages of the same pipeline.
Where does Phield store data, and how does it alert?
Phield stores samples in a MongoDB time-series collection for durable, queryable history, and falls back to in-memory storage when MongoDB isn't available so you can run it with no external dependencies. When a count deviates from the trend, it sends alerts to PagerDuty, Slack, or both.
Is Phield open source?
Yes. Phield is open source under the permissive Apache License, version 2, and the code is on GitHub. It is self-hosted: it runs entirely inside your perimeter with no SaaS dashboard and no external data shipping.

Ready to use Phield?

Three ways to get going: deploy the open source yourself, spin it up from a cloud marketplace, or work with our team directly. Pick the path that fits.

See your options