Track anything by text message. No app, no login.
Think of it as a notebook that lives in your text messages — every text is saved with the date and time, so you build a history you can look back on — and ask it for summaries any time.
+1 (206) 350-3997Invitation only — you need a join code from someone who already uses it.
Text a measure and a value — your weight, blood pressure, steps, sleep, mood, whatever you're keeping an eye on. It's logged with a timestamp: one line, whenever you want.
weight 178 bp 120 80 steps 8500 mood pretty good
The measure is the first word; whatever comes after it is saved exactly as you typed it — a number, several numbers, or plain words. Nothing to set up.
Text /recent weight — or any measure — and VitalSigns texts your latest entries
back, newest first:
weight (last 3): 178 — Jul 16 08:12 179 — Jul 14 07:55 180 — Jul 10 08:03
It's all there in your texts — nothing to open, nothing to log into.
Text /stats weight and VitalSigns texts back a quick summary of your last 30
days — no spreadsheet, no app:
weight — last 30 days, 28 entries min 176 · max 181 · first 180 · last 178 · mode 178
Want a different stretch? Add a range: /stats steps 7d (7 days), /stats steps 2w (2 weeks), or /stats steps all for everything.
Measures that add up — like steps or miles — show a running sum and average instead:
steps — last 30 days, 28 entries sum 54,200 · average 1,936
Group by day, week, or month. Add by day, by week,
or by month to the end of a /stats message and you get one line per
bucket — newest first:
/stats steps by week steps — weekly sum, last 30 days Jul 13: 54,200 Jul 6: 48,100 Jun 29: 51,700
The word by goes at the very end, after the measure and any range — /stats steps 8w by week. Additive measures show a sum per bucket, others show an
average, and text measures show a count.
Buckets follow your timezone (so a "day" is your day, not UTC). Set it once at vital-signs.billbak.tech → Settings.
Want the whole thing as a file? Text /report weight 30d and VitalSigns emails you
a report — a PDF by default, or add csv for a spreadsheet:
/report weight 30d → PDF, last 30 days /report steps 8w by week → PDF, grouped by week /report steps 8w csv → CSV, last 8 weeks /report bp all → PDF, everything
The PDF lists every entry with its date and time, then the totals for the whole
range at the bottom. Add by day, by week, or by month and
it groups the entries under each period with a running total for that group. The CSV is the same
entries as plain data. Reports go to the email on your account — you'll get a text back the moment
one's on its way.
bp 120 80.bp 120, 80.steps 10,000 — but you never have to; steps 10000 is exactly the
same.mood cloudy, a little off.The measure is only a word, so VitalSigns can track anything you'd jot down over time — not just vitals:
hours 6.5 rainfall 0.4 coffee 3 fillup 11,234 10 54.99
Hours worked, the day's rainfall, cups of coffee, a gas-station fill-up — the same one-line habit, whatever you're tracking.
Everything above works with no setup. If you'd like, you can tell VitalSigns what information belongs in a particular kind of entry — so it can check each one and keep the parts straight. Sign in at vital-signs.billbak.tech and open Measures.
Each part is called a field, and you give it a name, a kind of value, and an optional unit:
| Type | Accepts |
|---|---|
number | Any number, e.g. 98.6 |
whole number | Counts with no decimals, e.g. 12000 |
text | Words, kept as written |
For example, define fillup with three number fields — mileage, gallons, cost —
then text:
fillup 11,234 10 54.99
…and it's checked and stored as those three parts.
If an entry doesn't match, nothing is lost. VitalSigns replies with what it
expected and doesn't save — just send it again. For the three-part fillup above,
texting fillup 10 54.99 (only two values) gets:
"fillup needs 3 values: mileage, gallons, cost. Not saved."
You can also mark a measure as one that adds up over time (like steps or miles) — that's what will drive running totals and averages in reports later.
A measure you haven't defined — or one defined as a single text field — simply keeps whatever you text, exactly as written.
| Command | What it does |
|---|---|
/recent | Show recent entries for a measure, newest first (also /replay). |
/stats | Text back a summary of a measure — add a range like 7d, 2w, or all (default 30 days), and optionally by day/week/month to group it. |
/report | Email yourself a report of a measure — add a range, optionally by day/week/month to group it, and pdf (default) or csv. |
/list | List the measures you've been tracking. |
/save | Save a new value (an explicit alternative to a bare line). |
/help | Get a short reminder of what you can do. |
STOP / START | Stop or resume all messages at any time. |
Do I need an app? No — just the text messaging already on your phone.
iPhone or Android? Either one. If it can send a text, it works.
Is it only for health? No — track anything you like.
VitalSigns is invitation only. When someone invites you, you'll get a join code. Text JOIN <code> to the number above, then reply AGREE to confirm.
Before you reply AGREE, understand what texting means here:
If you're comfortable with that, reply AGREE to finish joining.
Standard message and data rates may apply. Message frequency depends on how often you text
in. Reply STOP to opt out at any time, START to opt back in, and HELP for help. We don't sell your data — this is a personal project, not a
company.