Who processes your data

The data controller is Sandy Bradbury, an individual resident in Spain and the owner of compoundingjourney.com. Write to me through the contact form or by email at compoundingjourney@gmail.com about anything on this page, including to exercise your rights. Those are the only two ways to reach me from this site, and both arrive in the same inbox.

There is no data protection officer: one person runs this site, and none of the processing described here requires appointing one.

What is processed, at a glance

What is collectedWhat forLegal basisKept for
Name, email and message from the contact formAnswering youYour consent in sending the form, and the pre-contractual relationship you asked for24 months from the last message
Display name and score in the simulator leaderboardsPublishing the ranking you chose to submitYour consent in pressing "submit score"Until you ask for it to be removed
The settings and the result of a simulation (figures, percentages and options chosen)Publishing aggregate averages and shares on the data pageYour consent in pressing the button that saves the simulationIndefinitely, in aggregate and with no name
Name, email address and language of the email subscriptionSending you a welcome email and one email per new articleYour consent when you submit the subscription formUntil you unsubscribe; after that, only the record that you did
How many times each article is openedDeciding what to featureLegitimate interest in knowing what is readOne aggregate counter per article per month, indefinitely
How many times each template is downloaded, and how often the link shown afterwards is followedKnowing which template is useful, and whether the panel after it is worth keepingLegitimate interest in knowing what is downloadedTwo aggregate counters per template per language per month, indefinitely
Email, password (stored only as a hash) and, if you sign in with Google, your name and Google account id, for a Family Wealth Compass app accountSigning you in to the appPerforming the service you ask for when you create the accountUntil you delete the account
The data you enter in the app, if you choose to keep it in your accountKeeping a copy so it is not lost and opens on any device you sign in onYour consent when you choose "Save in my account"Until you delete it or the account; each save replaces the previous one
IP address and technical request dataServing the page, rate-limiting abuse, logging faultsLegitimate interest in keeping the service upThe hosting provider's logs, days
A visit to the course page: Google Ads cookies, IP address and browser dataMeasuring which ads bring visits to the courseLegitimate interest in measuring the course's advertisingAs set by Google; its ad cookies last up to 90 days

The contact form

The form asks for your name, your email address and your message. It is submitted to Netlify Forms, stored there, and forwarded to me by email. It is not used to send you anything you did not ask for, it is not shared, and it does not feed a mailing list: subscribing to the articles by email is a separate, deliberate act.

The simulators and the public data

Three of the simulators keep a public leaderboard. If you press the button to submit your score, the display name you typed, the score, the page's language, the date and the settings you ran that simulation with are stored, and the leaderboard row is visible to everyone. None of this happens until you press it: the simulators work perfectly well without submitting anything.

The other two — the Freedom Calendar and the Market Time Machine — have no leaderboard, but they do have a button that adds your simulation to the public data. No name is stored there: only the figures you entered, the options you picked and the result that came out.

"The settings of the simulation" means things like the withdrawal rate, the share of stocks and bonds in the portfolio, the starting age, the horizon in years, or which habits you cut. They are the model's numbers, not data about you: no address, no occupation, no real net worth, nothing a form would ask for. What gets published from them is averages and shares on the data page, and no measure appears until its sample is large enough - precisely so that no figure describes a single simulation.

The rows stored without a name carry no identifier at all, which means they cannot be found again afterwards: there is no way to tell which one was yours, for me or for anybody else. That is what makes them anonymous, and it also means a particular row cannot be deleted on request. The leaderboard is different: there is a display name there, and it can be removed.

You choose the display name, and the sensible choice is not your real one. A nickname does the same job. If you submitted one and want it gone, write through the contact form or to compoundingjourney@gmail.com naming the score and the simulator, and it will be deleted.

The reading counter

Opening an article adds one to a counter. That counter holds a number per article per month and nothing else: no cookie, no identifier, no browser fingerprint, no record of who read what. It is what decides which article the blog features.

The download counter

Downloading a template requires subscribing to the newsletter: the button opens the subscription form, and your first name and email are handled like any other subscription (see the section on the email subscription). The download counter, on the other hand, keeps nothing about you: the only thing counted is the download itself. Pressing the button adds one to a counter holding how many times that template has been downloaded, per template, per language, per month; and if you then follow one of the two links in the panel that appears, one is added to a second counter.

That second number exists so the panel can be judged: if almost nobody uses it, it should go. Neither counter holds anything more. What is sent is the page's language and the template's internal id, and that is all: no address, no cookie, no visitor identifier, and no record of who downloaded what.

The Family Wealth Compass app and its accounts

The app works in your browser, and you choose where it keeps what you enter in it: your household's income, expenses, assets, debts, goals and plans.

  • Only in this browser. Nothing is sent anywhere: the data stays in your browser's local storage, and an exported backup file is the only other copy.
  • In my account (recommended). The data is still kept in your browser, and a copy is also stored in the site's database, linked to your account, so it is not lost with a phone or a laptop and opens on any device you sign in on. Each change replaces the previous copy; there is no history. The PIN lock you can set in the app never leaves the device.

An account is an email address and a password, or your Google account. Netlify Identity stores the password only as a hash; I never see it. If you sign in with Google, Google tells the site your email address and name, and the site tells Google nothing about what you do in the app.

