WRITING
I Built My Son an 'Asset Dashboard': 83 House Rules Turned into a Ledger That Goes Up and Down

The problem with stickers and gold stars isn't that they don't work — it's that they don't accumulate.
By sticker seventeen, nobody remembers what the first one was for, let alone whether last week trended up or down. The kid can't see himself getting better; he can only see whether he got today's sticker.
So I turned the whole thing into a ledger — every credit and deduction has a reason, a timestamp, and a running balance, with the grand total sitting at the top like a stock ticker. Now he comes home every day and checks how much he's up.
1. This is what it looks like

The top of the page is a "home" scene — 11 tiers, from a ragged tent all the way to a gleaming palace, and which tier he lives in depends only on total value: earning points upgrades it, spending lets it slip back. No purchases, no unlocks. The line beneath always reads "N points to the next tier," and crossing a tier pops a "🎉 Moving day!" celebration. It's an honest embodiment of wealth — at an age when numbers are still abstract, a house isn't.
Below the home sits the big number: total points, today's gain, the percentage change, the yuan conversion, and an "all-time high" badge that lights up whenever he breaks his own record.
Then comes the thirty-day trend. This line is where the whole thing earns its keep: gaining 10 points today feels like nothing, but watching the line climb from the start of the month feels completely different. And tapping the total value replays it:

Further down, points are broken out by subject — Chinese, math, PE, each in its own column. Whichever bar stays short, he can see it himself without anyone saying a word.
2. How a credit actually gets recorded
Points aren't handed out on a whim. Our family already had a written points chart — Chinese, math, English, science, PE, trumpet, ethics, chores, all the way to "Dad's special award" — with rewards and deductions side by side. I moved that chart into the system wholesale: 83 rules, none changed, none dropped.

Open "award him points" and the first thing you see is a lock. You can read the rules, but you can't record anything until you enter the parent password.

After unlocking, the whole wall opens up. Each rule is a button; one tap records it. The little tags on the buttons say how each rule computes:
| Tag | Meaning | Example |
|---|---|---|
| (none) | Fixed points, one tap | Perfect dictation +10 |
per item | You enter a count | Dictation mistakes −1 each |
you decide | The chart gives a range; you pick within it | Reciting classical poems 10–50 |
calculate | Tiered — fill in the numbers, it computes | Rope skipping, sit-ups, exams |
TV time | Pays out in screen time, not points | New characters learned +1 min / 2 characters |
The calculate kind explains why this is worth building. The original chart lists seven tiers for rope skipping, ending with "no double counting":

Enter "3 sets, 190 per minute" and it computes +120 on its own — and tells you why: the "3 sets at 190+" tier. No flipping through the chart, no mixing up the 180 tier with the 190 tier.
And here is the moment it lands — confetti everywhere, the award floats up, the balance updates on the spot:

3. A ledger that blocks farming and forgets nothing
A points system where you can award yourself points becomes a farming game by day two. So these rules are hard:
| What would happen | How it's handled |
|---|---|
| Kid grabs a logged-in tablet and awards himself points | Awarding requires the parent password, entered fresh every time. His own login can never add a single point |
| Wants to redeem without enough points | Can't. The card shows "N points to go" |
| Farming unlimited points from practice problems | Practice earnings are capped at 30/day on the server, whatever the client claims |
| Submitting an empty quiz | Zero points |
| A mistaken or fat-fingered entry | Every transaction has "undo" — the entry is truly deleted, the points come back, and the curve keeps no scar (a backstage copy is kept for parents to audit) |
| Deductions pushing the balance negative | Allowed — he owes it and earns it back, exactly as the chart intends |
We changed our mind once on undo. The first version used the accountant's approach — reversal entries: never delete, book an offsetting line instead. One day of real use showed the flaw: a mistaken entry and its reversal carve a pair of spikes into the child's trend line, as if he had genuinely swung up and down. Now undo is a true delete (with a backstage "deleted" area kept): the audit trail belongs to the parents; the clean curve belongs to the kid.
And in the other direction, every point is traceable:

