Similar to Elio, I have a Stream Deck that I use for general activities, not streaming or game play. I have already configured and hacked a bit, so this will likely be a series of posts. You can find them all by following the StreamDeck tag.
First, let's talk about profiles. As Elio pointed out, you can have a profile associated with a program. The best part of these app-specific profiles? The deck switches the profiles automatically when the specified application is in the foreground. In addition, you can "nest" buttons in folders. This lets us have a near-infinite number of buttons.
What I have found that works best for me is the default profile with folders that contain buttons to launch applications, and application-specific profiles with buttons that invoke shortcuts for those application.
As an example, I have a profile associated with Microsoft Teams. So, when I'm in a Teams call, the Teams profile is shown. I use the System:HotKey action for the actions I am most likely to use while on a call. (Microsoft has published a full list of keyboard shortcuts for Teams.)
The button on the top left is one that I find particularly helpful. Since the deck switches to the Teams profile when the Teams app is in the foreground, what do I do if I want to use a button on the main profile? So I added a button to the first position of every profile that will return to the default profile.
So far, the Stream Deck is working well for me. Plus, it provided an opportunity to for me to hack around in the SDK. I'll cover that, as well as more use cases, in future posts. In the interim, I would love to hear about your use-case for Stream Deck. Let me know on the Twitters!