Orders that stopped being retyped.
Client work · 2026A dispatch operation logged every delivery run by hand. Staff described the run in a chat message and someone copied it into a spreadsheet afterwards — free text at both ends, so a mistyped price or a missed row looked exactly like a correct one.
A Telegram bot asks one question per column and takes answers as buttons rather than free text. The columns are not in the code: it reads them from the spreadsheet's own header row, and a separate file decides which are asked, which are required and what the suggested answers are. Adding a column is an edit to a spreadsheet, not a change to a program.
It runs as a Windows application — no Python, no command line — with access limited to an approved list. Tested end to end against a ten-column schema; the live run found two defects the unit tests had missed, one of them because those tests called the logic directly instead of going through the bot. Both are fixed, and a test that does go through the bot now exists.