It turns out you can use semantic caching to navigate past an IVR.
In addition, you can use semantic caching with templating to input data into an IVR and extract data from an IVR.
I know, IVR is different than a phone tree. But most people think an IVR is a phone tree when they interact with it.
Would love to hear what the HN community thinks!