I Spent 16 Years Measuring People. Then I Deleted the Dashboard.

For 16 years my job was knowing what people did. Then I built my own calendar app and chose to know almost nothing. Four lessons from deleting the dashboard.

4 min read
A faded, dotted line chart gives way, via a soft arrow, to a conversation: the hora app icon asks "how's hora working for you?" and a reply is being typed. Below: I Spent 16 Years Measuring People. Then I Deleted the Dashboard.

For 16 years my job was knowing what people did. Which ad they saw, where they clicked, when they left. I worked on campaigns for big brands, and one of them, "The Missed Spaceflight" for Samsung, won Adweek's Grand Arc Award. I believed one thing completely: with enough data, everything works.

Then I built my own product, and it turned out I was wrong.

I built hora the way everyone builds apps

hora is a native calendar that works with Google Calendar, made for people who live in it. When I started, I set it up the way any marketer would. Analytics in the app. Attribution so I'd know which ad brought which download. Ad pixels on the website. A session recorder, because "let's see the funnel."

None of it was unusual. That's the stack most apps ship with, and nobody blinks. Each piece had a sensible reason the day it went in. And old habits stay: every marketer likes to bend the rules a little to get one more number.

hora never saw your calendar. Your events, invitations and calendars never went through my servers, and that's exactly how we always described it. But a privacy promise shouldn't leave room for more than one reading. So one day I asked a question I'd never asked in 16 years of marketing: if I took my own promise as literally as possible, what would I actually need?

The honest answer was: almost none of it.

Lesson 1: paid ads bought me installs, not customers

Since April I've spent about 7,200 PLN on Google Ads, plus tests on Meta and Reddit. In one window we measured, 19 Direct trials turned into a single purchase.

Meanwhile the people who found hora through a blog post, a search, a reply on X or a friend stayed and paid. An install isn't a customer. A trial isn't either. I knew that sentence from client decks. I'd just never paid for it myself.

Lesson 2: more charts didn't make me smarter

I had everything. Funnels, heatmaps, session replays, events from the app. I looked at those charts for months.

They never told me one thing I could act on. Everything that actually moved hora forward came from an email from a user, a bug report, or my own frustration with my own calendar.

Data didn't make me smarter. It made me stare.

Lesson 3: you never decide to collect more. You just never decide not to.

This is the one that changed how I think about marketing. No one sets out to collect more than they need. You add one reasonable tool, then another. A year later the sum is something you'd struggle to explain to a user in one sentence.

So I made the decision most products never make. hora is going fully private:

  • No ad pixels, no attribution, no matching downloads to ads.
  • Usage data becomes five anonymous counters. No person, no IP, no location. Opt-in, off by default.
  • Crash reports are opt-in too, with no user or device name attached.
  • The only number I keep watching is money: how many licenses were sold, and in which store. A purchase is a deal both sides know about.

Lesson 4: privacy is mostly deleting code

I expected privacy to be a big engineering project. It was mostly the delete key.

  • The download tracker went from 2,008 lines to about 60.
  • The website lost 1,959 lines and 5 dependencies. No cookies, no third-party scripts, so no cookie banner either.
  • The app lost 6,166 lines and 28 Swift packages in one go.

Less code to maintain, fewer things to break, nothing to explain. As a marketer I never imagined that the most private version of my app would also be the cheapest one to run.

A trap worth knowing if you use PostHog

"Discard client IP data" does not turn off location. The GeoIP step reads the IP before it's discarded, so you still get city-level data. You have to switch GeoIP off separately in Data pipelines. It was on in both of our projects, and I'd bet it's on in yours.

"Discard IP" does not mean "no location".

What I can see now

hora talks to the Google Calendar API directly from your device, and your sign-in tokens stay there. I can't see your calendars, events or invitations, because they never pass through my servers. Push updates need a small server, so Google can say "something changed". It knows a hashed ID, not your email.

Dialogue, not tracking

If I want to know something now, I ask. The onboarding has two plain toggles, "Send crash reports" and "Share anonymous usage counts". When someone emails me, I write back. One conversation like that teaches me more than a month of dashboards did.

What 16 years of marketing didn't teach me

Data doesn't build growth. A product people want to tell someone about does. Tools amplify that. On their own, they do nothing.

Build the thing. Ask people. Count the money.

If Google Calendar is where your week lives, try hora free for 14 days.

Small print: the 14-day trial is for the Direct version and needs no card. hora is an independent app and is not affiliated with Google.

Related stories

Week One Building hora: 107 Commits Later
Build notes

Week One Building hora: 107 Commits Later

A candid snapshot of hora's first ten days: 107 commits, three Swift packages, 21 resolved issues, useful workflows, and plenty still rough.

Maciej Szamowski7 min read
Five Days Later: The Road to Launching hora Calendar
Build notes

Five Days Later: The Road to Launching hora Calendar

Five days after I first wrote about hora, the visible app worked. The road to launch was now OAuth verification, TestFlight, reliability, and feedback.

Maciej Szamowski6 min read
Building a Native Mac Calendar App in 48 Hours
Build notes

Building a Native Mac Calendar App in 48 Hours

What I cut, rebuilt, and shipped during a 48-hour sprint on hora, including PKCE auth, Day View, FreeBusy sharing, and WidgetKit.

Maciej Szamowski6 min read
Stay in the loop

Want to stay updated?

Subscribe for hora news and updates for Mac, iPhone and iPad.