pip told me, to be fair. The warning that the script was installed in a directory not on PATH scrolled past in the middle of the install output and I didn't read it.
What happened is ordinary. pip install --user puts console scripts under the user base, which is ~/.local on Linux, so they land in ~/.local/bin. My shell has that on PATH. The service runs as its own account with a much shorter PATH, so the command simply wasn't found. python -m site --user-base prints the base for whichever interpreter runs it, which is the quickest way to see where things went.
The habit I'm taking from this is to stop letting a service find tools through PATH at all. Give it its own venv and point it at the full path of the script or the interpreter.
Whether --user is still worth using anywhere, I can't decide. Mostly I just make a venv.