5Ds AI Program Brief · Building in public · Nov 1, 2026

A personal operating system

A private database for one person's whole life: body, mind, people, money, work, places, time, direction, admin and legacy. It fills itself from the systems you already use, and it exists to answer one question: am I living the life I intend to?

Building in public. I'm turning this into open source code and a small SaaS. Want it for yourself? Book a discovery call, or read the story.

D1

Definition of the Problem

A life generates more data than ever, and almost none of it is in a form you can use to live better.

My life is spread across twenty systems, and none of them can tell me whether I'm living the life I intend to.

Scattered. Health lives in a watch, a hospital portal and old emails. Money lives in bank statements and an accounting file. Relationships live in a phone, WhatsApp, LinkedIn and memory. Travel lives in confirmation emails. Reflections live in Notion. Photos live in Google Photos, tens of thousands of them, mostly never seen again. Each system holds a slice, and none of them talk to each other.

Unanswerable. Simple questions about your own life take an hour or can't be answered at all. When was that surgery? How many times have I been to Australia? What's my net worth trend over five years? Who haven't I spoken to in a year who used to matter? What was I thinking the month the company sold?

Patterns stay invisible. The most useful insights sit between systems: sleep against mood, travel against happiness, drinking against fitness, money stress against relationships. No single app can see across them, so the patterns that drive a life stay hidden, even when you feel them.

Direction drifts. Goals get written in January and reviewed, if ever, by memory. Forum updates and monthly reviews are filled in by hand from scratch every time, so they're hard to sustain and impossible to compare over years.

Admin lapses. A passport expires, insurance renews at the wrong price, the will that came up twice in one meeting still isn't written. Nobody else could step in and find anything.

Memory fades, legacy is lost. The stories, people and moments that make up a life are recorded somewhere, but not kept anywhere. Family history disappears with the people who hold it.

What /life does about it

Remember

Every record of what happened, in one timeline: trips, surgeries, jobs, moves, milestones, people met. Searchable in seconds.

Reflect

Metrics over time across every area, side by side, so patterns between areas become visible. A monthly review that fills itself in.

Run

The admin of a life: expiry dates, renewals, accounts, documents, the people to call. Reminded before it's urgent.

The ten areas of a life

The structure every table, workflow and screen hangs on. Each area is scored monthly, so the whole life fits on one screen.

1 · Body

Health, fitness, sleep, nutrition, habits

2 · Mind

Mood, learning, skills, principles, lessons

3 · People

Family, friends, partner, mentors, community

4 · Money

Net worth, income, debt, cash flow, insurance

5 · Work

Companies, roles, wins, talks, books, reputation

6 · Places

Travel, homes, events, firsts, bucket list

7 · Time

Where the hours go, by area

8 · Direction

Vision, goals, commitments, reviews

9 · Admin

IDs, accounts, property, will, emergency info

10 · Legacy

Photos, stories, family history, lifeline

Design principles

Automatic first

Tracking dies when it's manual. Every area gets an automatic source where one exists. Manual input is only what a person alone can provide: scores, meaning, decisions.

Track what changes a decision or keeps a memory

Everything else is noise. Monthly snapshots beat every transaction. Curated photos beat the whole library.

Keep the original

Every structured row links back to the email, statement or page it came from. Claude extracts; nothing is lost in translation.

Ask before guessing

Low confidence and conflicts go to a review queue. A wrong medical date or balance is worse than a missing one.

Private by construction

One owner, one login, every row locked to that login. The most sensitive data a person has, treated that way.

Generic model, personal content

Areas, metrics and sources are data, not code. Adding "tennis matches" or a new bank is a row, not a release.

Not in scope

D2

Datasources Needed

Everything a life could draw from, not only what's connected today. Each source has a method, a cadence and a phase. Phase 1 is in bold.

