CommunityTechnology
Accountability

CopWatchdog exists to collapse the timeline between police misconduct and public accountability. When an NYPD officer is scheduled for trial, our automated system immediately extracts and publishes their complete public record—complaint history, lawsuit patterns, disciplinary outcomes, and compensation data—creating real-time transparency at the exact moment it matters most. By aggregating trial schedules from NYPD court calendars with complaint data from 50-a.org and salary information from NYC Open Data, we transform scattered public records into actionable intelligence for journalists, organizers, and community advocates. This is live accountability infrastructure that empowers communities to respond to police corruption and misconduct as it moves through the system, not after the fact.

The data is already public; we make it accessible, searchable, and immediately relevant to the people who need it to organize, report, and demand justice in real time.

1. SCRAPING (Monthly)
NYPD Trials + 50-a.org + NYC Payroll

Python Playwright scraper

CSV output (YYMM-copwatchdog.csv)


2. ETL (Automated)
Bash import scripts

PostgreSQL (cwd_raw schema)

Delta detection (identify stale records)

Rescrape list generation


3. API (Live)
DOGHOUSE API endpoints

WordPress plugin

Public website interface

Developed For

Additional Info

Officer Identity:

  • Name, Badge, Rank, Precinct
  • Race, Gender, Tax ID, Email

Service History:

  • Current Assignment, Assignment Start
  • Previous Assignments, Service Start Date

Disciplinary Records:

  • Total Complaints, Allegations
  • Substantiated/Unsubstantiated counts
  • Within Guidelines count

Legal Actions:

  • Number of Lawsuits
  • Total Settlements (currency)

Compensation:

  • Base Salary, Pay Basis
  • Regular Hours, Regular Gross Paid
  • OT Hours, Total OT Paid
  • Total Other Pay

Trial Information:

  • Court Date, Time, Room
  • Case Type