The reason custom web apps still matter is the same reason people eventually leave no-code tools: the workflow gets more specific than the tool can express. What starts as a clever automation turns into a maze of workarounds, duct-taped integrations, and tribal knowledge about which button not to press.
A purpose-built web app fixes that by reducing the workflow to its essence. One data model, one set of screens, one way to get the job done. The team stops fighting the tool because the tool is shaped to match how they work.
The trick is scope. Most internal tools fail not because the engineering is hard but because the requirements sprawl — every edge case gets treated as a first-class feature, every maybe-someday gets added to v1. The job of the build engagement is to cut that ruthlessly. Ship the one workflow that matters, get it into real use, then iterate from there.