I think the main shortcomings of these pipelines is that it might fail for more complex architectures.
Lots of user don’t even know what the mathematical function corresponding to their model is. And writing it would be too complex for a symbolic differentiator to handle.
In particular some functions are very easy to write in code but very hard to write mathematically (with complex conditions or for loops for example).
But I think your point makes sense that for simple functions we might be able to have such a tool. That could be a third party library.