5.8 KiB
Feeding Transition Calculator — Implementation Guide (30 kg adult)
1) Purpose & principle
-
The calculator keeps energy intake continuous while transitioning from kibble (current) to gently cooked (GC, target).
-
Internally it uses the kibble chart’s month-level precision; externally it communicates in GC phases (<5 mo, 5–6 mo, 7–12 mo).
2) Fixed scope
-
Dog profile: 30 kg adult only.
-
Supported ages: 2.0 to 12.0 months inclusive.
If the user enters a value outside this range, clamp to the nearest bound and show a subtle note. -
Required configuration at runtime: kibble energy density (kcal per 100 g).
If missing, show an error and do not compute.
3) Data you must hard-code
-
Kibble reference points (grams/day, 30 kg column):
(2→250), (3→330), (4→365), (6→400), (8→410), (10→410), (12→405). -
Interpolated monthly kibble (round to whole grams):
-
2 mo: 250
-
3 mo: 330
-
4 mo: 365
-
5 mo: 382
-
6 mo: 400
-
7 mo: 405
-
8 mo: 410
-
9 mo: 410
-
10 mo: 410
-
11 mo: 408
-
12 mo: 405
- GC communication buckets and ranges (g/day):
-
< 5 months (covers 2.0–4.999… mo): 950–1350
-
5–6 months (covers 5.0–6.999… mo): 1250–1550
-
7–12 months (covers 7.0–12.0 mo): 1300–1500
Boundary rule: exact 5.0 and 7.0 belong to the later bucket (5.0 → “5–6”, 7.0 → “7–12”).
4) How to calculate results (conceptual, no code)
A) Kibble grams/day at any age (2.0–12.0)
-
Use linear interpolation between the nearest kibble reference points listed above.
-
Round the resulting kibble grams/day to whole grams (or to the nearest 5 g if the user enables a rounding toggle).
B) GC bucket assignment
- Based on the age, assign the corresponding GC bucket and attach that bucket’s low/high range (g/day).
C) Energy-matched GC grams/day (the backbone)
-
Convert kibble grams/day to kcal/day using the user-provided kibble energy density (kcal/100 g).
-
Convert kcal/day to GC grams/day using GC’s energy density 115 kcal per 100 g.
(Equivalently, GC provides 1.15 kcal per gram.) -
Round to whole grams (or to nearest 5 g if the user toggled it).
D) Range status
-
Compare the energy-matched GC grams/day to the GC bucket’s low/high:
-
“within” if inside [low, high]
-
“below” if under the low
-
“above” if over the high
(Do not alter the energy-matched amount; just flag it.)
-
E) Transition schedule (blended days)
-
Default to 7 days (configurable).
-
Linearly ramp daily fractions from 100% kibble / 0% GC on Day 1 to 0% kibble / 100% GC on the last day, in equal steps.
-
Each day’s grams = (kibble grams/day × kibble fraction) + (GC grams/day × GC fraction).
Round after multiplying (whole grams or nearest 5 g per the user setting).
5) What to display (UX rules)
-
Primary number: “Gently cooked (energy-matched): X g/day”.
Directly below, show the GC bucket label and its range (e.g., “7–12 months: 1300–1500 g/day”) plus a small status chip (within/below/above). -
Context line: “Based on your kibble energy density: Y kcal / 100 g” with an edit control.
-
Age input: accept decimals (e.g., 5.5 months).
Add tick marks at 2, 3, 4, 6, 8, 10, 12 (the original kibble points). -
Transition widget: a simple 5–7 day table or bar chart that shows kibble g and GC g per day, plus the day total.
(Totals will typically increase during the transition because GC is less energy-dense; this is expected.) -
Rounding toggle: whole grams vs nearest 5 g.
-
Download/export: CSV with columns:
age_months, kibble_g_per_day, kibble_kcal_per_100g, kcal_per_day, gc_energy_matched_g_per_day, gc_bucket_name, gc_low_g, gc_high_g, range_status, and per-day transition grams.
6) Validation & edge cases
-
Missing kibble kcal density: block calculation and display a clear prompt to enter kcal/100 g.
-
Age outside 2–12 months: clamp to the nearest bound; show a subtle informational note.
-
Energy-matched GC outside bucket range: keep the energy-matched number; display the status chip and a short educational tooltip (growth varies; this tool prioritizes energy continuity).
-
Rounding: perform all math in floating point; round only for display (and for the per-day plan after multiplying by fractions).
7) Acceptance checks (use these to verify)
-
At 5.5 months with 380 kcal/100 g kibble:
-
Interpolated kibble ≈ 391 g/day.
-
Kcal/day ≈ 1,486 kcal.
-
Energy-matched GC ≈ 1,292 g/day.
-
GC bucket “5–6 months” (1,250–1,550) → within.
-
-
At 8.0 months with 380 kcal/100 g kibble:
-
Kibble ≈ 410 g/day → ≈ 1,558 kcal/day → GC ≈ 1,355 g/day.
-
GC bucket “7–12 months” (1,300–1,500) → within.
-
-
At 2.0 months with 380 kcal/100 g kibble:
-
Kibble 250 g/day → 950 kcal/day → GC ≈ 826 g/day.
-
GC bucket “<5 months” (950–1,350) → below (expected for some formulas).
-
8) Deliverables checklist
-
Precise monthly interpolation (ready values above).
-
Age-aware GC bucket labelling and ranges.
-
Energy-matched GC grams/day with status flag.
-
Configurable transition length; per-day blend table.
-
Rounding control.