What is a Routine
A Routine bundles several Types so you can log them together — one tap, one card in your feed, one row in the matrix view.
A Routine in Kaizendex is a saved bundle of Types that you log together as one session. Instead of tapping six Types one at a time for a workout, you tap one Routine and all six entries appear together — pre-filled with defaults, editable in place.
A Routine is a definition — the choreography. Each time you log it, the resulting session is called a Routine log.
Examples of Routines
Workout routines
- 🦵 Leg day → Squats, Lunges, Calf raises, Hamstring curls
- 💪 Push day → Bench press, Overhead press, Dips, Tricep extensions
- 🤸 Full body → Pull-ups, Push-ups, Squats, Plank
- 🏃 Cardio session → Run, Heart-rate avg, Calories
Morning routines
- ☀️ Morning vitals → Weight, Mood, Sleep hours, Resting heart rate
- 🧘 Morning ritual → Meditation, Gratitude journal, Water
- 💊 Daily supplements → Vitamin D, Magnesium, Omega-3
Evening routines
- 🌙 Wind-down → Reading minutes, Screen time, Mood, Tomorrow's plan
- 📓 Journal & review → Diary entry, Wins, Lessons, Tomorrow's focus
Health check-ins
- 🩺 Weekly check-in → Weight, Body fat %, Measurements, Mood, Energy
- 🍽️ Meal log → Calories, Protein, Carbs, Fat, Hunger before, Fullness after
Work blocks
- 🎯 Pomodoro session → Deep work minutes, Project, Distractions
- 📞 Sales call → Account, Outcome, Next step, Mood
Habit stacks
- 🌅 Wake-up stack → Made the bed, Drank water, Stretched, Read 1 page
The pattern: any time you find yourself logging the same 2-6 Types together repeatedly, that's a Routine waiting to happen.
How Routines work
A Routine has:
- An icon (an emoji or a Lucide icon), a name, and a color (just like Types)
- An ordered list of Types to log together
- An optional per-Type label (e.g. "set 1", "set 2") so the same Type can appear multiple times in the routine
- Optional per-Type default overrides — change a Type's default values just for this routine without touching the Type itself (see Overriding defaults for one Routine below)
When you log a Routine from chat:
- You tap the Routine in the search dropdown.
- Kaizendex writes one Routine log plus one Entry per Type in the bundle — all in a single transaction.
- The feed shows one Routine log card with every child Entry as a row inside it.
- You can edit any Property value on any row in place.
- The whole session can be opened, edited, or deleted as a unit — child Entries follow.
Routine log vs Routine
This is the most important distinction:
- A Routine is the saved definition — "Leg day with these 4 Types in this order."
- A Routine log is one performance of it — "the Leg day session I did at 7am on Tuesday."
You define a Routine once. You log it many times. Each performance is a Routine log.
The matrix view
Each Routine has its own page at /routines/[id] that shows a matrix:
- Rows are your Routine logs, most recent at the top.
- Columns are the Types in the current Routine definition.
- Cells show the headline value of each child Entry — e.g. "12 reps", "78.4 kg".
Empty cells (—) mean you skipped that step in that session. The matrix is the cleanest way to see consistency, progression, and where you slacked off.
Tap any cell to open the underlying Entry in detail.
Creating a Routine
Two ways:
- From chat search. Type a name that doesn't exist yet — the empty state offers Create new routine called "X". You then pick the Types to bundle.
- From the Routines board. Go to
/routines/newand design it from scratch.
Either way you land in the routine builder where you pick the icon, color, name, and the ordered list of Types.
Editing a Routine later
Open /routines/[id] to make changes. The page has three tabs:
- Entries — the matrix of past Routine logs (rows = logs, columns = Types in the current definition).
- Types — rename the Routine, change the emoji, add or remove Types in the bundle, reorder them (drag the handle), expand any Type (the ▸ triangle) to override its default values for this routine, and see a live preview of what one log of the routine looks like.
- Description — a markdown page where you can write what the Routine is for, when you do it, any rules ("warm up first, then squats, no skipping").
Past Routine logs keep their original data. New Types you add show up as fresh columns in the matrix from the moment you add them — older rows display — in the new columns. The Description is per-Routine, not per-log — editing it doesn't change historical logs.
Overriding defaults for one Routine
Every Property can have a default value — the value a new Entry starts with. Push-ups might default to 10 reps, so every Push-ups log you create starts at 10.
But the same Type often belongs in different routines at different intensities. Inside your high-volume Leg day, Push-ups should start at 20 reps, not 10 — without changing what a standalone Push-ups log does.
That's a per-routine default override. On the Types tab, click the triangle (▸) to the left of a Type to expand it. You'll see that Type's fields, each pre-filled with the Type's own default (shown faded to mean "inherited"):
- Edit a field — say, change Repetitions from 10 to 20. The value turns solid and a small badge shows how many fields you've overridden.
- Now every time you log this routine, that Type's Entry starts at 20. A standalone log of the same Type still starts at 10.
- To go back to inheriting the Type's default, clear the field or click the reset (↺) button next to it.
If the Type has a Sub-entries property (like a "Sets" exercise that's born with three sets), that shows up here too — you can set a different default child list for this routine (e.g. 5 sets on Leg day, 3 everywhere else), and reset to inherit the Type's own default at any time.
Overrides are part of the Routine definition, so they apply whether you log from chat, from the feed, or by asking your AI coach to "log my leg day". They're a smarter starting point, not a lock — you can still change any value on the card after logging.
Next
- Logging a Routine — the chat flow + the matrix view in detail
- Properties and the Title — set defaults so Routine logs auto-fill sensibly