Same wall. Different body. Different beta.

Inspiration

At a bouldering gym, a beginner is often told to "just reach" for the hold that worked for someone taller. But climbing beta is not universal: a move that feels static at 190 cm can be a dead point, an extra foot move, or simply impossible at 160 cm. Solo climbers face an even harder version of the problem: they may see the route, but not how to translate it into movements that fit their body.

Most climbing tools record sends or recognize grades. YanCe asks a more personal question: can one ordinary wall photo become a clear, correctable plan for the person actually climbing?

What it does

YanCe turns a calibrated photo of an indoor bouldering wall into body-aware route options. The climber enters height, arm span, experience, and grade; calibrates the image to real wall distance; corrects the detected holds; and marks the start and finish. YanCe then builds a reach graph and searches for legal sequences shaped by that body.

The core proof is visible, not rhetorical: on the same calibrated wall, the seeded 190 cm profile gets a four-hand-move sequence while the 160 cm profile gets six smaller hand moves. The geometry changes the plan; the app is not just inserting profile text into a generic answer.

The new full-body beta makes every transition inspectable. Each move is a separate card with exactly one MOVED limb and three SUPPORT contacts. Left hand, right hand, left foot, and right foot stay labeled throughout. Hold contacts are distinct from wall smears and flags, and every step includes a geometry-based ease score plus a short "Why now" explanation. A technique choice such as static climbing or flagging actually replans the sequence.

YanCe also treats uncertainty as a product feature. A low-confidence observed contact cannot silently rewrite the plan: the climber must confirm or reject it first, and a private Beta Receipt records the decision trail. The current contact view is honestly labeled as a recorded interface fixture, not live perception.

Why it matters

For a solo or newer climber, the hardest part is often not strength; it is converting a wall into a sequence they can understand and try. YanCe makes route reading less opaque and less dependent on copying the body mechanics of the strongest person nearby. It aims to give climbers more autonomy and a better starting hypothesis while staying clear that beta is a suggestion, not a spotter or safety guarantee.

How I built it

The browser app uses React, TypeScript, Zustand, Canvas, and Vite. Calibration converts pixels into wall distance. Corrected hold candidates become graph nodes; body-scaled reach and stance rules create edges; deterministic search returns route options. The four-limb engine preserves complete before/after stances and enforces a testable invariant: one limb moves per step.

GPT-5.6 has a deliberately bounded role. For vision, it receives numbered Set-of-Mark candidates and verifies semantics; it never invents coordinates. For coaching, it may explain only the move sequence already chosen by deterministic geometry, and a validator drops any sentence that references a nonexistent hold or step. If a model or network stage fails, YanCe fails open to the zero-key classic planner.

Codex accelerated the typed implementation, the four-limb interface, red-first unit tests, refactors, failure tracing, UI wiring, browser tests, and release preparation. The key human decisions were to keep geometry deterministic, make corrections visible, bound model authority, and disclose every fixture and limitation instead of polishing uncertainty away.

Challenges I ran into

  • Vision without coordinate hallucination. The solution was candidate generation plus GPT-5.6 classification, not free-form point generation.
  • Making full-body output falsifiable. Complete four-contact stances, explicit wall contacts, and the one-mover invariant made the feature testable rather than decorative.
  • Ordering hands and feet honestly. YanCe scores naturalness from reach, stance change, and support geometry, but labels it as a heuristic rather than biomechanical proof.
  • Trust under noisy observations. Confirm-before-replan and replayable receipts prevent uncertain evidence from becoming confident advice.
  • A dependable judge path. The hosted seeded walkthrough requires no account or API key, while optional model stages degrade visibly and safely.

Accomplishments I am proud of

  • One photo becomes a correctable, calibrated, body-aware plan.
  • The same wall produces a proven 4-vs-6 body comparison.
  • Nine separate full-body moves in the seeded route, each with one MOVED and three SUPPORT contacts.
  • Explicit hands, feet, smears, flags, foot-first reasoning, and technique-driven replanning.
  • Bounded GPT-5.6 verification and grounded explanations.
  • 113 unit/integration tests, 17 Chromium flows, clean TypeScript, and a passing production build.
  • A free, signed-out Vercel demo that reproduces the core proof.

What I learned

The strongest use of a frontier model was not to let it control everything. Semantic models are excellent at interpreting ambiguous candidates and explaining structured results. Measurements, coordinates, legal targets, and state changes are stronger when they remain deterministic, inspectable, and correctable. In this product, showing uncertainty is not a weakness; it is part of the design.

What's next

First, I will evaluate correction counts on permissioned real gym photos. Next come a visual starting-stance editor, four-contact overlays on the wall, broader movement search, and measured wall-angle/body-load models. Live camera contacts will remain confirmation-gated until held-out hand and foot precision is strong enough to justify automation.

Built With

Share this project:

Updates