Open-source LGPD toolkit · Apache‑2.0

Ship LGPD compliance in a sprint. Prove it on every deadline.

The developer-first LGPD toolkit for Brazilian SaaS — a consent ledger, deletion-request orchestration, and a tamper-evident, hash-chained audit trail. A control plane that holds zero end-user PII, so your data never leaves your database.

GET /v1/audit/verify/demo — checking live chain…
zelo — GET /v1/audit/verify
{ "ok": true, "entries_checked": 1284 } 200 OK
01The real risk

The fine isn't the scary part. Not being able to prove you complied is.

LGPD gives you hard deadlines on deletion requests and expects a defensible record of every consent and every erasure. Most teams bolt this on with a few database columns and good intentions — exactly what falls apart under an ANPD inquiry or acquisition diligence, because a column can be edited after the fact and nobody can tell. Zelo turns "we think we handled it" into a chain you can recompute and hand over: who consented, what was deleted, and that it happened before the clock ran out. When someone asks "prove it," you run one curl instead of digging through logs.

02Drop-in

A starter, not a six-month project

Add one dependency, set your API key and webhook secret, and consent + deletion-request compliance becomes method calls on an injected ZeloClient. Declare a purpose once at boot. Gate any feature on live consent — and isGranted returns false for a never-seen user, so it never throws. Record a decision with grantConsent; open an erasure with requestDeletion. No DTOs to hand-write, no schema to design. The same thing is a one-line REST call:

zelo — quickstart
# Record a consent decision — one REST call
curl -X POST https://api.zelocompliance.com/v1/consents \
  -H "Authorization: $ZELO_API_KEY" \
  -d '{"external_id":"u_123","purpose_key":"marketing-emails","action":"GRANT","source":"signup-form"}'
03Zero-PII by design

It never touches your users' PII — so it can't be your next breach

Zelo is a control plane, not a data store. It only ever sees an opaque external_id — your own user id — plus consent records, request state, and the audit trail. Names, emails, CPF, dates of birth, health data: all of it stays in your database, where it already lives. Most compliance tools become a second copy of everything sensitive you own — a honeypot waiting to leak. Zelo orchestrates operations on your data via signed webhooks instead, so there's nothing inside it worth stealing. Adopting compliance tooling shouldn't make you a bigger target; by design, it doesn't.

Your database
PII stays here
name email CPF health data
Zelo control plane
Zero end-user PII
external_id consent DSR state hash chain
04Deletion orchestration

Deletion that calls your code, keeps the receipt, and never misses a deadline

Open a request and Zelo computes the legal deadline and fires an HMAC-SHA256-signed webhook to your app. Annotate one method and your own erasure runs:

DeletionHandler.java
@ZeloWebhook("dsr.delete.requested")
public Map<String,Object> erase(ZeloDeletionRequest req) {
    users.deleteByExternalId(req.externalId());  // your DB, your erasure
    return Map.of("deletedRows", 1);             // proof goes back to Zelo
}

The starter verifies the signature and freshness, calls you, and auto-fulfills the request with your return value as the audited proof. Throw from the handler and Zelo treats the erasure as failed and retries with backoff; an OVERDUE sweep flags anything past its deadline as an audited SLA miss — so a missed request surfaces as an alert, not a finding. The whole loop runs end to end out of the box; the demo erases a user and self-fulfills in about a second.

05The moat

A hash-chained audit trail you can prove unbroken

Every compliance event is appended to a per-integrator, hash-chained log. The rule is published and reproducible:

HashChain — entry hash rule
entry_hash = SHA-256(
  prev_hash       // 64 zeros for the genesis entry
  + "\n" + event_type
  + "\n" + canonical_json(payload)
  + "\n" + occurred_at
)

GET /v1/audit/verify recomputes the entire chain and points straight at the first broken link, so tampering with, deleting, or reordering any historical entry is detected — and because the algorithm is pure and published, your proof trail can be independently re-implemented and re-verified. You never have to take our word for the math.

GET /v1/audit/verify → {"ok":false, "first_broken_entry_id":3, "detail":"hash mismatch at entry 3"}

{"ok":true,"entries_checked":N} is the closest thing to unforgeable evidence that your compliance work was real and on time. The v1 code is easy to clone; a multi-year, untampered proof trail is not. In the starter it's one call: zelo.verifyAudit().ok() — a green check for your admin dashboard.

06Open core

Open source you can read, run, and trust

Apache-2.0 and self-hostable from day one: docker compose up brings up the control plane, a demo integrator, and Postgres, and runs the full deletion loop end to end. Built on Java 21, Spring Boot 3, and PostgreSQL.

  • Append-only, explicit JDBC — no ORM. The consent ledger and audit log enforce that discipline at the data layer.
  • Transactional outbox. An event is queued in the same commit as the request it belongs to, then signed and delivered with HMAC-SHA256.
  • Idempotent & rate-limited writes via Idempotency-Key.
  • Ten LGPD Art. 7 legal bases as a typed enum — CONSENT, CONTRACT, LEGAL_OBLIGATION, HEALTH_PROTECTION, LEGITIMATE_INTEREST, and the rest.
  • No vendor lock-in, no PII leaving your perimeter, no sales call to start.

Read every line on GitHub before you trust it with a single request: github.com/thgrcarvalho/zelo.

Apache-2.0 docker compose up Java 21 · Spring Boot 3 PostgreSQL
07Pricing

Free where it should be. Paid when we run it for you.

The code is Apache-2.0 either way — hosting is what you pay for, and only past a real free tier.

Self-host
R$0 forever
  • docker compose up on your infra
  • Everything, no gates, no phone-home
  • Apache-2.0 — read every line first
Clone the repo
Hosted — Free
R$0 / month
  • 500 subjects & 2,000 audit events / month
  • 3 API keys · signed webhooks · verify endpoint
  • We email you at 80% and 100% — writes are only refused past 3× a limit, and erasure is never blocked
Start free
Hosted — Pro
R$79 / month · launch price
  • Unmetered subjects, events, and keys
  • Same API, same proof chain — nothing to migrate
  • Upgrade from the dashboard when the free tier pinches
Get your API key

Prices in BRL, billed monthly via card, cancel anytime. Cancelling drops you to the free tier — your data and audit chain stay intact.

08Get started

Self-host free, or use the managed cloud.

Self-host now under Apache-2.0 — docker compose up and you're running. Or skip the ops: the hosted control plane is live — signed-webhook delivery, deadline monitoring, and the verifiable audit chain, run for you. Sign up, verify your email, and self-issue a key.

Get your API key