You have a spreadsheet with a tab per protocol. A notes app with a running list of what you took. A wearable app that knows your HRV and nothing about your stack. Three months in, you cannot answer the only question you started this for: did any of it do anything? The data exists. It is just scattered across four places that do not share a timestamp, and the version in your head has already started rewriting itself. World's Best Tracker is one log for what you take, how you feel, how you sleep, what you train and what you spend, built by people who decided a number gets shown with where it came from.
You are not lazy. You have logged for months. The problem is the shape of what you wrote down.
"Felt kind of flat today" is a sentence, not data. You cannot line it up against the week you doubled the dose. Six months of honest notes give you one output: a vague memory that spring was worse than summer.
So the vocabulary is fixed. A feeling is a coded id plus an intensity from 1 to 5. There are 58 of them across 11 categories, from energy and mood to digestive, cardio and skin.
What you take is structured the same way: category (Medication, Supplement, Peptide, Other), delivery route, cadence. And the day you took more or less is a titration, not an edit. In a spreadsheet you overwrite the cell and the history is gone. Here it is a multiplier factor plus one of 10 fixed reasons, and it never rewrites the blueprint. Zero is excluded: a dose of nothing is a skip, a different event, and it shows up as a day with no log. The reason chips reorder toward the direction you dialled but never filter, because a form that second-guesses you teaches people to stop logging honestly.
A dose log is worthless alone. The comparison is the experiment, and it needs one clock.
Sleep goes in as absolute bedAt and wakeAt timestamps. Duration is derived, never stored, so it cannot disagree with them. If a wearable already reported that night, the manual logger steps aside.
Food goes in with meal slot, name, brand, servings and full per-serving macros. Type or paste the barcode, or search by name, and the lookup runs cache first, then Open Food Facts, USDA FoodData Central and NIH DSLD. There is no live camera barcode decoder: in the cabinet you photograph a label and OCR lifts the digits, and in the food diary you type them.
Training goes in set by set: PRs off an Epley 1RM estimate, and a spoken set like "back squat 225 for 5" transcribed by your phone's own dictation and parsed on-device, no model call, no round trip to our server.
Recovery goes in as 26 modalities across 7 families, and none get a half-life or a decay curve, because they are not pharmacology. Cost goes in too: price paid, cost per serving, cost per milligram.
Effort is the denominator. Here is what arrives without your typing.
Strava: implemented. OAuth with read and activity:read_all, up to 5000 activities, full history on the first sync, refreshed every time you open the app.
WHOOP: implemented, over signature-verified webhooks. Recovery score, HRV RMSSD, resting heart rate, SpO2, sleep minutes and efficiency, workout strain and heart rate. There is no live stream: push lands within minutes of WHOOP finishing its processing.
Oura: implemented, polling only. It pulls when you connect it and whenever you tap Sync now. No webhooks, deliberately: the verification handshake could not be confirmed against live docs, and guessing at a security handshake ships something broken.
Google Health v4 for Fitbit, Pixel Watch and Wear OS: built and working, closed to new connections behind an annual third-party CASA assessment at $500 to $5,000 a year.
Garmin: a Connect IQ watch app that pairs by code, pulls today's schedule and posts a dose from your wrist. It is sideloaded today rather than installed from the store, and it does not read Garmin Connect activity, sleep or heart rate.
Two devices catching one session merge inside a 5-minute window, both credited. Two that report the same day and disagree stay separate, because averaging them invents a number neither measured.
Anything with a chat box will happily tell you a half-life. Most are making it up.
The compound lookup prompt orders the model to return null for any field it is not confident about, and forbids guessing, estimating, approximating and inferring. Every AI-produced field is stamped source:'ai' and shown as unverified. In the pharmacology view every half-life carries a provenance chip: with no citable source it reads "WBT reference", with one it names the FDA label and links it.
Patterns are computed in code before a language model sees them. The model only phrases what the code found, with its n attached. A time-of-day cluster needs at least 5 logged events for that feeling, with 4 or more inside one 3-hour band holding at least half of them. Below the thresholds you get nothing. Not a cheerful "nothing to report". Nothing.
It will not give you dosing advice, a diagnosis, or a start-stop recommendation. That is a hard instruction to the assistant, and the daily check-in additionally runs a post-model regex screen for dosage-change, start-stop and diagnosis phrasing, swapping in the plain computed sentence when one trips. Check-in suggestions are scoped to timing and rest: never an amount, never something new, never stopping. In conversation it may tell you what a named public source says about a supplement or a lifestyle change, always attributed, never about a prescription medication.
There is no card to start.
Free gives you 25 cabinet items, 60 label scans a month, 40 assistant messages a day and 60 hand-logged workouts a month. They were raised on 2026-08-15, up from 5 cabinet items, 15 scans a month and 10 assistant messages a day, for one stated reason: so a real week of tracking fits inside Free. The workout meter came a day later, and it started at 60.
Plus is $2.99: the cabinet and workout caps go, scans rise to 200 a month. Pro is $7.99: scans unlimited, 400 assistant messages a day. Nobody sells you "unlimited AI": even Pro carries a ceiling, and the code says why, an unbounded assistant is an unbounded bill. Wearable-synced workouts never count against any meter.
The paid tier is ceiling, not features. Scans and assistant messages are the two that actually stop you, and the two the paid tier lifts.
What you are afraid of, handled. Billing stores a customer id and a tier, no line items, no product names. Ad pixels get three standard event names, nothing about meds, doses or feelings. Your OAuth tokens are unreadable by every client including you. The app never asks for your location on its own.
What is not true, said plainly: this is not a local-only app. Your logs live in Firestore on Google Cloud, each assistant turn sends a bundle of them to Gemini, and platform admins have cross-account read, blocked from writing. It is not HIPAA covered.
Every week you do not log in a structured format is a week you cannot analyse later. Nothing recovers it. Start the log.
Yes. Peptide is a first-class category on a blueprint, alongside Medication, Supplement and Other, with delivery methods including Injection IM, SubQ and IV, Sublingual, Troche, Nasal and Topical (src/types.ts:104-128, src/components/BlueprintWizard.tsx:27-40). The assistant is under a hard instruction that it is not a medical professional and must never give dosing advice, diagnoses, or tell you to start, stop or change anything (server.ts:3041). On top of that instruction, the daily check-in message runs through a post-model regex screen for dosage-change, start/stop and diagnosis phrasing, and swaps in the plain computed sentence when one trips (server-lib/concierge.ts:82-107, server.ts:4101). You set the protocol. It records it.
That is a titration, and it is a first-class record rather than an edit. It stores a multiplier factor plus one of 10 fixed reasons and an optional note, and it never rewrites the blueprint (src/types.ts:144-148, src/lib/titration.ts:45-74). Factors are clamped between 0.05x and 10x, and zero is excluded, because a dose of nothing is a skip, which is a different event from an adjustment (src/lib/titration.ts:103-110). A skipped dose shows up as a day with no log, and that is what the adherence view counts. The reason chips reorder toward the direction you just dialled but never filter, and every reason stays available, because being second-guessed by a form is how you teach someone to stop logging honestly (src/lib/titration.ts:38-42, :63-66).
Strava, WHOOP and Oura are implemented. Strava pulls your full history on the first sync, up to 5000 activities, and refreshes itself every time you open the app (server-lib/strava.ts:33-138, src/App.tsx:2565). WHOOP pushes recovery score, HRV RMSSD, resting heart rate, SpO2, sleep metrics and workout strain over a signature-verified webhook, arriving within minutes after WHOOP processes a session, not live (server-lib/whoop.ts:10-13, :223-306). Oura is polled rather than pushed: it syncs when you connect it and whenever you tap Sync now in Settings, covering readiness and contributors, sleep score and stages, average HRV, lowest heart rate, activity, stress and workouts (server-lib/oura.ts:131-251). Anything a device does not report stays null rather than being estimated.
Not today. The Google Health API v4 integration is built and working, but new connections are closed because every googlehealth scope is restricted and requires an annual third-party CASA security assessment costing $500 to $5,000 a year (src/components/SettingsProfileScreen.tsx:637-649, server-lib/googleHealth.ts:60-66). Accounts that connected before the pause keep syncing; new users see a card to vote for the integration. WHOOP, Oura and Strava connect today.
The design is built to prevent that. The compound lookup prompt orders the model to return null for any field it is not confident about, and forbids guessing, estimating, approximating and inferring; every AI-produced field is stamped source:'ai' and shown as unverified, never dressed up as a catalog value (server.ts:3239-3268, src/lib/compoundLookup.ts:30-37). In the pharmacology view every half-life carries a provenance chip naming where it came from, reading 'WBT reference' when there is no citable source, and openFDA can upgrade a catalog value to an FDA label with a URL (src/lib/provenance.ts:15-31). The one place estimation is allowed is macros for food you describe in conversation, and those are marked as estimates you can edit on the confirmation card (server.ts:3054).
Free defaults to 25 cabinet items, 60 label scans a month, 40 assistant messages a day and 60 hand-logged workouts a month (src/lib/limits.ts:43-47). Those numbers were raised on 2026-08-15, up from 5 cabinet items, 15 scans a month and 10 assistant messages a day, specifically so a real week of tracking fits inside Free; the workout meter arrived a day later and started at 60 (src/lib/limits.ts:26-42). Plus is $2.99 and lifts the cabinet and workout caps entirely while raising scans to 200 a month; Pro is $7.99 and makes scans unlimited with 400 assistant messages a day (server-lib/billing.ts:47-53, src/lib/limits.ts:43-47). Scans and assistant messages are the two meters enforced server-side, because they are the two that cost real money to serve. Wearable-synced workouts never count against the workout meter at any tier (src/lib/limits.ts:27-29).
You, anyone you explicitly grant a care link to, and platform admins, who have cross-account read and are blocked from writing by rule, because an admin silently editing someone's medication record is a worse failure than reading one (firestore.rules:20-32). A signed-in account stores to Firestore on Google Cloud, and each assistant turn sends a bundle of your real logs to Gemini to answer (src/App.tsx:809-940). Ad pixels get three standard event names and nothing about your health (src/lib/analytics.ts:1-4), billing stores only a customer id and a tier (server-lib/billing.ts:15-16), and your OAuth tokens are unreadable by every client including you (firestore.rules:171-174). This is not a local-only app and it does not claim to be.
WorldsBestTracker is a record-keeping tool. It is not a medical device, it does not diagnose,
and it does not tell anyone what to take. Always talk to your own clinician about your treatment.
Home ·
Demo ·
Privacy ·
Terms ·
[email protected]