{"id":13857124,"url":"https://github.com/newsdev/who-the-hill","last_synced_at":"2025-07-13T20:30:40.416Z","repository":{"id":23870307,"uuid":"100057429","full_name":"newsdev/who-the-hill","owner":"newsdev","description":"Who The Hill: An MMS-based facial recognition service for members of Congress.","archived":true,"fork":false,"pushed_at":"2023-02-15T17:45:11.000Z","size":140,"stargazers_count":222,"open_issues_count":11,"forks_count":15,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-11-22T14:39:27.014Z","etag":null,"topics":["reporting-tool"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/newsdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-08-11T17:50:01.000Z","updated_at":"2024-10-14T14:28:46.000Z","dependencies_parsed_at":"2023-01-14T00:00:03.489Z","dependency_job_id":"c1832461-0108-4ec7-974c-9c887ee0a2ca","html_url":"https://github.com/newsdev/who-the-hill","commit_stats":null,"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/newsdev/who-the-hill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsdev%2Fwho-the-hill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsdev%2Fwho-the-hill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsdev%2Fwho-the-hill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsdev%2Fwho-the-hill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/newsdev","download_url":"https://codeload.github.com/newsdev/who-the-hill/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsdev%2Fwho-the-hill/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265199613,"owners_count":23726686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["reporting-tool"],"created_at":"2024-08-05T03:01:26.601Z","updated_at":"2025-07-13T20:30:40.101Z","avatar_url":"https://github.com/newsdev.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Who The Hill\n\n## What is Who The Hill?\n[Shazam, but for House members faces.](https://twitter.com/jestei/status/819250406471729152)\n\nWho The Hill is an MMS-based facial recognition service for members of Congress. Reporters covering Congress can text pictures of members of Congress to a number we’ve set up and they’ll get back:\n\n1. A list of all the members of Congress recognized in their picture\n2. Numbers indicating how confident Amazon is about the recognition\n3. Colors corresponding to each member of Congress recognized\n4. The picture they sent, but with a box around each member of Congress in the color corresponding to them\n\n\u003cimg src=\"https://pbs.twimg.com/media/DGP41GAU0AASDvh.jpg\" width=\"414\" alt=\"Who The Hill in the flesh\"\u003e\n\n## Local Installation\nBefore getting the app running, you'll need a [Twilio](https://www.twilio.com/) account (with an operational MMS number), an [Amazon Rekognition](https://aws.amazon.com/rekognition/) account and an [Amazon S3](https://aws.amazon.com/s3) or [Google Cloud Storage](https://cloud.google.com/storage/) account.\n\nWho The Hill also requires Python3 and works best with `virtualenv` and `virtualenvwrapper`. For more on how NYT Interactive News sets up our Python environment, check out [this blog post by Sara Simon](https://open.nytimes.com/set-up-your-mac-like-an-interactive-news-developer-bb8d2c4097e5).\n\n```\ngit clone https://github.com/newsdev/who-the-hill.git \u0026\u0026 cd who-the-hill\nmkvirtualenv whothehill\npip install -r requirements.txt\n```\n\nTo run the app locally, you will need some environment variables.\n\nThree sets of AWS (or AWS-like) keys are needed:\n* AWS Rekognition credentials\n```\nAWS_ACCESS_KEY_ID\nAWS_SECRET_ACCESS_KEY\nAWS_DEFAULT_REGION\n```\n\n* AWS S3-like service endpoint and credentials\n```\nAWS_S3_ENDPOINT\nAWS_GCS_ACCESS_KEY_ID\nAWS_GCS_SECRET_ACCESS_KEY\n```\n\n(You can find more information about the AWS and AWS-like credentials [here.](http://boto3.readthedocs.io/en/latest/guide/configuration.html#environment-variable-configuration))\n\nYou will also need credentials and a number from [Twilio.](https://www.twilio.com/):\n```\nTWILIO_ACCOUNT_SID\nTWILIO_AUTH_TOKEN\nTWILIO_NUMBER\n```\n\nTo check whether results returned from Rekognition are actually members of Congress, you can either use the json dump of members of Congress (as well as variations on spellings of their name) included in this repo, or use your own API endpoint that returns similarly formatted json. If you don't set this environment variable, Who The Hill will default to using the included json file:\n```\nNICKNAMES_ENDPOINT\n```\n\nYou can store your environment variables in a `dev.env` file...\n```\nexport AWS_ACCESS_KEY_ID='\u003cYOUR_ID\u003e'\nexport AWS_SECRET_ACCESS_KEY='\u003cYOUR_ACCESS_KEY\u003e'\nexport AWS_DEFAULT_REGION='\u003cYOUR_PREFERRED_REGION\u003e'\nexport TWILIO_ACCOUNT_SID='\u003cYOUR_ACCOUNT_SID\u003e'\nexport TWILIO_AUTH_TOKEN='\u003cYOUR_AUTH_TOKEN\u003e'\n...\n```\n\n...and run `source dev.env`. This will export your credentials to your environment.\n\n## Running the App\nYou can run the app locally as a web service that integrates with Twilio or as a CLI for examining a folder full of images to recognize.\n\n### As a web application\nRun the app locally `python who_the_hill/web/pub.py` and tunnel with [ngrok](https://ngrok.com/) so that you can integrate with Twilio, which needs a public-facing endpoint to POST data to.\n\n### As a CLI for recognition\nPut the images within which you'd like to recognize members of Congress into a folder like `/tmp/to_recognize` and then call the CLI like this:\n\n```\npython who_the_hill/cli --directory /tmp/to_recognize/\n```\n\nThe app will examine the images, find and recognize faces, and produce a JSON report. Note: The CLI still requires working S3/GCS tokens and (obviously) access to the AWS Rekognition API. It does not require Twilio credentials, though.\n\n## Acknowledgements\n[Jennifer Steinhauer](https://www.nytimes.com/by/jennifer-steinhauer) came up with the original idea behind Who The Hill and was an enthusiastic sponsor and tester.\n\nWho The Hill was developed by Interactive News interns [Gautam Hathi](https://github.com/gautamh) and [Sherman Hewitt](https://github.com/SHewitt95) in the summer of 2017 and partially rewritten in the spring of 2018 by [Jeremy Bowers](https://github.com/jeremyjbowers), all under the watchful eye of [Rachel Shorey](https://github.com/rshorey).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewsdev%2Fwho-the-hill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewsdev%2Fwho-the-hill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewsdev%2Fwho-the-hill/lists"}