--- license: other license_name: proprietary license_link: LICENSE tags: - coreml - regression - a-list library_name: coreml --- # A-LIST exercise extractor (Core ML) On-device replacement for the remote LLM that extracts structured numbers from free-text exercise entries in the A-LIST app (locomo mode). Single fp16 Core ML graph: MiniLM-L6 encoder (frozen, mean-pool + L2-norm inside the graph) + MLP heads. - **Inputs**: `input_ids` int32 (1,128) WordPiece/bert-base-uncased; `attention_mask` int32 (1,128); `parsed` float32 (1,10) regex features (see the app's `ExerciseFeatureParser` for the exact order and transforms). - **Output**: float32 (1,8) — `[log1p(duration_min), log1p(calories), heart_rate_bpm, intensity_1_10, steps_gate_logit, log1p(steps), distance_gate_logit, log1p(distance_km)]`. ## Versions - **`v2/` (current, 2026-08-23)**: identical graph retrained on the sol-relabeled dataset (exercise-text-unified:v0 — one uniform frontier teacher, calorie CV 1.6% vs the old labels' ~11%). On the frozen held-out-user sol eval (1,127 entries) it beats the v1 artifact on every field: duration 68.5% vs 62.7%, calories 58.0% vs 51.5%, heart rate ±10bpm 76.0% vs 67.6%, intensity ±1 81.7% vs 76.0%, steps gate 94.9% vs 88.6%, distance gate 94.6% vs 90.8%. Same I/O contract and footprint. - **Root files (v1, 2026-08-16)**: distilled from ~14.5k historical production extractions (mixed teacher generations). Kept resolvable for rollback; the app's `ExerciseExtractorDescriptor.v1()` still pins these bytes. - `golden_cases.json` holds 10 input→output cases generated from the v1 artifact — the app uses them to pin the *decode rules* (weights-independent), so they remain valid across versions. Internal model for the A-LIST iOS app. Not intended for third-party use.