Source code
Security & compliance
Code quality
Stability
GDPR & privacy
Where personal data lives, and where it leaks.
Overview
Builds a picture of the personal data in your system from column names, types, and code paths — never by reading customer records. Findings record the shape of the problem and its location, never a value.
What it looks for
- PII columns discovered across the schema, inventoried by type
- Special-category and financial PII stored without protection
- Plaintext credentials and unhashed sensitive columns
- PII written into logs and error reports
- PII tables with no retention or right-to-erasure path
- Missing consent capture, and PII flowing to third-party processors
Why it matters
Most privacy exposure is accidental: an email address in an error report, a full user object in a log line, a table that has never had a deletion path written for it. Under GDPR, "we cannot delete it" is the finding regulators care about.
Rules in this check
| What it reports | Fix path |
|---|---|
| PII columns discovered (inventory) | Guide |
| Special-category / financial PII unprotected | Guide |
| Plaintext credential / unhashed sensitive column | Guide |
| User object logged — may write PII to logs | Pull request |
| No retention / erasure path on PII table | Guide |
| Missing consent capture | Guide |
| PII flows to third-party processor (verify DPA) | Guide |
How the fixes arrive
Pull requestLow-risk changes arrive as a pull request on a lumioguard branch, with a breakage analysis attached. You review and merge it.
GuideChanges only you can make safely arrive as a step-by-step guide you can follow yourself or hand to your coding agent.
Run them all on your app
Connect your repo and your live services with read-only scopes. The first scan is free, and nothing changes without your approval.