AreaSourceWhat it givesMethodCadencePhase
BodyApple Health (aggregates the watch, scale, phone)Steps, workouts, sleep, resting heart rate, HRV, weight, body fatHealth Auto Export app → webhookDaily1
Wearable (Whoop, Oura, Garmin)Recovery, strain, sleep stagesVendor APIDaily2
StravaRuns, rides, tennis and pickleball sessionsAPIDaily2
Gmail + uploadsSurgery reports, discharge notes, prescriptions, lab PDFsUpload or email search → ClaudeOn demand1
Manual check-inAlcohol, sugar, habits not captured by devicesOne-tap daily logDaily2
MindNotion journal and EO updatesDaily reflections, monthly scores, forum learningsNotion APINightly1
Kindle / Readwise / GoodreadsBooks read, highlightsReadwise API or exportWeekly3
Course platforms, DuolingoCourses finished, language streaksExport or manualMonthly3
PeopleGoogle Contacts / iCloudNames, numbers, birthdays, companiesvCard export or People APIWeekly2
Google CalendarWho you met and whenCalendar APIDaily2
LinkedInConnections, where people workData exportQuarterly2
WhatsApp, ZaloLast contact dates (not message content)Chat export, metadata onlyMonthly3
MoneyBank and credit card statementsMonth-end balances, income, big outflowsPDF/CSV upload or Gmail → ClaudeMonthly2
Brokerage, crypto, propertyAsset valuesStatement or manual snapshotMonthly2
LoansBalances, rates, payoff datesStatement or manualMonthly2
Business books (QuickBooks)Owner draws, company revenue trendQBO APIMonthly3
WorkLinkedIn profile, CVRoles, companies, datesExport, one-timeOnce2
Speaking site, books, pressTalks given, audiences, publicationsSite data + manualMonthly3
PlacesGmail (personal account)Flights, hotels, trains, cars, events, back to 2006Apps Script → webhook → ClaudeHourly1
TripItCross-check for recent tripsPrivate iCal feedDaily1
Google Maps TimelineWhere you actually were, places visitedOn-device exportQuarterly3
TimeGoogle Calendar, Lark calendarHours by category (work, people, health, admin)Calendar APIsDaily3
DirectionNotion EO updates, vision pagesGoals, 30/60-day commitments, past resultsNotion APINightly1
/life itselfMonthly review, yearly goalsNativeMonthly1
AdminGoogle Drive scansPassport, licence, insurance, deeds, willUpload → Claude extracts expiry and numbers kept out of textOn change2
GmailRenewals, subscriptions, warrantiesApps Script → ClaudeDaily2
LegacyGoogle PhotosFavourites and named albums, with dates, places, facesPhotos Picker (you choose) or Takeout of albumsMonthly3
Family story appsParents' life chapters, recordingsApp exportMonthly3
Notion lifeline, presentationsYour own story, in your wordsNotion APINightly1

Google Photos no longer lets apps read a whole library. Selection happens through Google's Photos Picker or a Takeout of chosen albums, which fits "curated, not everything" anyway.

Database tables

One Supabase project, dave-life. Every table has id, owner_id, created_at, updated_at and row-level security limited to the owner, so those are left off below. Every column carries a comment so Ask can read the schema.

The frame

What a life is organised by
areas 10 seeded
slug body, mind, people…
name, sort_order
description
metrics definitions
area_id
slug weight_kg, sleep_hours, net_worth
unit, aggregation avg, sum, last
direction higher_better, lower_better
source_id
tags · taggables
tags: name, color
taggables: tag_id, entity_type, entity_id

Records, metrics, reflections

The three kinds of data every area holds
records the timeline
area_id
kind surgery, job, move, milestone…
title, started_on, ended_on
place_id, notes
source_item_id
measurements time series
metric_id
measured_at, value
source_item_id
unique (metric_id, measured_at)
entries reflections
kind journal, eo_update, learning, note
date, title, body_md
external_id notion page id
search tsvector

Direction

The loop that ties the areas together
goals
area_id, title
horizon 30d, 60d, year, vision
metric_id, target_value
due_on, status
reviews monthly
period 2026-10
one_word, headline
status draft, done
auto_summary jsonb
review_scores
review_id, area_id
score 0 to 10
feelings, headline, impact

Area detail

Tables where an area needs more than a record or a metric
people
name, relationship family, friend…
closeness 1 to 5, how_met
birthday, contact jsonb
contact_every_days
interactions
person_id, happened_at
kind meeting, call, trip, message
record_id, notes
places
name, city, country
lat, lng
kind home, hotel, venue, city
trips
title, start_on, end_on
primary_place_id
purpose business, personal
trip_legs
trip_id, kind flight, hotel…
status, confirmation_code
provider, number, origin, destination
starts_at, start_tz, ends_at, end_tz
accounts
name, institution
kind bank, card, brokerage, loan, property
currency, is_liability
balances
account_id, as_of
balance, balance_usd
source_item_id
obligations admin
title passport, insurance…
expires_on, renews_on
remind_days_before
document_id
media photos
storage_path, taken_at
place_id, caption
linked to people, trips, records via links

Plumbing

