Claude vision's self-reported text coordinates had a small but consistent bias, causing the patient-row double-click to land above the name and the Exam-column divider count to occasionally miscount and hard-fail. Swap patient-row, Exam, and Save button targeting to exact OCR bounding boxes (Google Vision via the existing PaymentOCRService) instead of AI-estimated ratios.