The stored data is used for one thing: showing it back to you. It is not read, analysed, shared or used to send you anything. The account page (the "Account" button at the top of the app) lets you go back to keeping it only in this browser, delete the copy from the server, or delete the account altogether; each takes effect immediately, and none of them touches the copy in your browser.

The app also uses these local-storage keys: family_balance_sheet_state (the data itself), cj-storage-mode (where you chose to keep it), cj-cloud-meta (which version was last saved to the account), cj-auth-return (which page to come back to after signing in with Google, for an hour at most) and, while you are signed in, gotrue.user (the session). In the browser's session storage, cj-connect-reminded remembers that you were already invited to connect to your account, and fwc-unlocked-at keeps the time of your last activity in the unlocked app, so the PIN is not asked again before the auto-lock time has passed. Both are cleared when the tab is closed. cj-app-owner-pass is only for the site's administrator.

Cookies and storage in your browser

The site sets no cookies of its own, and outside the course page none from anyone else either. The exception is that page — the "De Cero a la Libertad Financiera" course, in any of its three languages: it loads the Google Ads tag (gtag.js), which may store Google advertising cookies — such as _gcl_au — and send Google your IP address, your browser's details and the click identifier if you arrived from an ad. It is there to tell which ads bring visits to the course. No other page loads it.

You can prevent it by blocking third-party cookies in your browser or with an ad blocker; the course page works the same, buy buttons included. Google handles that data under its own privacy policy, and you can manage the ads it shows you in My Ad Center.

The one exception of its own: while you are signed in to an app account, two session cookies, nf_jwt and nf_refresh, keep you signed in. They are strictly necessary for the account and are deleted when you sign out.

It does use eight local-storage keys, which stay in your browser and are never sent anywhere:

  • preferredLanguage — the language you chose, so you are not asked twice.
  • languageSuggestionDismissed — that you already dismissed the language prompt.
  • preferredCalculatorCurrency — the currency you want the calculators in.
  • cj:simulator:context and cj:leaderboard:mine:* — which simulator you came from, and which leaderboard rows are yours so they can be marked. These two are cleared when you close the tab.
  • cj:viewed:* — which articles have already been counted in this tab, so reloading one does not count it twice. Cleared when you close the tab.
  • cj:template:* — which templates have already been counted in this tab, for the same reason. Also cleared when you close the tab.
  • cj:subscribed — that you have already subscribed from this browser, so the templates download without asking for your email again. It holds neither the email nor the name.
  • cj:path:progress — which steps of the learning path you have already seen and the starting point you chose, so your progress can be shown. You can clear it from the path page itself.

You can delete them from your browser whenever you like. The site keeps working; it just stops remembering your preferences.

Who else sees your data

  • Netlify (Netlify, Inc.) hosts the site, processes the form, runs the app's accounts (Netlify Identity), and runs the database holding the simulations, the scores, the counters and the copy of the app's data of anyone who keeps it in their account. It acts as a data processor.
  • Resend (Resend, Inc.) sends the subscription emails. It receives your first name, email address and language, and only if you subscribe. It acts as a data processor.
  • Google (Google Ireland Ltd. and Google LLC) receives the Google Ads tag's data, on the course page only. See the cookies section. And, only if you choose "Continue with Google" in the app, it confirms your identity to the site, under its own policy.
  • Nobody else while you browse. Anywhere else on the site, loading a page contacts no third party: the fonts, the charts and the scripts are all served from this domain. There is no Google Analytics, no pixel outside the course page, and no social button that follows you.

The email subscription, Substack and the share buttons

The "Subscribe" buttons on this site open a form asking for your first name and email address. It is sent to Netlify Forms and stored in the site's database together with the page's language and the button you subscribed from. That, and only that, is used to send you a welcome email and then one email per new article in your language, through Resend. Every email has a one-click unsubscribe link; using it stops everything, and the date you unsubscribed is kept so you are not written to again.

The Compounding Journey newsletter on Substack is something else: a separate publication, in English only, and links to Substack take you to its website. If you subscribe there, Substack processes your address under its own policy; this site never receives it.

The share buttons on the articles are ordinary links. They load nothing from those networks and tell them nothing about your visit: they only open when you press them.

International transfers

Netlify, Inc., Resend, Inc. and Substack are in the United States, so data they process may leave the European Economic Area. Those transfers rely on the EU-US Data Privacy Framework and on the European Commission's standard contractual clauses, depending on the provider.

Your rights

You can ask me at any time for access to your data, its correction or erasure, the restriction of or objection to its processing, and its portability, and you can withdraw your consent whenever you like. Write through the contact form or to compoundingjourney@gmail.com and I will answer within one month.

If you think I handled that badly, you can complain to the Spanish Data Protection Agency (www.aepd.es), C/ Jorge Juan 6, 28001 Madrid, which is the supervisory authority for this site.

If you live in Brazil, the LGPD gives you the same rights, exercised the same way, and you can also complain to the Autoridade Nacional de Proteção de Dados (www.gov.br/anpd).

Children

This site is not aimed at children under 14 and does not knowingly collect data from anyone that age. If you believe it has, write to me and it will be deleted.

Changes

If any of the above changes, this page changes with it, along with the revision date at the top. Changes affecting processing based on your consent do not apply to what was already collected without asking you again.