How data gets in, safely and without duplicates
sources connector registry
slug gmail, notion, apple_health…
method, cadence
last_run_at, last_status
cursor jsonb
source_items raw inbox
source_id, external_id
received_at, payload jsonb
processed_at, extraction jsonb
unique (source_id, external_id)
review_queue
source_item_id
proposed jsonb, confidence
reason, status
documents
storage_path private bucket
mime, title, doc_date
text extracted
links
from_type, from_id
to_type, to_id
relation mentions, attached, during
workflow_runs
workflow, started_at, finished_at
status, items_in, items_out
error

D3

Diagram & Documented Workflow

Sources feed a single raw inbox. Claude turns raw items into records, measurements and reflections. Anything uncertain waits for review. Everything rolls up into the monthly review.

Sources
GmailTravel, medical, admin, statements
NotionJournal, EO updates
Apple HealthBody metrics
Calendar, ContactsPeople, time
UploadsStatements, scans, photos
Collect
ConnectorsApps Script, webhooks, scheduled pulls
source_itemsRaw inbox. One row per email, page, file or reading. Never duplicated.
Understand
Claude extractionClassify, extract fields, link people and places
Review queueLow confidence or conflict
Store
RecordsTimeline
MeasurementsCharts
EntriesReflections
Documents, mediaPrivate bucket
Use
Monthly reviewAuto-filled
Areas, timeline
NudgesPeople, renewals
Search, Ask

Sources → Collect → Understand → Store → Use

The core loop

1Capture

Sources fill records and metrics automatically, all month.

2Review

On the 1st, a draft review is waiting with every area's numbers and highlights.

3Reflect

You add scores, one word and meaning. Ten minutes, not an hour.

4Direct

Set 30 and 60-day goals tied to metrics. Next month's review checks them.

Workflows

Gmail sweepW1
Trigger
Hourly, Apps Script inside your Gmail
Steps
Search unlabelled travel, medical, admin and statement emails → POST to /api/life/ingest with a shared secret → label life/ingested
Output
source_items, then W3
Backfill
Monthly windows back to 2006, resumable cursor
Notion syncW2
Trigger
Nightly cron, plus a one-time full import
Steps
Fetch pages edited in 48 hours → strip repeated template blocks → upsert entries → EO scores into review_scores, weight into measurements
Output
Journal and history of monthly reviews
Extract and routeW3
Trigger
Every new source_item
Steps
Claude classifies (flight, hotel, statement, medical, renewal…) and extracts fields → match on natural keys (confirmation code, account and date) → apply changes and cancellations
Output
Rows in the right tables, or a review_queue item
Health syncW4
Trigger
Daily push from the Health Auto Export app
Steps
Webhook receives daily aggregates → upsert measurements per metric and day
Output
Body charts, review numbers
Trip builderW5
Trigger
After any trip leg changes
Steps
Order legs by time → a trip opens when you leave home and closes when you return → name it, attach places and journal entries from those dates
Output
trips, timeline records
Monthly review draftW6
Trigger
1st of each month, 06:00 local
Steps
Compute every metric's month vs last month and 12-month average → gather records, trips, people seen → Claude drafts highlights per area and checks last month's goals → notify
Human
Score, one word, meaning, next goals
Statement ingestW7
Trigger
Statement email (W1) or upload
Steps
Claude reads the PDF → month-end balance per account, income and large outflows → balances → net worth recalculated
Phase
2
NudgesW8
Trigger
Weekly, Monday morning
Steps
People past their contact interval, birthdays in 14 days, obligations inside their reminder window → one digest
Phase
2
Photo curationW9
Trigger
Monthly prompt, or after a trip ends
Steps
Open Google Photos Picker for the trip's dates → chosen photos copied to the private bucket → linked to trip, places, people
Phase
3
AskW10
Trigger
On demand
Steps
Claude queries through a read-only database role, cites every row it used
Guarantee
Can read everything, can change nothing

Wireframes

Layout and content, not final visual design. The build uses the site's navy, blue, magenta and mint on Inter, white background. Sample numbers are illustrative.

01

Home: this month across all ten areas

The whole life on one screen. Each area shows its key number and its trend against your 12-month average. What needs attention sits underneath.

davehajdu.com/life
/life
This month
Review
Timeline
Areas
Body
People
Money
Places
…
System
Inbox · 4
Sources
Ask
November 2026
Body78.4 kg
▲ 0.6 · 11 workouts
Mind22 entries
▲ 6 vs avg
People14 seen
3 overdue
Money$###k
▲ 4% net worth
Work$110k
record month
Places3 trips
9 nights away
Time62% work
▲ 8 pts
Direction1/3 goals
Admin2 due
passport 7 mo
Legacy48 photos
2 stories
Needs attention
Review for October is readyOpen
3 people past their intervalPeople
4 items waiting in the inboxInbox
Coming up
SydneyNov 19 to 23
Mom's birthdayin 12 days
Health insurance renewsDec 15
02

