Does Catraca send email?
No. Your platform keeps sending through its own provider or MTA. Catraca decides whether a send should go out, and learns from the bounces, complaints and account activity your platform reports.
What if Catraca is down?
Send anyway. A broken anti-abuse service must not stop every good sender, so the TypeScript client fails open after a timeout you choose (250 ms in the examples), and logs that it did, so the outage is visible.
Does it store my customers’ email?
Not by default. The audit log keeps the account, key and IP, the sender domain, the number of recipients and their domains, and a hash of the subject: no addresses, no subject text, no body. A full mode keeps the whole event when your privacy policy allows it.
Can I use it with my email provider?
Any platform that can make an HTTP call before it sends can ask Catraca. Delivery feedback has adapters for Amazon SES and useSend; any other provider can post feedback to /v1/feedback, signed with a shared secret.
Why CEL for rules?
CEL expressions are typed, safe to evaluate and cannot loop forever, and the ones that iterate have a cost limit. Catraca compiles every rule when the ruleset loads, so a syntax error, a type error or an unknown list fails the load instead of a send, and lint flags signals that do not exist.
How do I tune the thresholds?
Replay labeled events with catraca replay to see each rule’s precision and recall, then watch the rule in shadow mode on real traffic. The starter ruleset’s numbers are a starting point, explained in each rule’s description.
Is it ready for production?
Catraca is in early development. Everything described here works and is tested, in CI too, against real Redis and Postgres. The API and the configuration may still change before a first release.
What does the name mean?
Catraca is Portuguese for turnstile: it lets people through one at a time and stops the ones who should not pass. The word also names a ratchet, the wheel that only turns one way, a notch at a time.