How fata handles your data
This describes the v3 architecture in plain language, including processors.
The short version
Your text and email are sent over HTTPS to a Cloudflare Worker. fata is not end-to-end encrypted: the server briefly processes plaintext text and email to create an embedding, match, write a resonance note, and send notifications.
Sensitive fields are encrypted with AES-256-GCM before storage. GitHub Issues contain only minimal metadata. After a successful match notification, both parties’ sensitive KV data is deleted; unmatched data expires after 30 days.
What happens during processing
- Your text: the browser shows low-signal and safety guidance, then sends the text over HTTPS to the Worker.
- SiliconFlow: the Worker sends your text to SiliconFlow’s BGE-M3 model to create an embedding. After a match, up to 500 characters from each person are sent to a SiliconFlow chat model to create one resonance paragraph.
- Cloudflare KV: stores the AES-GCM encrypted email, embedding and optional 300-character snippet, plus an email hash. TTL is 30 days.
- GitHub Issues: stores minimal metadata such as language, embedding model/dimension, awake reason, timezone and match state—not your text or email.
- After a match: the Worker decrypts both email addresses, sends notifications through Resend, and shows you the other person’s email address. Both sensitive KV entries are then deleted.
What fata does and does not know
The Worker processes your text and email during submission, matching and notification. That is the shortest path required for the product. fata has no chat database: your later emails go directly between your mail providers and are not stored by fata.
Where data lives
| Location | Content |
|---|---|
| Cloudflare KV | Encrypted email, embedding, optional encrypted snippet, email hash, and rate-limit/ownership/verification records; up to 30 days. |
| GitHub | Matching state and minimal metadata; no text or email. |
| Your browser | Language, email, drafts and history in localStorage, sessionStorage or IndexedDB. Clear site data to remove them. |
| Cloudflare logs | IP, request time, errors and rate-limit data; sampled observability for service stability. |
Funnel events
To understand cold start and drop-off, the page sends anonymous events to the Worker (page view, typing, submit, match success/failure), including language and your selected awake reason. Events do not include your text, email or email hash.
Retention and deletion
Sensitive KV data for an unmatched submission is retained for at most 30 days. After a successful match notification, both sensitive KV entries are deleted; closed Issues and Match Issue metadata remain on GitHub for troubleshooting. If an unmatched entry is still in your browser history, use Withdraw to remove it.
You can also open an issue at github.com/gsailing19/fata/issues with the issue number to request deletion of remaining metadata.
Unsubscribe
Match notification emails include an unsubscribe link. We store only an email hash—not the email address—and stop future match notifications.
Security and boundaries
Transport uses HTTPS; stored sensitive fields use AES-256-GCM with a server-held key; GitHub metadata is minimized; conversations are not stored. Front-end and architecture documents are public, while the production Worker is deployed from a private operations copy and secrets are not stored in the public repository.