Every entry has a time, a reason, and the balance at that moment. Not "you have 1,440 points" but "August 8, Dad's special award, +300, balance went from 1,080 to 1,380."
The balance column isn't stored anywhere — it's summed from the transactions, every time. The ledger and the balance can never disagree, because a ledger that disagrees with its balance is worse than no ledger at all. There are filters for "credits only" and "spending only" — where did this month's points go? One tap.
4. The almost-affordable prize stays in view

Twelve items in the shop, from "one extra cartoon episode" at 150 points to "a short trip" at 20,000. Affordable ones are lit; unaffordable ones are greyed out — but the grey ones show exactly how many points are missing.
I staged the screenshot above deliberately, because it's the single most effective screen in the system: "Grant one wish" costs 1,500 points — 60 to go.
What's 60 points? Perfect dictation +10, washing the family's dishes +10, a half-hour morning run +20. In other words: a few more things today and it's his. That beats "keep it up" by a mile.
And the moment he actually claims a prize gets its own fanfare — a congratulation banner and confetti. Something he saved weeks for deserves a small ceremony, not a cold ledger entry:

5. The research and the mature apps point the same way
Earning tokens toward rewards isn't something I invented. Psychology has a formal name for it: the token economy — an accumulable intermediate (points, stickers, chips) that converts into things the person actually wants. In 1968, behavioral psychologists Ayllon and Azrin built the first complete system and wrote the book on it (The Token Economy). It has been measured and re-measured ever since.
Whether it works is a matter of record. The yardstick researchers use is the effect size — 0.2 is small, 0.5 medium, 0.8 large:

