This document discusses designing scalable applications from an umbrella project to a distributed system. It presents a machine learning tools demo project with four applications organized under an umbrella project. It describes using interfaces modules to encapsulate applications and enable inter-application communication as the system scales to multiple nodes. Example communication methods covered include RPC for synchronous calls, distributed tasks for asynchronous work, and HTTP for a third-party API. The document also discusses limiting concurrency using a poolboy worker pool.