What I use it for is api endpoint, email templates and sending emails, websockets and as admin tool (the dashboard).
It requires a lot of discipline to keep the flows separate. Reuse of code is a challenge (very tempting just to copy and paste code) and generally to maintaining an overview (simply because of the number of flows).
On the other hand, business people can immediately see the flows and thereby understand the logic. Debugging is a matter of connecting a debug node at any point in flow. Background jobs (ie sending email) is a matter of splitting the output of a node (ie http response is sent and at the same time email is triggered or websocket update is sent).
Scalability and production performance remains an open question for me. In worse case scenario it would be a case of taking the flow.json (my entire backend is a 300k json) and building some kind of interpretor from scratch ;)