Skip to content
Ben Cipollini edited this page Dec 24, 2015 · 3 revisions

title: SF Brigade date: 2015-12-16 21:15:28 PST

SF Brigade

  • What charts / tables / pages do we wish to show on the front-end?
  • What API endpoints do we want to expose to the front-end?
  • What Django models do we want to expose?
  • What data (columns) do we want to pull?

What charts / tables / pages do we wish to show on the front-end?

For the first version, high level aggregates of how much money is going into a particular ballot topic (candidate office or ballot measure). The aggregates are broken down into "interesting" categories. Some examples:

  • Money inside the jurisdiction vs outside the jurisdiction.
  • Contribution size (small donors vs large donors vs self-funding, etc.).

The visualizations in the mocks are fairly simple, mostly to contrast the different categorizations.

If you have opinions or ideas, join #dataviz.

What API endpoints do we want to expose to the front-end?

For the first version, our API is targeting our UI, it's not meant to be a public API for developers. Here are the endpoints I've identified for now.

Endpoint Description
city/:city_id returns the city object for the city, includes city name, high-level totals of money within the city's election.
city/:city_id/ballot returns the ballot object for the city, includes the combined contests of all jurisdictions within the city, since we're not supporting individual jurisdictions yet.
referendum/:referendum_id the referendum (aka proposition or ballot measure) object with high-level contribution information included.
committee/:committee_id a campaign committee with high-level contribution information included.
committee/:committee_id/contributors returns a list of unique contributors who have contributed to this campaign committee. Must support paging query parameters.

Notes:

  • City should probably be named locality or metro.
  • Ballot models/API should be based on the voter information project ideally.

Frontend folks hang out in #frontend, and the API folks hang out in #disclosure.

What Django models do we want to expose?

Again, we're targeting the UI, so using models that help to get the data to the UI gets us moving forward. It's fine to have some intermediate models, too. Also, we're looking at how to maintain data integrity and transparency when cleaning the data, possibly amending it for de-duplication, etc. There are some github issues about citations, and these topics. We're not trying to tackle these for v1, but would be happy to have folks thinking about it.

Currently we have a ballot app in the django project, and then the campaign finance data is in netfile app and the calaccess app. At some point these need to be combined for the frontend. Unclear if they should be implemented as django models, but if it simplifies development, then let's go for it.

Django folks hang out in #disclosure.

What data (columns) do we want to pull?

See Campaign Finance for a high-level overview of what relevant data are reported when, and Campaign Data Formats for how that relates to public data feeds.

How to compute totals by category at the city level, contest level, and contributor level should be relatively straightforward, given the data descriptions above.

If you're interested in helping to solve this problem, join the #campaignfinance Slack channel.