The ration MushMate by Skimate.eu shows you every morning is not a number carved in stone. It moves with the dog's weight, with what it ran this week, with what's scheduled for next week, and with the last body condition score taken. Here's how that number is calculated, and what it doesn't know yet.
The CAMT training model (fitness, fatigue, season phases) has its own article — How MushMate builds your plan — and why you stay in charge. This one is only about the bowl: how a dog's workload changes the number of grams it gets.
1. The formula: RER → MER → grams
Three steps, in order, for every dog:
- RER — resting energy requirement, in kcal/day. From the Merck
Veterinary Manual formula:
70 × weight(kg)^0.75. - MER — actual requirement given activity:
MER = activity factor × RER. - Grams/day =
(MER × 1000) ÷ (the food's kcal per kg), rounded to the nearest 5 g.
The weight used is the last recorded weigh-in, or the reference weight if there isn't one — the ration sheet, the dog's profile, and the mobile app all read the same value today.
The formula hides no safety margin inside its grams. A margin does exist — but it sits alongside the number, spelled out under every calculated ration: "Veterinary estimate ±30%, adjust based on BCS." A warning to read, not an invisible factor baked into the calculation.
And one rule outranks everything: grams entered by hand short-circuit the entire calculation. What you typed is what shows, full stop.
2. The five activity tiers
| Tier | Factor × RER |
|---|---|
| Rest | 1.5 |
| Light | 2.0 |
| Training | 3.0 |
| Race | 4.0 |
| Long-distance race | 7.0 |
This table is "owner-validated," not literature-validated — and the last tier is still marked provisional, pending veterinary sign-off.
"Long-distance race" never comes out of an automatic calculation. No load, however heavy, triggers it on its own: it only exists if you set it yourself, dog by dog, as a manual override.
3. Where the tier actually comes from
The tier used to come purely from the season calendar's phase — one fixed tier per phase. On an entirely ordinary season, that produced wrong rations: a kennel with no dryland rig, already towing real weight on bare ground from early September, kept showing as "prep": 450 g/day instead of 675. The calendar had no way of knowing what the dog was actually doing.
The most counter-intuitive case. During the four maintenance weeks that follow a race, the plan drops back to a quarter of its peak volume. The calendar said "rest." But the dog just raced hard: its ration needs to stay at the maximum (4.0 × RER — 895 g/day in one real case observed), not fall back with the plan.
The current rule looks at what the dog has done and is about to do:
tier = max(
tier justified by ACTUAL load over the last 7 days,
tier justified by PLANNED load over the next 7 days,
"Race" if a real race is scheduled within the next 7 days
)
The max can only push the tier up, never back down. The manual per-dog override remains, as always, the final word — it overrides the calculation. The backward window — the last seven days — is exactly the one used elsewhere in the app to judge the gap between plan and actual: the same question shouldn't have two definitions in one product. The forward window doesn't share that origin; it's symmetric for a different, equally simple reason: seven days is the unit in which the training plan prescribes load.
What a seven-day load alone is enough to justify:
| 7-day load | Tier |
|---|---|
| < 5 | Rest |
| 5 to 40 | Light |
| ≥ 40 | Training |
Both thresholds come from real production measurements, not an outside reference — and both are also marked "needs validation — vet" (see § 7).
Three other fixes from the same batch, one sentence each: a "leisure" or "maintenance" objective no longer pushes a dog to the Race tier just because its deadline falls within seven days; a partially-unknown upcoming week is never treated as zero runs; and the tier now follows each dog's own objectives, not the kennel's next objective as a whole.
4. Multiple foods in the same bowl
The calculation splits the day's calorie requirement in proportion to each food's share of calories, then converts each share into grams using that food's own kcal/kg. A 50/50 mix by calories is deliberately not a 50/50 mix by grams: raw meat and kibble don't share the same energy density. You can also set an explicit calorie target, which then replaces the calculated MER — and the ±30% band that comes with it is the same figure as the on-screen warning, not a separate one.
Each kennel enters its own foods and can share one with the community (moderated before publishing). A duplicate within your kennel is rejected; a kcal/kg outside the plausible range warns you, without blocking the save.
5. The BCS nudge: alongside the grams, never inside them
When the last body condition score (BCS, on a 9-point scale) falls outside the ideal band, the Ration card adds a line under the grams, without touching them: "BCS 3 — thin: consider increasing by about 10% (≈ 770 g/day). Your call."
That 10% is flat, in both directions, and it is not a figure from the literature: it's a musher's prior, the product owner's own practice ("10% is roughly what I adjust rations by"). A proposal to make it configurable kennel by kennel was considered and explicitly turned down the same day: 10% is one constant for the whole product, not a setting you'll find in preferences.
Three details worth knowing: the nudge triggers as soon as a dog falls outside the ideal band (BCS 4-5: nothing shows, even on an old score), and the most extreme cases (BCS ≤ 2 or ≥ 8) get the same ±10% even though a separate gate has already put them on full rest — the nudge doesn't replace that gate; a stale score outside the ideal band shows only "re-score before adjusting the ration," with no figure; and a missing score, or a ration entered by hand, shows nothing at all.
6. The ration sheet, on screen and on the wall
/meute/rations shows the whole team at a glance (Dog, Ration/day, Weight,
Activity, Food), each row carrying a three-level BCS badge — green, orange,
red — always paired with its text, never color alone.
A dedicated printable poster exists too: A4 landscape, two columns of dogs, paginated so it can actually be posted on a wall. On paper, the Activity column disappears ("at feeding time you pour grams, you don't recompute a factor") and the food moves under the dog's name; BCS shows up as text, only for dogs that need watching or correcting — and for those, the ±10% nudge from § 5 prints right underneath, with its percentage and suggested grams: it was reserved for the screen at first, then put back on the poster when the owner noticed it vanished on print exactly where he relied on it to make decisions standing at the wall. A per-food total (kg/day, kg/week) counts dogs with a calculable ration, and counts the rest separately. A ration pinned by hand carries the label "entered," with the caption: "entered = ration set by hand: it does not follow weight."
7. What it doesn't know yet
- The 5 and 40 thresholds have never seen a full winter. The corpus of actual loads used to pick them has 2,247 of its 2,288 points falling between April and August; only 41 remain in February–March, 83% of them at rest. These thresholds are consistent with the data available — never validated by it.
- The 10% BCS figure is one person's practice, not veterinary data, identical for everyone and in both directions.
- "Long-distance race" never comes out of a calculation — only from an explicit choice by the musher.
- The ±30% margin isn't calibrated per dog: a fixed band around the theoretical requirement, not an individual measurement.
So, what do you do with it?
The calculation does the bookkeeping nobody can hold in their head across twenty dogs and six months, and catches mismatches a calendar alone would have missed. It doesn't replace your own eye for a dog's coat, nose, and appetite on any given morning. The ration proposes a number, the BCS suggests an adjustment — you're always the one who pours the bowl.
A number that looks wrong to you? Write to us — these thresholds are meant to move, especially after a first full winter under this model.