A ticket-to-repair system built for a regional electrical-infrastructure contractor — triage, role-gated dispatch, and a paper-to-digital field report loop, replacing a process that ran on phone calls and loose paper forms.
Today's open tickets laid out on the real repair-sheet template, paginated and print-scaled to fit A4.
Crew marks each repair step by hand, same as they always have — no device, no app, no retraining.
Sheet comes back in. Rows match to tickets automatically; marked steps become one written note per ticket.
Letting Excel auto-fit a sheet to one page produces a different result on every renderer.
Fixed by computing the scale explicitly — the same 7px-per-character approximation
Excel itself uses — then deriving row height and page breaks from that one known number instead
of hoping the software agrees with itself.
Switching accounts in the same tab left the previous person's role-specific UI on screen for a beat before the new one loaded. Every one-way DOM change from login now has an explicit, reversible undo on logout — nothing assumes it'll never need to run backward.
A hand-filled street name can wrap to two or three lines — Excel never grows a row to fit that on its own. Each row's height is now computed from its own content, and tickets are packed onto a page by actual accumulated height rather than a fixed count per page.
A field-typed 96, a stored TICKET-0096, and a street name missing
its "Str." all have to resolve to the same report. Digit-extraction plus stopword-aware address
matching handle both directions with the same rule.