- A meta-analysis pooling 28 elementary-classroom studies (1980–2014) put the average effect size at 0.82 — squarely in the "large" band — and found it works better for ages 6–15 than 3–5, which is exactly elementary school (Soares et al., School Psychology Review, 2016).
- A separate review of 24 studies from 2000–2019 reached the same conclusion: large effects in both general and special-education classrooms.
- Widen the lens to gamification — importing points, badges, and levels into learning — and Sailer & Homner's 2020 meta-analysis reports 0.49 for achievement, 0.36 for motivation, 0.25 for behavior. Useful, but not magic.
- And for scale: 95% of US K-8 schools use ClassDojo — which is, at heart, a points clicker in the teacher's hand.
Two honest caveats. The classroom numbers come from small single-case studies (those 28 studies total 90 children), so treat the digits as direction, not precision. And Sailer's paper is explicit that points and badges alone are the weakest design — clear goals and reachable challenges are what make it work. That's precisely what "a dashboard with a trend line and a points-to-go label" tries to add over a bare score sheet.
But the method has an equally well-studied trap: rewards can kill an interest that was already there. The famous 1973 Stanford preschool experiment (Lepper, Greene & Nisbett): children who already loved drawing were promised a certificate for it — and afterwards spent about half as much free-play time drawing. The reward had quietly rewritten "I want to draw" into "I draw for the certificate."
A 1999 meta-analysis of 128 experiments (Deci, Koestner & Ryan, Psychological Bulletin) confirmed the effect and drew its boundary: the erosion hits things the child already enjoys; for things he never wanted to do (redoing corrections, tidying the desk, daily rope skipping), there is no interest to erode; and verbal praise doesn't undermine at all — it slightly helps.
Read our rule chart against that boundary: the bulk of the points sit on habits and chores, and entries like "praised by the teacher" record the praise itself — the points just write it down. Pinning the exchange rate at 100 points = 1 yuan serves the same end: the fainter the smell of money, the more a point reads as "you did it" and the less it reads as wages.
On the product side, I studied the apps that have pushed "make them come back every day" the furthest. Duolingo turned the streak into a company-level feature; their official blog has the numbers: users who reach a 7-day streak are 3.6x more likely to complete their course, and merely adding a celebration animation to the streak counter lifted new-user day-7 retention by 1.7%. Their playbook in one line: make progress visible, and make it hurt to break. ClassDojo's playbook is award on the spot: the moment the behavior happens, the teacher taps once, the kid sees it immediately, the parent sees it too — feedback decays fast with delay.
| Their move | What it became in this system |
|---|---|
| Duolingo: streak counter + milestone celebrations | The trend line + the "all-time high" badge; the companion practice site has a daily check-in streak |
| Duolingo: daily quests always showing "N to go" | Shop cards show "60 points to go" — a reachable goal stays in view |
| Duolingo: buy a Streak Freeze to patch a missed day | Not copied. A deduction is a deduction; the ledger doesn't flatter — but debt can be earned back |
| ClassDojo: instant awards, parents synced | One tap on the rule wall records it; the whole family reads the same log |
| Both: virtual currency + a rewards shop | Three currencies (points / TV time / wishes) on one shared timeline |
One thing I deliberately didn't copy: Duolingo's leaderboards. There's one kid in this family — the person he competes with is himself last month, and the trend line is that leaderboard.
6. If you want one — and a few words for the engineers
This runs on my own server, and this post doesn't link to it — inside is one specific child's ledger, his mistakes, his exam papers. It recently became multi-account: each person gets an independent ledger, and practice progress follows the account across devices. If you want to try it, tell me — I can open an account for you, or help you stand up a fully private copy: your own rule chart, your own ledger, your data in your own hands. Mine was ported line by line from an Excel file we already had.
What's in it today. Scope note: the counts below are entries in the rule chart and the shop — not built-in mechanics (practice points, daily caps, and reversal aren't rules), and not the practice site's question bank:
| Item | Count | Notes |
|---|---|---|
| Rules | 83 | All from the family chart, ported line by line |
| Subjects covered | 9 | Chinese 28 · Math 13 · Chores 10 · English 9 · PE 8 · Ethics 7 · Trumpet 4 · Daily 3 · Dad's special award 1 |
| Deduction clauses | 23 | Rewards and deductions side by side — not just good news |
| Rule kinds | 5 | Fixed 49 · Parent-picked range 17 · Per-item 9 · Tiered calculator 5 · TV time 3 |
| Tiered calculators | 5 | Rope skipping · Sit-ups · Chinese exams · Beat-your-last-score · Essay length |
| Shop items | 12 | From 150 points (one cartoon episode) to 20,000 (a short trip) |
| Currencies | 3 | Points · TV time · Wishes, on one timeline |
| Exchange rate | 100 points = 1 yuan | The chart said 10:1; at the chart's point values that's ~1,700 points/month = 170 yuan/month, too high — so it's compressed 10x |
Still empty: the "Science" column has zero rules — the family chart never wrote any. Its card shows 0 until we fill it in.
For the engineers. Zero third-party dependencies: the server is one Python-standard-library HTTP service that serves both static files and the API, and the data is one JSON ledger file — not a single pip install in the whole thing. A few constraints worth stating:
- The login gate lives in the application layer, not in nginx. With
auth_request, the gate can't be tested locally at all — which means there is no gate. This way, a local instance runs the exact same code path, and the smoke test exercises the real door. - The parent password never becomes a cookie. Deliberate: a points system that can award itself points is dead on arrival.
- All point values are computed server-side; the page preview and the actual booking share one function. Two implementations will eventually disagree — with the parent seeing the preview and the kid getting the booking.
- Tier expressions are evaluated through an
astwhitelist, nevereval. The expressions come from a config file;evalwould hand over arbitrary code execution. - The balance is always computed from transactions, never stored on its own. A separately stored balance field will eventually drift from the log. Undo is a true delete plus a backstage "deleted" area — auditability for the parents, a scar-free curve for the kid.
- Every point value can be traced to the original chart. Where the chart gave no number ("bonus at parent's discretion"), the rule must be labeled "we set this value" — a machine gate turns red otherwise.
About the screenshots
Every screenshot is a real page driven through real operations — a real server, a real login, real clicks on unlock and on rules. The ledger in the pictures is generated demo data; not one byte of the real ledger appears: the server runs in a temp directory that vanishes afterwards, and rules and shop items are pulled live from the product's own config — if the pull fails, the run aborts rather than inventing anything. The only drawn figure is the research chart in section 5, whose numbers were checked against the original papers one by one.
RELATED
FOLLOW
New posts land here first. Subscribe via RSS: /feed.xml
AUTHOR
Tianli Zeng
Hydraulic engineer. I write about AI methodology, daily investment reviews, and engineering practice.