Management commands
Management commands are also a kind of interface; they're just an interface that's interacted with via the command line rather than over HTTP. You can think of them a bit like views, and generally they tend to be conceptually closer to "POST views" (those that perform an action) rather than GET views. They take user input of some sort (usually command line arguments or data piped into stdin), validate it (using argparse), and then call an action function that encapsulates the actual business logic. If appropriate, there's nothing stopping you from sharing the same actions between your views and management commands.
Be liberal with the commands you create, and see them as the programmatic interface to your application. They're a great way of encapsulating common tasks which would otherwise require a developer to poke around in a Python shell. Scheduled jobs (whether run via a platform like Heroku or a clock process) can be implemented as management commands. Commands can also be long-running, like a worker process to handle a job queue. And having a single place to put them (under the interfaces/management_commands package) makes them easily discoverable.
Summary
Management commands are just another kind of interface and so can follow a similar conceptual structure as views.