There is something still nagging me with this approach. 

When getting feature info from a provider this way, it will make it more difficult to correlate and aggregate data from various sources (e.g. planning info in sprintly, open PRs in github, branches in github/git, jobs in Jenkins...). An alternative approach is passing a `Feature` object (or a dict if you prefer) around to the various providers in sequence (starting with the planning provider) so that each *decorates* the feature with additional data it knows about.

For example, I would like to get initial feature info from sprintly, then pass this to the github provider so that it adds information about open PRs and relevant branches (and even mergeability status and build success from the PR), then to Jenkins so that it can add information about known builds to the feature's branches...

Up for hangout discussion.