A framework for mass FOIA campaigns. Distribute public records requests, manage responses and organize file attachments using GMail, Sheets and Drive.
Technically, it's a bunch of a API calls on cron.
First, set up your server, environment, credentials and FOIA template (see setting up).
Once the server, environment, repository and credentials are set up, use mgr.py
to initialize the application.
Load contacts directly in Gmail via the import contacts CSV option. See docs/technical.md for detailed walkthrough of the full FOIAmail workflow for importing contacts.
When your contacts are loaded, build agency labels for your contacts:
python mgr.py --build-labels
Next, prepare drafts for your contacts. You can look through the drafts and find any errors before you send them out:
python mgr.py --build-drafts
Once everything looks good, you can send them out with this command:
python mgr.py --send-drafts
(The --build-drafts
and --send-drafts
will re-create the drafts each time, so make sure you delete them when prompted.)
There are two ways to run the monitoring system for tagging/categorizing incoming emails, building reports and downloading responsive attachments: traditional VM using cron and Docker.
Install a crontab to run the following tasks at regular intervals:
mgr.py --label
, to label incoming messages by agency and status (every few minutes)mgr.py --atts
, to migrate GMail attachments to Drive (nightly)mgr.py --report
, to generate a status report of agency responses in Google Sheets (nightly, after attachments migrate)This is a good time to double-check the server timezone is set to America/Chicago. See technical docs.
There's a Dockerfile
for running the services. If you have make
you can simply run:
make docker_start
Or you can do it yourself:
docker build . -t foiamail
docker run --mount source=foiamail_logs,target=/home/ubuntu/foiamail/log/logs -t foiamail
Verify draft FOIA messages before sending, including message count, contents, recipients and labels
Routine checklist for operating FOIAMail:
See docs/technical.md for detailed explanations of commands.