libraries: ◦ scrapelib - intelligently fetch webpages ◦ validictory - validation of arbitrary data structures ◦ jellyfish - string metrics (fuzzy matching) • we provide an API for scrapers so they can write code like Bill('upper', 'HB 1', '2010 Budgetary Proposal') bill.add_action('lower', 'Introduced', '2010-01-20') • when run locally writes JSON to disk, when we run it can be imported to mongodb
API ◦ http://openstates.sunlightlabs.com/api/ • 13 states "ready" and 11 "experimental" ◦ AK, CA, MD, MN, NJ, NC, OH, PA, TX, UT, VT, WI ◦ AZ, CT, FL, IN, MI, MS, NV, SD, VA, WA, DC • Lots of data ◦ 4012 legislators ◦ 123,239 bills ◦ 1,001,473 actions ◦ 96383 votes • All 50 by early 2012
• API Docs: http://openstates.sunlightlabs.com/api/ • RESTful JSON-based API ◦ state metadata ◦ bills, legislators, committees ▪ search by attribute or lookup by ID ◦ legislator lookup by lat+long • govkit ruby gem http://github.com/opengovernment/govkit • python-openstates http://github.com/sunlightlabs/python-openstates openstates.Legislator.search(state='ca', first_name='Mike') openstates.Bill.search('agriculture', state='vt')
want a good project to learn on ◦ Contributor Guide http://goo.gl/CceA ◦ Join the Google Group: http://goo.gl/M3An ◦ http://github.com/sunlightlabs/openstates