Privacy Policy
Last updated: October 2, 2026
Mailing address: 10800 S Lloyd Drive, Worth, IL 60482, USA.
Privacy contact: privacy@jenbuiltit.com
General support: hello@jenbuiltit.com
This policy explains what data we collect when you use Emergency Fund Aquarium (the "Service"), why we collect it, who we share it with, and what choices you have. Throughout this policy, "we," "us," and "our" refer to Jen Built It LLC.
1. What we collect
- Account data. Your email address and a salted PBKDF2 hash of your password (100,000 iterations, 16-byte random salt, SHA-256). We never store your password in plain text and never see it again after you set it.
- Savings data. The goals you create (name, target amount, date), the deposits you record (amount, date, optional note), the aquarium theme you choose for each goal, and the milestones and fish-dex creatures you collect. All of this is visible only to you when you're logged in.
- Account preferences. Your selected currency.
- Security data. A bounded record of failed login attempts and rate-limit counters, keyed by a one-way hash of your IP address or by your email, used solely to throttle abuse. Reset and email-verification tokens are stored as SHA-256 hashes so a database snapshot leak cannot directly compromise pending resets.
- Security log. When someone logs in, fails to log in, changes or resets a password, or deletes an account, we write one line to our server log with the event type, your user ID or a one-way hash of your email, and a one-way hash of the IP address. It never holds your password, your login token, your raw email or your raw IP address.
- Cross-app Pro status. If you upgrade to Pro on Jen's App Hub, this Service receives a signed token from App Hub that confirms your Pro status and your email. We do not receive your Stripe payment details. Card numbers, CVV, and other payment data stay with Stripe and App Hub.
- Newsletter consent. Emergency Fund Aquarium doesn't offer a newsletter. Your account record has a newsletter-consent field that stays off, and nothing in the Service turns it on.
2. Why we collect it
- To create and secure your account (legal basis: contract).
- To store the goals and deposits you ask us to store (legal basis: contract).
- To recognize you across the Jen Built It app family when you have a Pro subscription (legal basis: contract).
- To prevent brute-force login, credential stuffing, and abuse (legal basis: legitimate interest).
- To send you transactional emails (verification, password reset) (legal basis: contract).
3. Who we share it with (processors)
We use a small set of vendors to operate the Service. Each vendor only receives the minimum data they need.
- Cloudflare hosts the Service and our database (Cloudflare Workers + D1).
- Resend sends transactional emails (verification, password reset).
- Jen's App Hub issues a signed Pro entitlement token that this Service can verify locally to grant Pro features. App Hub itself uses Stripe for payment processing. Stripe never talks to Emergency Fund Aquarium directly.
- Pro recap emails, through App Hub. If you have Pro and haven't turned recaps off, App Hub (also run by Jen Built It LLC) asks this Service once a month for a summary of your previous month: for up to 10 active goals, each goal's name, target, total saved, percent done, how much you added that month, and how many deposits you made, plus the total you added and the names of any fish-dex creatures you collected that month. App Hub turns that into an email and sends it through Resend. You can turn recaps off in App Hub or with the unsubscribe link in any recap. When you log in, we also send your email to App Hub to ask whether you have Pro.
- n8n (our own automation server, self-hosted at n8n.jen8nflows.cloud) receives an internal operator notification when you sign up (your email address, the app name, the time, and a newsletter flag that's always off), so Jen knows a new account was created. The notification endpoint is authenticated with a shared secret.
- Feedback button: if you use the in-app Feedback button, your message, the page you were on, your browser's user-agent string and, if you choose to enter it, your email address are sent to that same n8n server and emailed to Jen. Nothing is sent unless you press Send.
- Cloudflare Web Analytics counts page views. Cloudflare says it doesn't use cookies or local storage for this and doesn't fingerprint visitors.
- Google Fonts. Our pages load fonts from Google (fonts.googleapis.com and fonts.gstatic.com), which sends your IP address and browser details to Google when the page loads.
We do not sell your personal data. We do not share your data with advertisers. We do not transfer your data to third parties for their own marketing.
4. How long we keep your data
- Account, goals, deposits, and unlocked milestones and creatures: as long as your account exists. When you delete your account from the Progress tab, we delete every row tied to your user ID (users, goals, deposits, achievements, reset tokens, email-verification tokens) right away, and it can't be undone.
- Security data (failed-login counters, rate-limit rows): purged automatically when they expire (15 minutes for failed-login records, up to 5 minutes for rate-limit rows). A daily cleanup job also deletes any expired rows that are left, plus used or expired reset and verification tokens once they're 7 days past expiry.
- Security log lines: kept by Cloudflare's Workers Logs for 3 to 7 days, depending on our Cloudflare plan, then deleted.
5. Cookies and local storage
To keep you logged in, we set one cookie named efa_session. It holds a signed login token, it's marked HttpOnly so scripts on the page can't read it, it's only sent to Emergency Fund Aquarium over HTTPS, and it lasts 30 days or until you log out, whichever comes first. We don't keep your login in browser local storage anymore.
Emergency Fund Aquarium also saves these items in your browser's localStorage, and each one is needed for the part of the Service it belongs to:
hub_pro_jwt: the signed App Hub token with your email and Pro end date, if you came from App Hub or have Pro.efa_milestones_plus a goal ID: the milestones you've already celebrated on that goal, so a celebration doesn't replay.efa_biome_plus a goal ID: the theme an older version of the app saved in your browser. The app copies it to your account once and then only removes it.efa_onboardandefa_tour_done: remember that you've seen the welcome screen and the guided tour.efa_demo_seed: on the home page, picks which sample aquarium the demo shows, so visitors see a different one each time. It holds a single number and nothing about you.
We don't use advertising cookies or tracking pixels.
6. Do Not Track
Some browsers can send a "Do Not Track" signal. Emergency Fund Aquarium doesn't use advertising or tracking tools that follow you across other websites, so it works the same whether or not your browser sends that signal. We don't let any third party collect information about your activity on Emergency Fund Aquarium to track you across other sites over time.
7. Your rights
Depending on where you live (GDPR, UK GDPR, CCPA/CPRA, and similar laws), you may have the right to:
- Access the personal data we hold about you. Use the Download my data (JSON) button on the Progress tab, or Export my data under Account settings in the footer, to export every record tied to your account.
- Correct inaccurate data (edit your goals, deposits, or email).
- Delete your account and all your data (Progress tab → Delete Account). Deletion is immediate and we cannot undo it.
- Lodge a complaint with your local data protection authority.
For anything that requires our help (CCPA right-to-know, GDPR Article 15 statement, dispute over a deletion), email privacy@jenbuiltit.com from the address tied to your account. We respond within 30 days (45 days for California requests).
8. Security
We protect your data using TLS in transit (HSTS), salted PBKDF2 password hashing, parameterized SQL with per-user row filtering, signed JWT sessions with revocation, account lockout after repeated failed logins, request body size caps, per-IP and per-account rate limiting, and a strict Content Security Policy. No system is perfectly secure, but if we detect a breach affecting your data we will notify you and the appropriate authorities as required by law.
9. Children
The Service isn't meant for anyone under 18, and we don't knowingly collect personal data from them. If you believe a child has created an account, email privacy@jenbuiltit.com and we will delete it.
10. International users
The Service is operated from the United States. By using the Service from outside the US, you consent to the transfer of your data to the US. We rely on Standard Contractual Clauses or equivalent safeguards with our sub-processors where required.
11. California residents
If you're a California resident, you have the rights described in Section 7 above (right to know, delete, correct) under the CCPA/CPRA. You also have the right to opt out of the sale or sharing of your personal information. We don't sell or share personal information for cross-context behavioral advertising. See our Do Not Sell or Share My Personal Information page for the formal statement.
12. Cross-app Pro verification
If you have a Pro subscription on Jen's App Hub, this Service receives a signed JWT containing only your email and your Pro expiration date. We verify the signature locally using a shared secret. No payment details, no profile data beyond email, no usage data from other Jen Built It apps is shared with this Service.
13. Changes to this policy
If we update this policy in a way that materially changes how we handle your data, we will notify you by email and post a notice on the Service. The "Last updated" date at the top will always reflect the current version.
14. Contact
Questions about this policy or your data:
Jen Built It LLC
10800 S Lloyd Drive
Worth, IL 60482
USA
privacy@jenbuiltit.com