Monthly review: filled in before you open it

The heart of the product. Numbers and highlights are already there for every area. You add the score, the one word and what it meant. Same shape as an EO update, so it can be shared with a forum in one click.

davehajdu.com/life/review/2026-10

October 2026 review

DraftCopy as EO updateFinish
Scores · you set these
Body7
Mind9
People5
Money5
Work9
…5 more·
One word
Hungry
Headline
What defined this month…
Auto-filled from your data
Body · 11 workouts (goal 15), avg sleep 6.4h, weight 78.4 kg ▲0.6

Places · Singapore, Sydney, Bangkok · 9 nights away

People · 14 people seen, 2 family calls, 3 overdue

Mind · 22 journal entries. Recurring themes: discipline, travel, family
Last month's goals
Close 2 deals1 of 2
15 workouts11 of 15
Book a family tripDone
Next 30 and 60 days
+ Add a goal, tie it to a metric
03

Area page: Body

Every area has the same layout: its metrics as charts, its records as a timeline, its goals, and its sources. This makes adding a new area a configuration change.

davehajdu.com/life/area/body

Body

1Y5YAll
Weight (kg) · goal 79
Workouts per week · Sleep hours
Records
2019
Knee surgery · 2 documents
2015
Started strength training
2008
Broken wrist
Sources
Apple Healthtoday 06:10
Notion weightnightly
04

Timeline

Every record from every area in date order, filterable by area. Zoom from a decade to a single week, where journal entries, trips and photos from those days appear together.

davehajdu.com/life/timeline
AllBodyPeopleMoneyWorkPlacesLegacyDecadeYearMonth
Oct 30 to Nov 3, 2026 · Places
Bangkok, Thailand · 2 flights · 1 hotel · 12 photos
Oct 2026 · Work
Record revenue month · from October review
Sep 29 to Oct 3, 2026 · Places
Melbourne, Australia · keynote, 88 NPS
2021 · Work
Sold my first company
2006 · Places
Moved abroad
05

Places: upcoming trip on a phone

The TripIt replacement, built from Gmail. Next trip, countdown, each day's flights and hotels in local time, confirmation codes that copy on tap.

Upcoming
Past
Map
Next trip
Sydney, Australia
Thu Nov 19 to Mon Nov 23 · 4 nights
in 18 days
Thu, Nov 19
✈
SGN 13:45 → SYD 22:15VN773 · Vietnam Airlines
ABC123
H
Check in · Four Points Central Parkafter 15:00
8841207
Mon, Nov 23
✈
SYD 00:15 → SGN 09:15VN772 · Vietnam Airlines

Past tab

Trips by year with a map of every place visited, plus lifetime totals: countries, trips, flights, nights away. Each trip page shows the itinerary, the journal entries written during it, the people you were with and the photos you picked.

Changes and cancellations

A change email updates the booking. A cancellation removes it from the plan and keeps it in history. Two bookings that can't both be true go to the inbox.

06

People

The people who matter, ranked by closeness, with when you last connected and whether you're overdue. A person page shows every trip, meeting, journal mention and photo with them.

davehajdu.com/life/people
Inner circleFamilyFriendsEOOverdue · 3
MomFamily · every 7 days
Last: 2 days agoOn track
Forum memberEO · every 30 days
Last: 41 days agoOverdue
Old friendFriend · every 90 days
Last: 7 months agoOverdue
MentorMentor · every 60 days
Last: 3 weeks agoOn track
07

Money

Net worth over time from month-end balances, with assets and liabilities split. Each number traces back to the statement it came from. No passwords stored, no bank login.

davehajdu.com/life/area/money
Net worth (USD)
2021 exit
Accounts · Oct 31
Bank, operating$##,###
Brokerage$##,###
Mortgage−$##,###
Missing statements
Credit card, OctUpload
08

Inbox: where Claude asks instead of guessing

Everything waiting on a decision, from every source. One click to approve, fix or reject.

davehajdu.com/life/inbox
Places · Two return flights for one trip
Bangkok: TG556 on Nov 1, or a rebooked VN608 on Nov 2?
View emailsQR971Via Bangkok
Money · New account found
A statement from an institution not yet in your accounts. Add as credit card?
IgnoreAdd account
Body · Value out of range
Physical score of 76 on May 25. A weight in kg typed into the wrong field?
KeepMove to weight
09

Sources: is everything still flowing?

