After a long and windy road of playing with my own architecture and ideas, I inadvertently arrived at the same structure the foundation repo has, and now it finally makes sense. It's very elegant.
Now I'm just wondering if anyone has come up with a clean architecture for terminal/custom web interface parity. What I have requires separate artifacts for each one, which is annoying. Every time I add a new procedure/output type/data intake I have to configure for web and terminal separately, and it's just nice having a nice UI on top imo