the working blog
Entries from real work — decisions, dead ends, and the fixes that stuck.
Cancellation requests arrive in a staff chat with the customer's signed paperwork attached — except the link was usually dead by the time anyone clicked it. I replaced it with one that never expires and still can't be guessed.
The old claim form asked for everything at once, and quietly filed the claim before the customer had finished. I rebuilt it as a short sequence that adapts to what actually happened and commits to nothing until the last button.
Customers had to check three different places to find out what happened to their requests, and most gave up and phoned the call centre instead. I merged them into a single list where every request looks the same and shows exactly which step it is on.
Buying a policy online meant typing out your documents, then your spouse's, then every driver's — on a phone, with the papers in another room. Most of that information was already in the customer's account, so I taught the forms to offer it.
In Uzbekistan, Telegram is where people already are all day, so asking them to open a browser and log in somewhere else costs real customers. I put the whole insurance site inside the chat window instead.
When a request failed, our customer area would show a developer's error text, a spinner that never stopped, or an empty page that looked like the customer had no policies at all. I replaced all of it with one honest answer.
A policy isn't really sold when the customer pays — it's sold minutes later, when it's actually issued, long after the browser has closed. Our marketing numbers never saw that step, so I built the part that reports it back.
The cabinet's "My family" form was four fields long and had a problem in every layer: you could add yourself as your own relative, it demanded an ID nobody remembers, impossible dates crashed it, errors ignored your language, the dropdown wouldn't close, and backspace didn't delete. This is the whole repair — backend rules, state-service integration, and frontend polish — of one deceptively simple form.
On a fast connection, the site opened as a gray void for seconds, then images crawled in one by one. The fixes turned out to be small. The work was proving why every slow thing existed —because each one, it turned out, was somebody's earlier fix.
Booking a doctor on a corporate medical policy meant messaging a Telegram bot. I moved that into the cabinet — a five-step form that reaches the operators' group in seconds. The interesting part was deciding how little the browser is allowed to say.