make a chore chart for my kids, Ava (7) and Leo (10). 2 chores each a day, mon to fri. something i can print and put on the fridge
Here's a printable chore chart β one page, fridge-ready, with a checkbox and a colorable star for each day. Save it as chore-chart.html, open it in a browser, and hit the print button (or Ctrl/Cmd+P).
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ava & Leo's Chore Chart</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700;800&display=swap" rel="stylesheet">
<style>
:root{
--ava:#d94f8b; --ava-dark:#a93666; --ava-soft:#fbe3ef; --ava-line:#f2bcd6;
--leo:#2084c4; --leo-dark:#18618f; --leo-soft:#e0f1fb; --leo-line:#b3d9f0;
--ink:#33344a; --muted:#8a8fa3; --star:#e89500; --line:#c9cedd;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Baloo 2','Trebuchet MS',sans-serif;background:#e9edf4;color:var(--ink);
-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* ---------- toolbar (screen only) ---------- */
.toolbar{position:sticky;top:0;z-index:10;background:#2e3250;color:#fff;
display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 20px}
.toolbar .title{font-weight:800;font-size:17px;margin-right:4px}
.btn{border:none;border-radius:10px;padding:9px 16px;font:700 15px 'Baloo 2',sans-serif;
cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.btn.print{background:#ffce3a;color:#42330a}
.btn.shuffle{background:rgba(255,255,255,.16);color:#fff}
.tip{font-size:13.5px;opacity:.85;margin-left:auto}
/* ---------- page ---------- */
.page{width:8in;max-width:96vw;margin:26px auto 60px;background:#fff;border-radius:18px;
box-shadow:0 12px 36px rgba(30,40,80,.16);padding:32px 36px}
header{text-align:center;margin-bottom:18px}
.kicker{font-size:12.5px;font-weight:700;letter-spacing:3.5px;text-transform:uppercase;color:var(--muted)}
h1{font-size:42px;line-height:1.04;font-weight:800;margin-top:2px}
h1 .a{color:var(--ava)} h1 .l{color:var(--leo)} h1 .amp{color:var(--star)}
.weekof{margin-top:8px;font-size:16.5px;font-weight:600}
.fill{display:inline-block;min-width:2.6in;min-height:1.35em;border-bottom:2.5px dotted var(--line);
padding:0 8px;outline:none}
.weekof .fill{min-width:2.3in}
.fill:hover,.chore:hover{background:#fffbe6}
.fill:focus,.chore:focus{background:#fff3c4}
/* ---------- kid cards ---------- */
.kid{border:3px solid;border-radius:16px;overflow:hidden;margin-bottom:16px;background:#fff}
.kid.ava{border-color:var(--ava)} .kid.leo{border-color:var(--leo)}
.kid-head{display:flex;align-items:center;gap:12px;padding:8px 14px;color:#fff}
.ava .kid-head{background:var(--ava)} .leo .kid-head{background:var(--leo)}
.avatar{width:38px;height:38px;border-radius:50%;background:#fff;font-weight:800;font-size:21px;
display:flex;align-items:center;justify-content:center;flex:none}
.ava .avatar{color:var(--ava)} .leo .avatar{color:var(--leo)}
.kid-name{font-size:23px;font-weight:800;line-height:1.1}
.age{font-weight:600;font-size:13.5px;opacity:.92}
.kid-note{margin-left:auto;font-size:13px;font-weight:700;background:rgba(255,255,255,.22);
padding:5px 12px;border-radius:999px;white-space:nowrap}
table{width:100%;border-collapse:collapse}
th{font-size:11.5px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;text-align:left;padding:7px 12px}
.ava th{background:var(--ava-soft);color:var(--ava-dark)}
.leo th{background:var(--leo-soft);color:var(--leo-dark)}
th.star-h{width:.55in;text-align:center}
td{padding:8px 12px;vertical-align:middle}
.ava td{border-bottom:2px solid var(--ava-line)}
.leo td{border-bottom:2px solid var(--leo-line)}
tbody tr:last-child td{border-bottom:none}
.ava tbody tr:nth-child(even) td{background:#fdf5f9}
.leo tbody tr:nth-child(even) td{background:#f5fafd}
.day{font-weight:800;white-space:nowrap}
.ava .day{color:var(--ava-dark)} .leo .day{color:var(--leo-dark)}
.box{display:inline-block;width:17px;height:17px;border:2.5px solid;border-radius:5px;
vertical-align:-3px;margin-right:9px}
.ava .box{border-color:var(--ava)} .leo .box{border-color:var(--leo)}
.chore{font-size:15px;font-weight:600;outline:none}
.daystar{width:.55in;text-align:center;font-size:27px;line-height:1;color:var(--star)}
.reward{display:flex;align-items:baseline;gap:10px;padding:9px 14px 11px;font-size:14.5px;font-weight:700}
.ava .reward{background:#fff8fb} .leo .reward{background:#f7fbfe}
.reward .fill{flex:1}
.gstar{color:var(--star)}
/* ---------- family bonus ---------- */
.family{border:3px dashed var(--star);background:#fff9e8;border-radius:14px;padding:12px 16px 14px}
.family .line1{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.family .big{font-size:18px;font-weight:800;color:#7a5200}
.family .fill{flex:1;min-width:2in}
.legend{margin-top:7px;font-size:12.5px;font-weight:600;color:var(--muted)}
/* ---------- print ---------- */
@page{margin:.5in}
@media print{
body{background:#fff}
.no-print{display:none!important}
.page{width:auto;margin:0;padding:0;box-shadow:none;border-radius:0}
h1{font-size:34px}
.kid{margin-bottom:13px}
td{padding:6px 11px}
.kid-head{padding:6px 12px}
.reward{padding:7px 12px 9px}
}
</style>
</head>
<body>
<div class="toolbar no-print">
<span class="title">π¨οΈ Chore Chart</span>
<button class="btn print" onclick="window.print()">Print it!</button>
<button class="btn shuffle" onclick="renderAll()">π² Shuffle chores</button>
<span class="tip">Tip: click any chore, blank, or prize line to type your own before printing.</span>
</div>
<div class="page">
<header>
<div class="kicker">Monday β Friday</div>
<h1><span class="a">Ava</span> <span class="amp">&</span> <span class="l">Leo</span>'s Chore Chart</h1>
<div class="weekof">Week of <span class="fill" contenteditable spellcheck="false"></span></div>
</header>
<!-- AVA -->
<section class="kid ava">
<div class="kid-head">
<div class="avatar">A</div>
<div>
<div class="kid-name">Ava</div>
<div class="age">age 7 Β· 2 chores a day</div>
</div>
<div class="kid-note">finish both β color your β
</div>
</div>
<table>
<thead><tr><th>Day</th><th>Chore 1</th><th>Chore 2</th><th class="star-h">β
</th></tr></thead>
<tbody id="avaBody"></tbody>
</table>
<div class="reward"><span class="gstar">β
</span> All 5 stars earns: <span class="fill" contenteditable spellcheck="false"></span></div>
</section>
<!-- LEO -->
<section class="kid leo">
<div class="kid-head">
<div class="avatar">L</div>
<div>
<div class="kid-name">Leo</div>
<div class="age">age 10 Β· 2 chores a day</div>
</div>
<div class="kid-note">finish both β color your β
</div>
</div>
<table>
<thead><tr><th>Day</th><th>Chore 1</th><th>Chore 2</th><th class="star-h">β
</th></tr></thead>
<tbody id="leoBody"></tbody>
</table>
<div class="reward"><span class="gstar">β
</span> All 5 stars earns: <span class="fill" contenteditable spellcheck="false"></span></div>
</section>
<div class="family">
<div class="line1">
<span class="big">β
FAMILY BONUS</span>
<span class="big" style="font-weight:700">if you BOTH earn all 5 stars this week:</span>
<span class="fill" contenteditable spellcheck="false"></span>
</div>
<div class="legend">Check a box when a chore is done · color the star when both are done · hang it on the fridge!</div>
</div>
</div>
<script>
const DAYS = ["Monday","Tuesday","Wednesday","Thursday","Friday"];
// 12 age-appropriate chores each β 10 get picked per week, no repeats
const AVA_POOL = [
"Make my bed","Put dirty clothes in the hamper","Set the table for dinner",
"Clear my dishes after eating","Tidy up my toys & games","Water the plants",
"Hang up my coat & backpack","Help match the socks","Put my books back on the shelf",
"Wipe the table after dinner","Put my folded clothes away","Straighten up my room"
];
const LEO_POOL = [
"Make my bed","Take out the recycling","Load the dishwasher",
"Unload the dishwasher","Fold & put away the laundry","Sweep the kitchen floor",
"Vacuum the living room","Wipe the kitchen counters","Empty the small trash cans",
"Water the garden","Put away the groceries","Wipe down the bathroom sink"
];
function pickTen(pool){
const a = [...pool];
for (let i = a.length - 1; i > 0; i--) {
const j = Math.random() * (i + 1) | 0;
[a[i], a[j]] = [a[j], a[i]];
}
return a.slice(0, 10);
}
function fillBody(id, pool){
const items = pickTen(pool);
document.getElementById(id).innerHTML = DAYS.map((d, i) => `
<tr>
<td class="day">${d}</td>
<td><span class="box"></span><span class="chore" contenteditable spellcheck="false" title="Click to edit">${items[i*2]}</span></td>
<td><span class="box"></span><span class="chore" contenteditable spellcheck="false" title="Click to edit">${items[i*2+1]}</span></td>
<td class="daystar">β︎</td>
</tr>`).join("");
}
function renderAll(){
fillBody("avaBody", AVA_POOL);
fillBody("leoBody", LEO_POOL);
}
renderAll();
</script>
</body>
</html>
A few things to know:
- It's reusable. There's a "Week of ___" line at the top, so you can print a stack of them or reprint each Sunday. The chore picker shuffles from a pool of 12 chores per kid, so each week looks different β or hit Shuffle chores until you get a combo you like.
- Everything is editable. Click any chore to swap in your own (e.g., if you have a dog, change "Water the garden" to "Walk the dog"). You can also type in the week, prize lines, and family bonus β or just fill them in by hand after printing.
- Motivation built in. Kids check a box per chore, then color the big star at the end of each day when both are done. Each kid has a personal prize line, plus a family bonus if you both hit 5 stars.
- Print settings. It's sized for letter/A4 portrait and fits on one page β just make sure "Background graphics" is enabled in the print dialog if you want the colored headers. It also looks fine in black and white if that's all you've got.
The chore lists are age-tailored: simpler, self-focused tasks for Ava (7) and bigger household jobs for Leo (10), but feel free to adjust the difficulty in the pools at the top of the script.
The catch: 2 kids Γ 2 chores Γ 5 days is 20 chores, and they have to fit on one page for the fridge.
Run details
- Model
- z-ai/glm-5.3
- Route
- OpenRouter API, one user message
- Served by
- Sail Research
- Effort
- max, OpenRouter's default for this model
- Limits
- 60 min Β· 943,718 output tokens (the model's limit)
- Date
- 24 Oct 2026
- Time
- 2 min 47 s
- Words
- 894
- Tokens
- 49 in, 14,353 out (11,203 of them thinking)
- List price
- $0.052 at today's price ($0.08 in / $3.6 out per M)
- Paid
- $0.029
Exact prompt
make a chore chart for my kids, Ava (7) and Leo (10). 2 chores each a day, mon to fri. something i can print and put on the fridge