Every connector, when it last ran, and what it brought in. A broken source shows here before it shows up as a hole in the data.

davehajdu.com/life/sources
SourceLast runThis month
Gmail sweep12 min ago38 itemsLogs
Notion sync02:00 today27 entriesLogs
Apple Health3 days ago28 daysFix
TripIt feed06:00 today5 tripsLogs
Bank statementsPhase 2·
10

Ask

Plain-English questions across every area, answered from your own records with the sources linked.

Do I sleep worse in months I travel more?
Yes, slightly. In months with 7+ nights away your average sleep was 6.1h, against 6.8h in months at home, across the 34 months with data.
Sleep · 34 monthsTrips · 2023 to 2026
Who haven't I talked to this year that I used to see often?
Four people you saw monthly in 2024 and not at all in 2026. Want the list?

D4

ROI Determined

Skipped for this brief. This is a personal system, not a business case.

D5

Deployment Plan

Built into the existing davehajdu.com Next.js app under /life, backed by a new Supabase project. Shipped in three phases, each usable on its own.

Where it runs

  • App: davehajdu.com/life, inside the current Next.js 16 site on Vercel
  • Database: new Supabase project dave-life, Singapore region, separate from the site's inquiry database
  • Files: private Supabase storage bucket, short-lived signed links only
  • Schedules: Vercel cron for nightly and monthly jobs, Apps Script triggers for Gmail
  • Ship flow: feature branch → PR → merge to main → Vercel deploys automatically

Security

  • One login: only Dave's email can sign in, by emailed link
  • Every page and API route checks the session on the server, not only at the edge
  • Row-level security on every table, limited to the owner
  • Ingest endpoints accept only signed requests with a shared secret
  • /life is hidden from search engines, the sitemap and robots.txt
  • No bank or service passwords stored anywhere

Phases

Phase 1 · The loop

Now

Frame, plumbing, Direction, Mind, Body, Places

  • Database, security, login
  • Sources, raw inbox, review inbox
  • Notion import and nightly sync
  • Apple Health daily sync
  • Gmail travel sweep and 20-year backfill, trip builder
  • Home, monthly review, area pages, timeline, travel, Ask

Phase 2 · People and money

Next

People, Money, Work, Admin

  • Contacts, calendar meetings, LinkedIn import
  • Contact intervals and weekly nudges
  • Bank, card, brokerage and loan statements, net worth
  • Career history
  • Documents, expiry dates, renewal reminders

Phase 3 · Memory

Later

Legacy, Time, the rest of Mind

  • Google Photos curation by trip and month
  • Forever app chapters, family history
  • Calendar time by area
  • Books, highlights, courses
  • Maps Timeline places

Definition of Done · Phase 1

Phase 1 is finished when all of these are true on production, checked by Dave.

  1. Locked down. Logged out, every /life page redirects to login and every /life API route returns 401. A second Google account cannot sign in. The public key reads zero rows from every table. Supabase's security advisor reports no issues.
  2. Notion is in. Every journal entry and forum update is imported, each journal entry holds only that day's writing, and rerunning the import creates zero duplicates. An edit in Notion appears in /life by the next morning.
  3. Five years of reviews. Every forum update since 2021 appears as a monthly review with its scores and one word, and bad values were resolved through the inbox, not silently.
  4. Body flows. Apple Health data has arrived every day for 14 consecutive days, and weight, workouts and sleep chart on the Body page.
  5. Travel is complete. The Gmail backfill has run back to 2006. Every trip in the TripIt feed exists in /life with matching dates and flights. A new booking email appears as a trip within an hour, and a cancellation removes it.
  6. The review writes itself. On December 1, the November review draft is waiting with numbers and highlights for every Phase 1 area, and finishing it takes under 15 minutes.
  7. Questions get answered. Ask correctly answers, with sources: "When was my knee surgery?", "How many times have I been to Australia?", "What word described my month in October 2024?" It cannot change any data.
  8. Sources are visible. Every Phase 1 source shows its last run on the Sources page, and a failed run shows as a warning within a day.
  9. Works on a phone. Home, review, travel and Ask are usable at 375px wide.
  10. Shipped properly. Type check and build pass, each slice merged through a reviewed PR, deployed through git push.

Open decisions

QuestionDefault if not decided
Which wearable, if any, beyond Apple Health?Apple Health only in Phase 1
Monthly review: replace the Notion EO template, or feed it?Feed it: /life drafts, "Copy as EO update" exports
Trips older than the mailboxManual records only, no email backfill
Where nudges are deliveredWeekly email to the owner