MAJR
Return GoblinDossierDial for curious people.
majr.app ↗ for AI builders.
not at the desk right now · last worked sep 12

lift

a workout tracker that lives in your inbox.

every morning Lift emails you today's workout and what you lifted last time. you reply with what you did, in whatever words you'd use. it logs the workout and writes back. there is no app, no login and no account to make.

  1. 1. an email arrives with today's list.
  2. 2. you reply: "bench 135 3x8, curls 30 3x12".
  3. 3. it logs the sets and replies. reply again to fix anything, or to ask your trainer a question.

in private beta · MAJR

what's new

everything Lift can do, as of Sep 16, 2026.

What Lift can do now

  • Start with nothing but an email address. Your first workout logged becomes that day's exercise list. If you have no history yet, the daily email asks "Did you work out today?" and names both a workout and a rest day as answers, so a day off is something you choose, not something you confess.
  • Log by replying in plain words. Reply with what you did and Lift stores it, then sends a receipt. Reply again to the same email to fix anything; only the exercises you name change.
  • Ask your trainer a question. A reply that asks something gets an answer in the thread and logs nothing, so a question never costs you the day's workout. Bests, trends and cross-workout questions now draw on up to 180 days of your history, not just the last session.
  • Log and ask in the same reply. A reply that reports your sets and also asks to change the routine now does both: the sets are logged and the change is proposed.
  • Change your routine by asking. Ask to move, add or remove an exercise and Lift replies to confirm what it will do. A later reply that agrees applies it. Your logged history is never touched.

Reading your replies

  • Paste the Today list and type your numbers against it. Lift keeps your text and drops only its own quoted lines, whether you write above the quote, below it, or fill in the list itself.
  • Say which day a workout happened. If you log on a rest day or a day late, tell Lift the day and it files the workout there.
  • Skip a day in plain English. "Rest today" advances just like the workout would, with your reason above the confirmation.

Workouts that are not weight times reps

  • A time counts as a workout. "Walk 20 min" or "Plank 45s" is recorded as one set of that length. Give a time, not a distance: "ran 2 miles" is left out, and "ran 2 miles in 18 min" is recorded as the 18 minutes. Lift never invents a weight or a rep count you did not give.
  • Rotate in a new exercise anytime. A lift not in your routine is logged, kept, and builds its own history when you do it again.

The daily email

  • Built to read and copy on a phone: a plain "Today" list, one exercise per line, then "Last time" with the numbers first and the date in parentheses.
  • Exercise names are bold. Sets with the same weight and reps show as "80 lb 3 x 12"; uneven sets list each set.
  • An exercise you did without counting shows its real last date.
  • On a rest day Lift sends a short rest note. On an off day it sends nothing, so a two-day-a-week routine does not fill your week with rest emails.

Reading numbers correctly

  • "3 x 12" means sets by reps. A lone number after the weight, like "15lb 3", means three sets.
  • Two lifts one letter apart, like Hip adduction and Hip abduction, are kept distinct rather than corrected into each other.

Your trainer

  • Direct and no-nonsense. Short answers, numbers first.

Import your history

  • Forward old workout emails to import@ and Lift files each as a workout, dated from the email. Re-forward the same day to update it. A forwarded thread you replied to counts as one workout. Reply to an import's receipt to correct it without touching today's email.

Correction fixes

  • A late-arriving copy of an older email no longer reverts a correction you already made.
  • A clean numeric fix no longer resurrects an old "unclear" note; your own notes on a set stay put.

drafted from 60 commits (60a40db..040ba4d) by MAJR Dispatch, then read against the code and approved by hand