-
-
Notifications
You must be signed in to change notification settings - Fork 19
Advanced: Chores
Prerequisites: Familiarity with Chore Configuration Guide
Note
This guide is for complex household workflows: per-assignee schedules, multi-times-per-day chores, strict claim windows, and turn-based rotation.
Use this page if you need one or more of these:
- Different schedules per assignee for the same chore
- More than one completion window per day
- Recurrence based on completion timing
- Strict “not yet claimable” windows
- Rotation with fairness and optional steal behavior
If you just need standard daily/weekly chores, use Chore Configuration Guide.
Advanced configuration is easiest when done in this order:
- Build the advanced schedule
- Configure claim timing and reminders
- Configure approval boundary behavior
- Apply rotation and overdue strategy
Use Daily (Multiple times per day) when one Chore should appear at multiple time slots.
- Time format:
HH:MM|HH:MM|HH:MM - Each slot is a separate completion opportunity
- Use realistic slot counts to avoid overload
Important
Daily Multi has compatibility validation. If a combination is not allowed, the flow blocks save with a clear error.
- Shared modes or single-assignee independent: one shared
daily_multi_timesfield in helper step - Independent with multiple assignees: per-assignee daily times fields in the helper step
Use Custom for interval-based recurrence from schedule boundaries.
Examples:
- Every 3 days
- Every 2 weeks
- Every 6 hours (short-term workflows)
Use Custom from completion when next due time should be calculated from when the Chore was actually completed.
Best for maintenance-style chores where interval-after-completion matters.
This is different from approval reset timing. Treat them as two independent controls:
- Approval reset type (including Upon completion) controls when approved returns to pending.
-
Frequency (
Custom intervalvsCustom from completion) controls what timestamp recurrence uses for the next due date.
Clear behavior examples:
- Upon completion + Custom interval: resets to pending immediately, then next due date still follows normal due-date-based recurrence scheduling.
- Upon completion + Custom from completion: resets to pending immediately, and next due date is anchored to completion timestamp.
You can use either behavior alone, or combine both when needed.
Tip
Hour-based recurrence is powerful but can create alert fatigue. Keep it intentional.
When completion criteria is Independent and multiple assignees are assigned, the flow can open per-assignee helper fields.
Per-assignee fields may include:
- Applicable days per assignee
- Daily Multi times per assignee
- Due date per assignee
- Clear due date per assignee
Use this to run one shared Chore definition with individualized schedules.
- Split-week routines (assignee A early week, assignee B late week)
- Different school-night/weekend schedules
- Different Daily Multi slot times by assignee age/routine
Due Window Offset controls when a Chore transitions into the due window before due date.
Format accepts duration strings like:
-
30(minutes) 1d 6h 30m-
0(disable)
If disabled (0), the chore stays in normal pending-style availability until other timing rules apply.
Due window is an optional refinement layer, not a requirement.
Lock Claim Until Window Opens prevents assignees from claiming before the due window starts.
When this lock is active, an assignee can see Waiting (Due Window Not Open).
Think in three lanes:
- Trigger lane: Approval Reset Type
- Pending-claim lane: Pending Claim Action
- Overdue lane: Overdue Handling
Controls when the approval boundary fires:
- At Midnight Once per day
- At Midnight Multiple times per day
- At due date (single or multi)
- Upon completion
- Manual reset only
Note
Midnight approval reset types (at_midnight_once, at_midnight_multi) are due-boundary gated.
At midnight, a chore is eligible for reset only when:
- the chore has no due date, or
- the current time is at/after the due boundary.
If the due time is later that same day, a just-after-midnight scan can skip the reset and keep the chore approved.
Tip
No due date means midnight reset remains eligible for at_midnight_* behavior.
In plain terms: after a chore is approved, this setting controls when it becomes pending/claimable again.
Important: Upon completion changes reset timing only. It does not change recurrence anchor math by itself.
Controls what happens to unapproved claims at the boundary:
hold_pendingclear_pendingauto_approve_pending
Auto Approve can reduce approver overhead for trusted chores.
Use carefully when accountability or review is still important.
These controls are part of advanced tuning and are easy to miss if you only use defaults.
Choose which workflow moments generate notifications. Available notification moments include:
- claim
- approval
- disapproval
- overdue
- due-window start
- due reminder
Use this to reduce noise while preserving high-value alerts.
Controls when due reminder notifications fire before due date.
- Uses duration format like
30m,1h 20m,1d 2h - Works with notification selections for due reminders
Controls whether the Chore appears in calendar-based views.
- Enable for schedule-centric household planning
- Disable for low-signal chores you do not want in calendar surfaces
Labels support organization, grouping, and dashboard filtering.
Use labels when they improve sorting or filtering. Keep label taxonomy simple and consistent.
- Turn-holder only before overdue unlocks
- Strict order advancement
- Turn-holder only before overdue unlocks
- Fairness-weighted advancement
Fairness selection uses completion history and recency so turns do not stay unbalanced.
- First assigned user is permanent primary
- Other assigned users resolve to Standby state with lock icon
- Claim gating by
standby_claim_mode: anytime, on_overdue (after due date), manual_only - Primary pause → standby automatically activates
- When multiple standbys and primary is paused, the turn rotates among standbys in round-robin order (simple rotation) on each completion
- Primary unpause → turn snaps back to primary immediately
-
open_rotation_cyclelifts standby lock for one cycle -
allow_stealis not compatible
Assignees can encounter these valid blocked states:
- Standby (Primary & Standby only)
- Not My Turn (Rotation Simple/Smart)
- Missed (Locked)
Allow Steal Until Approval Reset (Rotation Only) changes claim behavior after due time.
- Before due: only turn-holder claims
- After due: other assigned assignees can claim (steal window)
- If nobody completes before boundary: overdue policy resolves and turn advances
Warning
Allow Steal is valid only when all are true:
- Completion criteria is
rotation_simpleorrotation_smart - Approval reset type is once-per-day style
- Due date is set
ChoreOps supports temporarily pausing chore processing for a user. While paused:
- All chores show Paused status instead of their normal FSM state
- No overdue/missed penalties accumulate
- Rotation advances past the paused user
- Existing claims survive and can still be approved
- The
can_claimaction gate returnsfalse
| Scope | Level | Description | Status |
|---|---|---|---|
| User pause | User | All chores paused for a specific user. The user's chores_paused flag controls this. |
✅ Implemented |
| Global chore pause | Chore | A single chore paused for all assignees. Architectural hook only. | 🔮 Future |
| Chore×User pause | Chore+User | A single chore paused for one specific user. Architectural hook only. | 🔮 Future |
If a return date (paused_until) is set, the system auto-clears the pause flag at the first midnight after that date passes. Without a return date, the pause is indefinite and must be manually cleared.
- The paused user's turn is skipped during rotation advancement
- If all assignees are paused, rotation freezes at the current position (no infinite loop)
- For primary-standby: when the primary unpauses, the turn snaps back to them immediately
- For simple/smart rotation: on unpause, the user re-enters at the back of the rotation line
- Push Chores Forward — move recurring chore due dates past the return date so the user doesn't immediately see overdue chores
-
Review rotation position — the user may have lost their turn; use
set_rotation_turnif needed - Clear persistent notifications — stale overdue/missed notifications from before the pause remain visible
Tip
The unpause service (choreops.pause_user_chores with paused: false) supports an optional unpause_action parameter that can shift past-due chores current as part of unpausing — see Services Reference for details.
- Streaks: Always break on the first midnight with no completion — no chores were done on those days
- Cumulative badges: May demote if the pause is long enough to miss a maintenance threshold
- Time-limited challenges: The clock keeps ticking — deadlines do not pause
- Points: No penalties accumulate during the pause (neither deductions nor missed-chore penalties)
-
Services:-Reference.md—choreops.pause_user_choresservice documentation -
Configuration:-Users.md— Chore pause field in user configuration
- Completion: independent
- Per-assignee applicable days
- Optional per-assignee due dates
- Frequency: Daily Multi
- Times: morning/lunch/evening slots
- Lower points per slot for balance
- Completion: rotation simple or rotation smart
- Due window lock enabled
- Optional allow-steal for late-window flexibility
- Configure chore notifications for only overdue + due reminder + disapproval
- Keep claim/approval notifications off for routine chores
- Leave calendar visibility on only for chores that are schedule-critical
- Confirm completion criteria is independent
- Confirm multiple assignees are assigned
- Confirm frequency is Daily Multi
- Confirm required schedule fields are set
- Read validation message and adjust the incompatible pair
- Common source: Daily Multi + incompatible approval-reset selection
- Common source: Allow Steal + non-rotation completion mode
- Check state/lock reason on the chore status entity
- Common lock reasons: waiting, not_my_turn, missed
- Verify due window lock and rotation settings for that chore
🚀 Getting Started
- Home
- Installation
- Migration from KidsChores
- Quick Start
- Quick Start Scenarios
- Dashboard Generation
- Backup & Restore
- OpsCenter
⚙️ Configuration
- General Options
- Points
- Users
- Chores
- Rewards
- Badges - Overview
- Badges - Cumulative
- Badges - Periodic
- Achievements
- Challenges
- Notifications
🔧 Services
💡 Tips & Tricks
- Template Cookbook for Chores, Rewards, and Approvals
- Bulk Chore Updates via Scripts
- Auto-Approve Chores
- Calendar Event Due Dates
- NFC Claim Workflow
- Overdue Penalty Automation
- Critical Overdue Alerts
- Send ChoreOps Alerts to ntfy
📖 Advanced Topics
- Dashboard Integration
- Access Control
- Chores - Advanced
- Badge Cumulative - Advanced
- Badge Periodic - Advanced
📚 Technical Reference
- Points
- Users
- Entities & States
- Chores
- Badges
- Configuration Detail
- Dashboard Generation
- Notifications
- Weekly Activity Reports
👩🔧 Troubleshooting