Inspiration — the gap between "everyone knows roughly how bad their eyes are" and the fact that it's a solvable measurement problem, inspired by Snellen charts that have worked the same way since 1862.
What it does — the full 21-question flow with the phase breakdown cards, stat strip, and explanation of the calibration and safety screen.
How we built it — the three-module architecture and how they fit together, with the optics rule explained.
Challenges — the five real ones: screen-independent sizing, the webcam subprocess session reset, the two incompatible engine versions, Streamlit's CSS sandbox, and the safety boundary design.
Accomplishments — five things that came out well: the binary search convergence, the crisp programmatic optotypes, the credit-card calibration, the confidence score with meaningful penalties, and the finished-product UI feel.
What we learned — binary search as a UX pattern, state machines for multi-phase flows, Pillow's capability, and the importance of an explicit theory of harm for health tools.
What's next — six concrete directions: mobile-first rebuild with AR distance detection, astigmatism axis estimation, longitudinal tracking, optician referral integration, clinical validation, and accessibility extensions.
Disclaimer: This is a screening tool only. It does not replace a full clinical refraction. Always consult a licensed optometrist or ophthalmologist before purchasing prescription eyewear.
Log in or sign up for Devpost to join the conversation.