an application to connect people to power with their phones
Clone or download
Pull request Compare This branch is 643 commits ahead, 9 commits behind EFForg:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
alembic
call_server
instance
requirements
scripts
tests
.bowerrc
.coveragerc
.gitignore
.travis.yml
Dockerfile
INSTALLATION.md
INTEGRATION_API.md
INTEGRATION_CRM.md
INTEGRATION_JS.md
LICENSE
OPEN_DATA_SOURCES.md
Procfile
README.md
alembic.ini
bower.json
docker-compose.yml.example
entrypoint.sh
manager.py
newrelic.ini
requirements.txt
runtime.txt
uwsgi.ini

README.md

Call Power

Connecting people to power through their phones.

The admin interface lets activists:

  • Create and edit campaigns
  • Adjust call targets and phone numbers
  • Record audio prompts and select versions
  • Easily embed campaign forms on their website
  • View campaign statistics and system analytics

The server lets callers:

  • Dial in directly to the campaign number
  • Fill out a web form and get a call back on their phone
    • specifying a target directly
    • or entering their zip code to look up their location
  • Reference a script during the call

Campaign Configuration

  1. Create a campaign with one of several types, to determine how callers are matched to targets.
  • Executive connects callers to the Whitehouse Switchboard, or to a specific office if known
  • Congress connects callers to their Senators, Representative, or both. Uses data from the TheUnitedStates.io.
  • State connects callers to their Governor or State Legislators. Uses the OpenStates API.
  • Local connects callers to a local official. Campaigners must enter these numbers in advance.
  • Custom can connect callers to corporate offices, local officals, or any other phone number entered in advance.
  1. Choose targets by segmenting on user location (determined by zipcode or lat/lon), and order by legislative chamber or random shuffle. For local and custom campaigns, campaigners can set a specific order by drag-and-drop.

  2. Record audio prompts in the browser (Firefox/Chrome only), or edit with another program and upload as MP3 files. For dynamic prompts, you can also text-to-speech templates. Reuse versions between campaigns, or adjust your prompts as the campaign evolves.

  3. Review the campaign setup, place a test call to yourself, and get the script to embed in your action platform.

Action Integration

For most uses, you can just place the <script> tag provided in the launch page into your action platform. This will add a post-submit callback to your action form to connect the caller, and optionally display the script in a lightbox.

For more complex integrations, Call Power provides javascript embeds and a full json API.

Individual actions can also be synced to CRMs, via a batch process.

Installation Instructions

This application should be easy to host on Heroku, with Docker, or directly on any WSGI-compatible server. Requires Python, flask, a SQL database (we recommend Postgres, but Mysql should work), Redis or Memcache, and an SMTP server.

Read detailed instrustions at INSTALLATION.md

Build Status Coverage Status

Political Data

Political data is downloaded from open data sources as flat files stored in this repository. These are read on startup and saved in a memory cache for fast local lookup.

To update these files with new data after elections, run cd call_server/political_data/data && make clean && make, and python manager.py load_political_data

Code License

See the license file for licensing information under the GNU AGPL. This license is applicable to the entire project, sans any 3rd party libraries that may be included.