https://github.com/billimarie/prosecutor-database
An open-source, community oversight dataset of all U.S. Prosecutors. Happy Hacktoberfest 🎃
https://github.com/billimarie/prosecutor-database
first-timers government hackathon hacktober hacktoberfest hacktoberfest2020 prison prisoners-rights prosecutor us-attorneys us-elections us-government us-prosecutors
Last synced: about 2 months ago
JSON representation
An open-source, community oversight dataset of all U.S. Prosecutors. Happy Hacktoberfest 🎃
- Host: GitHub
- URL: https://github.com/billimarie/prosecutor-database
- Owner: billimarie
- License: other
- Created: 2017-04-07T04:31:00.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2025-08-14T20:10:31.000Z (7 months ago)
- Last Synced: 2025-08-14T22:16:17.988Z (7 months ago)
- Topics: first-timers, government, hackathon, hacktober, hacktoberfest, hacktoberfest2020, prison, prisoners-rights, prosecutor, us-attorneys, us-elections, us-government, us-prosecutors
- Language: HTML
- Homepage: https://billimarie.github.io/prosecutor-database
- Size: 18.1 MB
- Stars: 92
- Watchers: 12
- Forks: 86
- Open Issues: 46
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# U.S. Prosecutor Database
> Last Updated: August 14th, 2025
[](http://unmaintained.tech/)
## Looking For Maintainer
The U.S. Prosecutor Database is looking for its next maintainer. If you have a vision of how to create a public, searchable database, ledger, or chain which everyday users can interact with through a simple UI/UX front-end, please submit a PR and we'll make sure this project lives on through your contributions.
---
## Setting Up
To run the app locally on your machine:
1. install `node` & `npm` ([see official docs](https://www.npmjs.com/get-npm))
2. install `meteor` via terminal: `npm install -g meteor` ([see official docs]([https://www.meteor.com/install](https://v2-docs.meteor.com/install.html#installation)))
3. `npm install`
4. `meteor run` & open `http://localhost:3000/` in your browser
### Adding Data to your local environment
To play around with data:
1. in a new (simultaneous) terminal tab: `meteor mongo`
2. verify that the `show collections` command produces the `Attorneys` collection
3. insert a new document using the `api` folder .js files as a base. Make sure it contains the `name`, `state`, & `role`--otherwise it won't work. Example: `db.Attorneys.insertOne({"id": "ag-01","state": "Alabama","name": "Steve Marshall","role": "Attorney General"})`
4. check on the app in your browser; it should automatically refresh
### JSON Schema
I've asked ChatGPT to enhance our old JSON schema:
```
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "US Prosecutor Database Schema",
"description": "Enhanced schema for storing prosecutor profiles, policies, metrics, campaign statements, provenance, and privacy info for the US Prosecutor Database.",
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z]{2}-[a-z0-9\\-]+-[0-9]{4}$",
"description": "Unique ID: state (2-letter), jurisdiction slug, year (e.g., ca-los-angeles-2025)"
},
"prosecutor": {
"type": "object",
"properties": {
"name": { "type": "string" },
"role": { "type": "string", "enum": ["District Attorney", "Assistant District Attorney", "State Attorney General", "Deputy AG", "US Attorney"] },
"jurisdiction": {
"type": "object",
"properties": {
"state": { "type": "string", "minLength": 2, "maxLength": 2 },
"county": { "type": "string" },
"city": { "type": "string" }
},
"required": ["state"]
},
"party_affiliation": { "type": "string", "enum": ["Democrat", "Republican", "Independent", "Nonpartisan", "Other", "Unknown"] },
"demographics": {
"type": "object",
"properties": {
"gender": { "type": "string", "enum": ["Male", "Female", "Nonbinary", "Other", "Unknown"] },
"race_ethnicity": { "type": "string" },
"dob": { "type": "string", "format": "date" }
}
},
"contact": {
"type": "object",
"properties": {
"phone": { "type": "string" },
"email": { "type": "string", "format": "email" },
"website": { "type": "string", "format": "uri" },
"mailing_address": { "type": "string" }
}
},
"term_start": { "type": "string", "format": "date" },
"term_end": { "type": "string", "format": "date" },
"photo_url": { "type": "string", "format": "uri" }
},
"required": ["name", "role", "jurisdiction"]
},
"policies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"topic": { "type": "string", "description": "Policy category (e.g., 'discovery', 'bail', 'diversion')" },
"description": { "type": "string" },
"url": { "type": "string", "format": "uri" },
"effective_date": { "type": "string", "format": "date" },
"last_updated": { "type": "string", "format": "date" }
},
"required": ["topic", "url"]
}
},
"metrics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "string", "description": "Metric identifier (e.g., 'diversion_rate', 'discovery_timeliness')" },
"name": { "type": "string" },
"value": { "type": "number" },
"unit": { "type": "string", "description": "Unit of measurement (%, days, ratio, etc.)" },
"period": { "type": "string", "description": "Reporting period (e.g., 2025Q2, 2024-01)" },
"confidence": { "type": "number", "minimum": 0, "maximum": 1 },
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": { "type": "string", "format": "uri" },
"quote": { "type": "string" },
"quote_hash": { "type": "string" }
}
}
},
"caveats": { "type": "array", "items": { "type": "string" } }
},
"required": ["id", "value", "period"]
}
},
"campaign_statements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": { "type": "string", "format": "date" },
"url": { "type": "string", "format": "uri" },
"statement": { "type": "string" },
"themes": { "type": "array", "items": { "type": "string" }, "description": "Tags for major policy stances (e.g., 'increase_incarceration', 'expand_diversion')" }
},
"required": ["date", "statement"]
}
},
"provenance": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": { "type": "string", "description": "Field path in dot notation" },
"source_url": { "type": "string", "format": "uri" },
"retrieved_at": { "type": "string", "format": "date-time" },
"text_span_hash": { "type": "string" },
"model_confidence": { "type": "number", "minimum": 0, "maximum": 1 }
},
"required": ["field", "source_url", "retrieved_at"]
}
},
"privacy": {
"type": "object",
"properties": {
"pii_redaction": { "type": "boolean" },
"dp_noise_epsilon": { "type": "number", "description": "Differential privacy parameter if noise is added" }
}
},
"last_updated": { "type": "string", "format": "date-time" }
},
"required": ["id", "prosecutor", "last_updated"]
}
```
You'll notice the following has been added:
- metrics[] for justice-forward measures with evidence and confidence levels.
- policies[] to store topic-tagged policy statements with effective dates.
- campaign_statements[] to track rhetoric vs. practice.
- provenance[] to record exactly where and when each data point came from (critical for AI-assisted ingestion).
- privacy controls to indicate whether PII was redacted or differential privacy applied.
- Stronger validation patterns for IDs, enums, and date formats to avoid messy data.
---
## Production
TBD
---
## Important Links
- **View the live web app** (coming soon)
- **[Read the Docs](https://github.com/billimarie/prosecutor-database/blob/master/DOCS.md)** (GitHub README.md)
- **[View the Docs](https://billimarie.github.io/prosecutor-database/)** (website)
- **[What do Prosecutors have to do with Police Brutality?](https://github.com/billimarie/prosecutor-database/blob/master/DOCS.md#0-history-why-prosecutors)**
- **[Our History](https://github.com/billimarie/prosecutor-database/blob/master/DOCS.md#1-overview)**
---
## Community
### Maintainers
> Would you like to help maintain this project? Email me (link in profile).
### Contributors
**Interested in contributing to the web app?** You'll find dev notes in the [**DOCS.md**](https://github.com/billimarie/prosecutor-database/blob/master/DOCS.md). Our stack is: Node.js, Meteor.js, MongoDB, Heroku.
**We also need help with documentation for the GitHub page**: https://billimarie.github.io/prosecutor-database. You can use the [DOCS.md](https://github.com/billimarie/prosecutor-database/blob/master/DOCS.md) & the [Hacktoberfest Issue](https://github.com/billimarie/prosecutor-database/issues/80) as references to update our outdated GitHub page.
---
## Post-Carceral
**Post-Carceral** is a digital community group of volunteers working on civic tech projects (like the US Prosecutor Database) in service of working toward a post-carceral ("beyond prison") world.
### Stay Updated
- [Sign up for our mailing list](http://eepurl.com/dqPQdL).
- You can also find USPD updates on our Twitter: [@USProsecutorDB](https://twitter.com/USProsecutorDB).
- To get involved in a remote Sunday session, follow [@postcarceral](https://twitter.com/postcarceral). This is our general prisoners' rights group responsible for housing the USPD project.
### Volunteer
You don't have to be a developer or a prisoners' rights activist to join. We're looking for all types of people with all types of interests & expertise to collaborate with.
**Datathons**: On Sundays, we hang out remotely and discuss recent prosecutor news, primary results, & campaigns. We also brainstorm new ways to collect data (considering the strange logic of the prosecutorial system, especially as it differs between localities & regions). If you'd like to join, send me an email.
[Back to Top](#us-prosecutor-database)
---
## License
The USPD is an open-source community project built to house data about current and previous US Prosecutors (copyright (c) 2017 - 2020 Billimarie Lubiano Robinson). It is licensed under **GNU GPLv3**. This means you are able to use, modify, & distribute USPD as long as the following conditions are met:
- Acknowledge the original source (this repository & its contributors)
- Apply the same license & copyright usage
- Make public any changes, updates, or improvements upon USPD
For more information, please view the [LICENSE.md](/.github/license.md) file.
[Back to Top](#us-prosecutor-database)