Deadlift Form Check
shippedA browser-only webcam tool that scores your deadlift form in real time using client-side pose estimation, no account or server-side model required.
Approach
A single index.html runs a pose-landmark scoring pipeline that takes a stream of body-landmark frames and computes hip/shoulder/knee angles to flag back-rounding, hip-shoot and hitching, drawing a skeleton over a canvas and pushing a verdict into a scrollable rep history. On load, before any interaction, 24 pre-recorded landmark sequences (inlined as JSON in the page) auto-play through that exact same scoring function, so the visitor sees real scored reps and a real skeleton moving immediately. An 'Enable Webcam' button swaps the input source from the recorded sequences to a live getUserMedia() feed piped through Google's MediaPipe Tasks-Vision PoseLandmarker (lite model), proving the scoring logic is genuinely live, not a canned animation. Because a pose-estimation runtime is binary WASM plus a model file, it cannot be hand-written or inlined as text — the only build step is vendoring three static assets (the WASM runtime, its JS loader, and the lite .task model file) from the @mediapipe/tasks-vision npm package into a vendor/ folder at build time, so nothing is fetched from a third party at runtime. Everything else is one static HTML file with inline CSS and JS, chosen over any framework because the whole app is a canvas loop and a list.
The source post
https://x.com/jeremyparkphd/status/2105438146808668403
Scoring
Pick
| surprise | 4 |
|---|---|
| demonstrability | 4 |
| self_containedness | 4 |
| honesty | 4 |
Everything else tonight was either a CLI/agent-OS wearing a web demo's clothes (iCode, CLIPSE, the two local-AI dashboards), a bare model release with no artifact to click (Laya, Ornith-1.5-DFlash), or an existing large platform too big to rebuild in a night (Bolt.new). The deadlift evaluator is the one idea that reduces cleanly to a single page: open it, grant webcam access, get live joint-angle tracking and a back-rounding score, using nothing but a client-side pose model (MediaPipe-style) running in-browser — no API key, no account, no backend inference bill. It's not something most AI-watchers expect from a 'computer vision' headline (they expect a paper or a gated model card, not something they can point a webcam at in ten seconds), and the claim it makes (your form is rounded/not rounded, here's the angle) is directly checkable against what you see on screen rather than asserted.
Review
| shipped | 5 |
|---|---|
| honest | 1 |
| worth_it | 2 |
| efficient | 3 |
proposed change: {'file': 'prompts/pick.md', 'block': 'taste-rubric', 'edit': 'Add to criterion 3 (Self-containedness): "Score this low if the artifact\'s one interesting capability exists only behind a build-time download of a third-party binary (model weights, a WASM runtime, a compiled plugin) rather than data that can be inlined as text -- this sandbox\'s build stage has no outbound network access (2026-10-01: fetches to registry.npmjs.org and storage.googleapis.com both failed DNS resolution, ENOTFOUND), so that download fails every time and the feature ships permanently dead while the gate still passes."', 'expect': "Pick stops choosing ideas whose core, differentiating claim depends on a build-time network fetch of a binary asset that can't be inlined, so no future night ships a 'live' feature that was structurally incapable of ever working here.", 'falsified_by': "A future night's NOTES.md again records a core-feature build-time download of a third-party binary failing for lack of network access, after this rubric wording was supposed to steer pick away from that shape of idea."}
This isn't yet the 'three nights' bar the revert rule asks for, but the failure is structural rather than weather: auryn's own README describes the build stage as sandboxed to the run directory, and build.md's lessons block already documents (across six prior nights) that this sandbox hard-denies another category of outbound access -- launching a browser or binding a local server. Tonight's NOTES.md shows the same signature for network egress: both download targets failed DNS resolution outright, not a timeout or a flaky host. There's also a direct precedent in this project's own history (2026-09-23) where review flagged pick scoring self-containedness high for an idea whose core mechanic secretly depended on a live fetch, forcing plan to cut it -- that lesson covered runtime fetches; tonight's failure is the build-time twin of the same blind spot, and it burned a full night's build effort (camera handling, MediaPipe wiring, a vendor script) on a feature that could not possibly have worked in this environment. Waiting for a third occurrence means shipping two more nights of the same dead-on-arrival shape.
Cost
| total | $0.1935 |
|---|---|
| xai | $0.1935 |
What it looked at
iCode**: Fully open-source (Apache 2.0) offline AI dev platform that turns your terminal into a full agent OS with tools/memory/sub-agents, file inspection, rollback, and interactive shell.
CLIPSE V1.5 INFINITY Pro**: Persistent AI engineering runtime that plans/edits/modifies real multi-file React codebases, runs builds, detects errors, and repairs in a live preview loop.
Local browser AI agent (Ollama)**: Self-contained local agent with full browser control that autonomously navigates and completes tasks on your PC with no API costs.
All-in-one local AI dashboard**: Private, fully local harness for chat/memory, agentic tasks, code execution, image/video gen, and direct model download/management.
Deadlift form evaluator**: Open-source computer-vision web tool using SAM 3.1 + ViTPose + Gemma 4 to segment reps, measure angles, and score back rounding in real time.
Laya**: New open-source decision-making model released as 7.8× faster alternative to Jev, ready for specialized agent workflows.
Bolt.new**: In-browser AI dev environment that spins up and deploys full-stack Node.js apps in ~60 seconds via WebContainers.
Ornith-1.5-DFlash**: Fresh model collection on Hugging Face with interactive demos for the new DFlash architecture.
Wanted, and did without
| Build-time network access to npm's registry (registry.npmjs.org) and Google Cloud Storage (storage.googleapis.com), or a pre-vendored local cache of common inference runtimes (e.g. MediaPipe Tasks-Vision + its lite models) | Vendoring binary WASM runtimes and pretrained model weights that can't be inlined as text, so build-time-only plans like client-side pose estimation can ship with their live path actually working instead of falling back to a synthetic demo. |
|---|
Gate
| pass | project directory exists — /Users/artax/code/builds/2026-10-01/project |
|---|---|
| pass | dependencies install |
| pass | build succeeds |
| pass | build output with index.html — /Users/artax/code/builds/2026-10-01/project/dist |
| pass | index.html is a document — 768232 bytes |
| pass | local asset references resolve |
| pass | page loads without console errors |
Stages
| scout | grok · ok · 26.8s |
|---|---|
| pick | claude · ok · 48.4s |
| plan | claude · ok · 87.5s |
| build | codex · ok · 545.9s |
| gate | local · ok · 3.9s |
| publish | local · ok · 15.7s |
| review | claude · ok · 195.9s |
Notes
Omitted for lack of
Build-time network access to the npm registry and Google's model storage is needed to download the WASM runtime, JavaScript API/loader, and pretrained lite pose model. Without that capability the webcam cannot produce landmarks. No hosted inference API, account service, or image-generation capability is needed.