an application to connect people to power with their phones
52
stars
1,820
commits
Python
primary language
Apr 17, 2026
updated
Connecting people to power through their phones.
The admin interface lets activists:
The server lets callers:
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.
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.
Review the campaign setup, place a test call to yourself, and get the script to embed in your action platform.
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.
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
python tests/run.py
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 flask load_political_data
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.
Python
64.7%
JavaScript
18.6%
HTML
14.2%
CSS
1.8%
an application to connect people to power with their phones
52
stars
1,820
commits
Python
primary language
Apr 17, 2026
updated
Connecting people to power through their phones.
The admin interface lets activists:
The server lets callers:
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.
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.
Review the campaign setup, place a test call to yourself, and get the script to embed in your action platform.
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.
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
python tests/run.py
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 flask load_political_data
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.
Python
64.7%
JavaScript
18.6%
HTML
14.2%
CSS
1.8%