Chore Champion — Home Assistant Gamified Chore System
A gamified chore and task management system for kids built on Home Assistant. Delivers daily mission lists driven by school schedule and activity calendar, tracks completion via a gaming-style dashboard, awards XP and maintains streaks, and calculates a weekly allowance based on completion rate. What it does
Reads your family Google Calendar each day to determine what kind of day it is (school day, swim/sport day, Sunday) and builds a task list automatically
Displays tasks on a custom gaming dashboard on the child's phone — tap to complete
Sends WhatsApp reminders via Claude AI with varied, non-robotic phrasing
Parent confirms completion via WhatsApp reply ("champ approved")
Awards XP with streak multipliers, tracks levels, calculates weekly allowance
Rotates through 12 themed seasons (28 days each) with custom artwork
Demo
Chore Champion Dashboard
Prerequisites
Home Assistant (tested on 2026.x)
button-card custom card
lovelace-card-mod custom card
mushroom custom card
Google Calendar integration in HA
Anthropic API key (Claude) for LLM-generated reminder messages
WhatsApp bridge for HA (e.g. ha-wa-bridge)
Points System Category XP Minor tasks (pack bag, gear) 10 XP Standard tasks (homework, uniform) 15 XP Complex tasks (week prep, laptop) 20 XP Daily completion bonus +25 XP Streak Multipliers Streak Multiplier 0–2 days ×1.0 3–6 days ×1.25 7–13 days ×1.5 14+ days ×2.0 Weekly Allowance Completion Amount 100% €8 90–99% €7 75–89% €6 50–74% €4 <50% €0
Week streak bonus: 2 consecutive weeks ≥90% → max €10. 3+ weeks → max €12. Calendar Event Naming
Create recurring events in your family Google Calendar with these exact titles: Event title Purpose swim_champ_morning Morning swim/sport session swim_champ_afternoon Afternoon swim/sport session maths_teacher Tutor visit day
The task engine reads these events daily and generates the appropriate task list. Task Definitions Task ID Label XP lunchboxes Empty lunchboxes 10 sportbags Empty sport bags 10 hang_swim_gear Hang swim gear 10 swim_bag_empty Empty swim bag 10 fresh_sport_bag Fresh sport bag 10 homework Homework 15 school_messages Check school messages 15 uniform_prep Prepare uniform 15 pack_bag Pack school bag 15 wash_hair Wash hair 15 dishwasher Empty dishwasher 15 laptop_charge_pack Charge and pack laptop 20 maths_teacher Maths teacher prep 20 school_week_prep Prepare for school week 20 Installation
- Create Helpers
Create the following helpers in HA (Settings → Devices & Services → Helpers):
Input Booleans (Toggle):
champ_daily_confirmed
champ_confirmation_reminder_sent
champ_task_lunchboxes
champ_task_sportbags
champ_task_homework
champ_task_school_messages
champ_task_uniform_prep
champ_task_pack_bag
champ_task_laptop_charge_pack
champ_task_fresh_sport_bag
champ_task_swim_bag_empty
champ_task_hang_swim_gear
champ_task_wash_hair
champ_task_maths_teacher
champ_task_dishwasher
champ_task_school_week_prep
Input Numbers (Number):
champ_points_total (min: 0, max: 100000)
champ_points_this_week (min: 0, max: 10000)
champ_streak_days (min: 0, max: 365)
champ_streak_weeks (min: 0, max: 52)
champ_weekly_tasks_due (min: 0, max: 100)
champ_weekly_tasks_completed (min: 0, max: 100)
champ_season_number (min: 1, max: 12, initial: 1)
Input Text:
champ_todays_tasks (max: 255)
champ_current_season (max: 50, initial: Season 1: Zero Point)
champ_weekly_tip (max: 255)
input_text.whatsapp_lid_champ — your child's WhatsApp LID
Input Datetime:
champ_last_task_completion
champ_season_start
The dishwasher task requires a smart dishwasher integration. Remove it from the task engine if not applicable.
- Configure WhatsApp
Set input_text.whatsapp_lid_champ to your child's WhatsApp LID. Set parent LIDs in the automation confirmation conditions. 3. Configure Anthropic API
Add to configuration.yaml:
rest_command: anthropic_chat: url: "https://api.anthropic.com/v1/messages" method: POST headers: x-api-key: "YOUR_API_KEY" anthropic-version: "2023-06-01" content-type: "application/json" payload: "{{ payload }}" timeout: 30
- Add day type selector
The task engine requires input_select.your_day_type with options:
weekday
early_school
weekend
public_holiday
Set this automatically from your workday sensor and public holiday calendar. 5. Add files
Copy chore_champion_automations.yaml contents into your automations.yaml
Copy chore_champion_scripts.yaml contents into your scripts.yaml
Register dashboard in configuration.yaml:
lovelace: mode: storage dashboards: chore-champion: mode: yaml title: Chore Champion icon: mdi:shield-star show_in_sidebar: true filename: dashboards/chore_champion.yaml
Copy chore_champion_dashboard.yaml to /config/dashboards/chore_champion.yaml
Upload season artwork to /config/www/champ_season1.png through champ_season12.png
- Reload
ha core check
Then reload scripts and automations via Developer Tools → YAML. Season Artwork
Generate 12 season hero images (landscape, 16:9, dark background) using an AI image generator. Name them champ_season1.png through champ_season12.png and place in /config/www/.
The system includes 12 themed seasons: 1 Zero Point 2 The Convergence 3 Chrome Storm 4 Neon Bloom 5 Solar Drift 6 Fracture Point 7 The Deep 8 Static 9 Hollow Earth 10 Afterglow 11 Override 12 The Finale Confirmation Flow
Child completes all tasks → parent receives WA: "Champ has completed all tasks. Reply 'champ approved' to confirm."
Parent replies "champ approved"
System awards XP, updates streak, sends WA to child with points summary
Note on presence detection: The task engine and reminders use input_text.champ_confirmed_zone — a dwell-time filtered zone helper that prevents false triggers from GPS drift. If you don't have this, replace all references to input_text.champ_confirmed_zone with states('person.your_child') and compare against 'home'.
Customisation
Add/remove tasks: edit the task list in champ_build_task_list script
Change XP values: edit champ_calculate_points script
Change allowance tiers: edit champ_weekly_payout automation
Add calendar event types: extend the event_summaries logic in champ_build_task_list
Change season length: edit the 28-day check in champ_season_rotation
Known issues
Dishwasher task requires a smart appliance integration — remove from task engine if not applicable
Notification method — the system uses WhatsApp via a bridge; replace whatsapp.send_message with notify.mobile_app_YOUR_DEVICE if you use push notifications instead
License
MIT — use freely, adapt for your family.
Comments