Task Card Anatomy
A task card is the rectangular cell that represents one task in the UI — on the Pulse dashboard, in the Operations Tasks list, and in the per-reservation detail view. Every field on the card surfaces a different piece of the underlying task row + its checklist items.
What's on the card
┌─────────────────────────────────────────────────────────────┐
│ Pre checkout guest reminder · AUTO · 19:00 ⚠ condition not met │ ← Eyebrow line
│ Castle&River Luxe-Vydrica · Johanna │ ← Reservation line
│ │
│ Auto-fires at 19:00 today · sends checkout message to │ ← Description
│ Johanna about reservation checkout details at 18/05/2026. │
│ │
│ Checklist: │
│ ☐ Auto-complete at 19:00 (when 1 condition met) │ ← Checklist item
│ │
│ [ Send now ] [ Snooze ] [ Postpone ] [ Reassign ] │ ← Actions
└─────────────────────────────────────────────────────────────┘
The eyebrow line
The top line carries the most operator-critical metadata:
- Task name (resolved from template, localised) — "Pre checkout guest reminder"
- Flow marker —
AUTOmeans this card auto-resolves; absence means manual-only - Scheduled fire time —
19:00forscheduled_timechecklist items - Condition status —
⚠ condition not metifnotifyOnNotMetis true and the condition currently fails
Before #214, the scheduled fire time was not shown — it lived only on the checklist item underneath. Operators had to expand the card or SQL-inspect to know when 19:00 was. After #214, the time is in the eyebrow line and visible without expansion.
The reservation line
Property + guest + check-in date — so you know which stay this is for without clicking through.
The description body
A sentence that explains what the task does in plain English. For auto-fire tasks, the sentence now (post-#214) starts with "Auto-fires at HH:MM today/tomorrow/YYYY-MM-DD · …" so the fire time is repeated in narrative form too.
Checklist items
Optional. Some tasks have manual steps the operator/cleaner must check off ("Confirmed door is locked", "Took photo of bedroom"). Auto-resolve tasks also have a special hidden-by-default checklist item that carries the schedule + condition.
Action buttons
- Send now / Mark done (primary, role-dependent label)
- Snooze — push due date forward
- Postpone — push the scheduled fire time forward
- Reassign — move to another role/teammate
- Cancel — irreversible; see Task List
Why a card might not show what you expect
| Symptom | Likely cause |
|---|---|
| Time field is blank | Pre-#214 regression — verify the deploy includes #214's commit |
Card is Done but no message was sent |
Pre-#180 silent-skip — should now be Failed with reason |
| Condition status shows blocked even though condition looks fine | Likely the canonical-row picker hitting the wrong guest row — see #260 and Send Check-in |
Property name is null in the eyebrow |
#137 — property record was created without a name |
Related issues
- #214 — scheduled fire time + condition status on the card.
- #180 — silent-skip →
failedinstead ofdone. - #172 —
dueDateTimedate-only rendering family (predecessor of #214). - #137 — NULL
propertyName.