The most successful HipChat add-ons use common principles. The best way to approach it is not to try and rebuild your application inside HipChat, but instead surface the right information at the right place at the right time in HipChat rooms, then guide users to the best spot to take action - which can be in HipChat for simple inline actions, or in your application for more specialised actions.
The problem: users share a lot of links in HipChat rooms. In some cases, for example a public YouTube link, HipChat can automatically resolve the link and show more information, e.g. a thumbnail of the video. But if users share links from apps requiring authentication or deployed behind a firewall, then we can't do that.
The solution: your app can implement a webhook that listens for messages in HipChat rooms matching regex patterns (URL, issue key). As a response, your app can post a HipChat Card to the room, providing more information about the resource the link points to.
Going further, Cards can expose links/actions which open an up-to-date view of the linked resource in the HipChat sidebar. This is very handy for users when discussing time sensitive, critical events.
The problem: HipChat is where users make decisions. But where do they go to take action? Today they have to keep switching back and forth between applications, and navigating to the right context to take action.
The solution: your application can add HipChat Actions to Cards, which can open a View in the HipChat sidebar or modal dialog, or redirect the user to your application in the right context.
The problem: if you were to create polls in HipChat today, you would do it via a bot or a slash command. They are both difficult to discover and not very intuitive to use.
The solution: user interfaces... Doh!
The problem: let's say your app lets users escalate incidents, and most of your customers are also using New Relic, which sends notifications about incidents to HipChat. Today, to escalate an incident, users would have to go to your app and copy/paste the New Relic data.
The solution: your application can contribute HipChat Actions to other application Cards, for example you could add a "escalate incident" Action to New Relic incident Cards. That is very powerful.