Legal
Privacy Policy
How Ridgeline Budget handles your data - written to be read, not just agreed to.
Overview
Ridgeline Budget is a personal household budgeting application operated by Ridgeline Budget LLC, a single-member limited liability company based in Minnesota, United States. This policy explains what information is collected, how it is stored and protected, what rights you have over it, and how this application relates to major privacy regulations.
This policy applies to the Ridgeline Budget web application at app.ridgelinebudget.com and the associated marketing website at ridgelinebudget.com. It does not apply to third-party services linked from these sites.
How the Application Works
Understanding the architecture is essential to understanding the privacy model. Ridgeline Budget is a client-side-first application. All data processing - budgeting calculations, encryption, and decryption - happens in your browser. The server is a storage relay, not a data processor.
Free accounts (local only)
Free accounts store all data exclusively in your browser's localStorage. Nothing is transmitted to any server. Your financial data never leaves your device.
Paid accounts (synced)
When you upgrade to a paid plan, your workspace data is encrypted in your browser before being sent to the server. The server stores an opaque, encrypted blob. The encryption key is stored only in your browser's localStorage - it is never transmitted to the server in any form.
The sync architecture uses an operation log (op_log) and a workspace state snapshot (workspace_state). Both tables store only encrypted ciphertext when encryption is enabled. The server cannot reconstruct any financial data from what it stores.
What the server can see
For free accounts, the server receives no financial data at all - only account credentials (email and hashed password). For paid accounts, even with full database access, the server (and the developer) can see only:
- Your account email address and hashed password (managed by Supabase Auth)
- Workspace identifiers (UUIDs) and workspace names
- Timestamps of when operations were written
- Encrypted ciphertext blobs prefixed with
enc:- unreadable without your key - Passkey credential metadata (credential ID and public key only - never the private key)
If a paid account chooses no encryption, financial data is stored as readable JSON on the server. This is clearly disclosed during setup. Encryption is strongly recommended and enabled by default for new workspaces.
What We Collect and Why
| Data | Purpose | Stored where |
|---|---|---|
| Email address | Account identity, sign-in, password reset, partner invitation emails | Supabase Auth (server) |
| Hashed password | Authentication | Supabase Auth (server) - bcrypt hash, never plaintext |
| Passkey credential | Password-free authentication | Server - credential ID and public key only. Private key never leaves your device. |
| Workspace financial data | Core application function - budgets, income, expenses, history | Free accounts: browser localStorage only, never transmitted. Paid accounts: encrypted in browser; encrypted ciphertext stored on server. |
| Encryption key | Encrypting and decrypting your data | Browser localStorage only - never sent to server |
| Session tokens | Maintaining your signed-in state | Browser localStorage and server-side session record |
| Operation timestamps | Conflict resolution for real-time sync | Server - ISO timestamps only, no content |
| Subscriber status | Tracking paid plan status, sponsor/partner relationship | Server - plan tier and associated email |
| Debug logs | Optional diagnostic output to your own browser console | Browser only - never transmitted. Off by default. |
We do not collect: IP addresses beyond what Supabase's infrastructure logs for security purposes and what Vercel Web Analytics hashes transiently to count visits, device fingerprints, cross-site tracking data, browsing history outside this service, or any data for advertising purposes.
Encryption in Detail
Encryption is implemented entirely in your browser using the Web Crypto API - the same standard cryptography interface used by banks and password managers. No third-party encryption library is involved.
Encryption modes
| Mode | Algorithm | Key storage | Key recovery |
|---|---|---|---|
| Random key | AES-GCM-256, 96-bit random IV per operation | Browser localStorage |
None - must transfer key manually to new devices |
| Passphrase | AES-GCM-256, key derived via PBKDF2 (600,000 iterations, SHA-256) | Browser localStorage after derivation |
Re-enter passphrase on any new device |
| None | No encryption | N/A | N/A - data readable on server |
What "end-to-end encrypted" means here
In this application it means the data is encrypted before it leaves your browser and decrypted after it arrives in your browser. The server never holds the key. This is structurally identical to end-to-end encryption in messaging applications - the transit layer and the storage layer both handle only ciphertext.
What encryption does not protect against
Encryption protects your data at rest on the server and in transit. It does not protect against malware on your own device that can read localStorage, or against someone who has physical access to an unlocked device where you are signed in.
Third-Party Services
Supabase
The backend database, authentication, and serverless functions run on Supabase (supabase.com), which is hosted on AWS infrastructure. Supabase processes your email address, hashed credentials, and encrypted workspace data as a data processor on our behalf. Supabase is SOC 2 Type II certified and GDPR-compliant. Their privacy policy is available at supabase.com/privacy.
Google Fonts
The marketing website loads fonts (Instrument Serif, DM Sans, JetBrains Mono) from Google Fonts. This causes your browser to make a request to Google's servers, which may log your IP address. Google's privacy policy applies to this request. The application itself (app.ridgelinebudget.com) does not load any external font resources.
Analytics and advertising
Ridgeline Budget does not use Google Analytics, Mixpanel, Amplitude, Segment, Sentry, Hotjar, Intercom, or any other behavioral analytics, error tracking, or session recording service. There are no advertising networks, no tracking pixels, and no data brokers involved. The single measurement tool in use is Vercel Web Analytics, described immediately below.
Both the marketing website and the application use Vercel Web Analytics, which counts page views without cookies and without building a profile of individual visitors. It sets no cookies and stores no persistent identifier; visit counts are derived from a hash of IP address, user agent, and path that is discarded rather than retained as a profile.
Inside the application, the only thing reported is which screen you are viewing, recorded as a path: /dashboard, /income, /expenses, /progress, /budgets, /settings, /history, /reports, or /net worth. No financial data, no budget names, no account identifier, and no free-text you have entered is included. The purpose is to know which parts of the application are used, not who is using them.
Halation game statistics
The word game at /games/halation records anonymous, aggregate information about how puzzles are played, so we can understand whether the game is working and how many people play it. Specifically, when a round finishes we record the puzzle number, whether it was played in hard mode, whether it was solved, how many guesses were used, and how long the player's current daily streak is. We also record when someone taps the Share button.
No account, identifier, cookie, or device fingerprint is attached to any of this. These records cannot be linked to each other, to a person, to a browser, or to a Ridgeline Budget account, and they contain nothing about your budget or finances. Your personal game statistics - streaks, win rate, guess distribution - are stored only in your own browser's localStorage and are never uploaded. Clearing your browser data erases them permanently, and we hold no copy.
As with any website, our hosting providers (Vercel and Cloudflare) record standard request logs that include IP addresses for security and abuse prevention. That is infrastructure logging, separate from the game statistics described above, and the two are not joined together.
No cookies
This application does not use HTTP cookies. Authentication sessions and encryption keys are stored in localStorage, which is not transmitted with every request the way cookies are. There is no cookie banner because there are no cookies to consent to.
Data Retention
Active accounts
Your account data is retained for as long as your account exists. Workspace data (encrypted) is retained indefinitely to support the app's multi-year history feature.
Account deletion
You can permanently delete your account at any time via Settings → Account → Delete Account. Deletion requires typing DELETE to confirm. Upon deletion, your account record, all workspace memberships, all encrypted workspace data, and all operation log entries are permanently removed from the server. This action is irreversible.
Workspace removal
Deleting a workspace removes all associated data from the server immediately. If you are a member (not the owner) and are removed from a workspace, your access is revoked but the workspace data remains for the owner.
Free account data
Free account data lives only in your browser's localStorage. Clearing your browser data, using a private window, or switching browsers removes it permanently. There is no server copy to delete.
Backups
Supabase maintains infrastructure-level backups as part of its standard operations. These backups are encrypted at rest and are used only for disaster recovery purposes, not for data analysis. Point-in-time recovery is available for a limited window per Supabase's standard retention policies.
Your Rights and Controls
Regardless of where you live, you have the following practical controls over your data:
- Access: Your financial data is always accessible to you in the app. You can export a full JSON backup at any time via Settings → Data Backup → Export.
- Correction: All data in the app is editable directly. There is no data we hold about you that you cannot see and change yourself (except infrastructure logs maintained by Supabase).
- Deletion: Delete your account via Settings → Account → Delete Account. This permanently removes all server-side data.
- Portability: The JSON export format is human-readable and can be used independently of this application.
- Encryption control: You choose your encryption mode and hold your key. You can change or remove encryption at any time in Settings → Encryption.
- Collaboration revocation: Workspace owners can remove members at any time. Members can leave a workspace at any time.
- Passkey management: Register and delete passkeys at any time via Settings → Passkeys.
GDPR (European Union & UK)
If you are located in the European Economic Area (EEA) or the United Kingdom, the General Data Protection Regulation (GDPR) or UK GDPR applies to your personal data.
Legal basis for processing
| Processing activity | Legal basis |
|---|---|
| Account creation and authentication | Contract performance (Art. 6(1)(b)) - necessary to provide the service you signed up for |
| Storing encrypted workspace data | Contract performance (Art. 6(1)(b)) - core function of the service |
| Sending partner invitation emails | Legitimate interests (Art. 6(1)(f)) - necessary to fulfil the collaboration feature you initiated |
| Subscriber / payment status | Contract performance (Art. 6(1)(b)) - necessary to manage paid plan access |
Your GDPR rights
- Right of access (Art. 15): You can export all your data at any time. To request any data held outside the app (e.g. Supabase Auth records), contact us at the address below.
- Right to rectification (Art. 16): All app data is editable directly. Contact us to correct account email or metadata.
- Right to erasure (Art. 17): Delete your account in-app. All server-side personal data is permanently removed.
- Right to data portability (Art. 20): Export your data as JSON at any time. Format is machine-readable and documented.
- Right to object (Art. 21): We do not process data for direct marketing or profiling. There is nothing to object to beyond the service itself.
- Right to restriction (Art. 18): Contact us to discuss restrictions on specific processing activities.
Data transfers outside the EEA
Supabase hosts data on AWS infrastructure, which may involve servers outside the EEA. Supabase relies on Standard Contractual Clauses (SCCs) approved by the European Commission for international data transfers. Details are available in Supabase's Data Processing Agreement.
Data Protection Officer
Ridgeline Budget LLC is a single-member company and does not meet the thresholds requiring a formal Data Protection Officer appointment under Art. 37 GDPR. Privacy inquiries should be directed to the contact address below.
CCPA / CPRA (California)
If you are a California resident, the California Consumer Privacy Act (CCPA) as amended by the California Privacy Rights Act (CPRA) grants you specific rights.
Categories of personal information collected
| Category | Examples | Collected? |
|---|---|---|
| Identifiers | Email address, account ID | Yes |
| Financial information | Budget data, income, expense records | Paid accounts only - encrypted unless you have turned encryption off, in which case it is stored in readable form. Free accounts: stored locally, never transmitted. |
| Internet / network activity | Browsing history, interaction data | No |
| Geolocation data | Precise location | No |
| Biometric information | Fingerprints, facial data | No - passkeys use device-local biometrics; biometric data never leaves your device |
| Inferences / profiles | Consumer profiles, preferences | No |
| Sensitive personal information | Financial account details | Paid accounts only - encrypted before transmission and inaccessible to us, unless you have turned encryption off. Free accounts: never transmitted. |
Sale or sharing of personal information
Ridgeline Budget does not sell personal information and does not share personal information with third parties for cross-context behavioral advertising purposes. We do not have actual knowledge that we sell or share the personal information of consumers under 16 years of age.
Your CCPA rights
- Right to know: This policy and your in-app data export describe all personal information collected. Submit requests to the contact address below.
- Right to delete: Delete your account in-app (Settings → Account → Delete Account) or submit a deletion request to us.
- Right to correct: Update your data directly in the app or contact us for account-level corrections.
- Right to opt out of sale/sharing: Not applicable - we do not sell or share personal information.
- Right to limit use of sensitive personal information: Your financial data is encrypted and inaccessible to us. No further limitation is possible or necessary.
- Right to non-discrimination: Exercising any of these rights will not affect your access to the service.
We will respond to verified consumer requests within 45 days. Requests may be submitted to the contact address below. We may need to verify your identity before fulfilling a request.
Other Privacy Regulations
🇨🇦 PIPEDA / Law 25 (Canada / Québec)
Canadian users have rights to access and correct personal information held about them. Québec's Law 25 additionally requires privacy impact assessments for new personal information technologies. Contact us to exercise these rights. Data may be processed on servers outside Canada (AWS via Supabase).
🇦🇺 Privacy Act (Australia)
Australian users have rights under the Australian Privacy Act 1988 and the Australian Privacy Principles. You may request access to or correction of your personal information by contacting us. The app does not collect sensitive information as defined under Australian law beyond encrypted financial data we cannot access.
🇧🇷 LGPD (Brazil)
Brazilian users have rights under the Lei Geral de Proteção de Dados. Legal basis for processing is contract performance and consent. You may exercise access, correction, deletion, portability, and objection rights by contacting us.
🇺🇸 Other US State Laws
Virginia (VCDPA), Colorado (CPA), Connecticut (CTDPA), Texas (TDPSA), and other US state privacy laws grant similar rights to access, correct, delete, and opt out of sale/profiling. We do not sell data or engage in targeted advertising. Exercise rights via the contact address below.
Across all jurisdictions, our core commitments are the same: we collect the minimum data necessary, we do not sell or share it, your financial data is either stored locally on your device (free accounts) or encrypted before reaching our server (paid accounts) - inaccessible to us either way, and you can delete everything at any time.
Children's Privacy
Ridgeline Budget is intended for use by adults managing household finances. The service is not directed to children under 13 years of age (or under 16 in the EEA and UK), and we do not knowingly collect personal information from children.
If you believe a child has provided personal information through this service, please contact us immediately and we will delete it. The COPPA (Children's Online Privacy Protection Act) safe harbor provisions do not apply to this service as it is not directed at children.
Changes to This Policy
We may update this policy from time to time. If changes are material - meaning they meaningfully expand the data we collect, change who we share it with, or reduce your rights - we will notify signed-in users by email and update the effective date at the top of this page.
Continued use of the service after the effective date of any changes constitutes acceptance of the updated policy. The previous version of this policy will always be available upon request.
Contact
For privacy-related questions, data requests, or to exercise any rights described in this policy, contact us at:
Ridgeline Budget
Ridgeline Budget LLC
For privacy inquiries: [email protected]
We aim to respond to all privacy inquiries within 14 days. For formal GDPR or CCPA requests, we will respond within the legally required timeframe (30 days for GDPR, 45 days for CCPA) and may ask you to verify your identity before fulfilling the request.