RSSAmplifier

Blog

Crime De-Coder

Crime Analysis Consulting Services

crimede-coder.comRSS feed ↗107 posts

Latest posts

Notes on Crime Trends in the US

Crime trends are declining across the US. This post goes over shared US crime trends, how to break crime trends down into seasonal and trend city components, and identifies monthly outliers using RTCI data.

Architecture Notes on VerusCite

This blog post describes the agentic LLM processing and low-cost hosting infrastructure of the VerusCite application I created. If you want a similar app, Crime De-Coder can help.

Data Science CV

Data Science CV, PDF version.

Filtering Secrets from Coding Agents with a Hook

AI coding tools, like Claude Code, can risk leaking your secret information. This post shows how using a simple Hook can prevent the AI from knowing your secrets to begin with.

NCVS Crime Victimization Reporting Dashboard

Interactive analysis of victimization reporting rates to police in the United States (NCVS 1992-2024). Tech stack: Cloudflare R2 to host the data, DuckDB WASM to form ad-hoc SQL queries, and D3.js for interactive visualizations.

How long to plan your experiment (ASEBP 2026 Talk)

Slides for the ASEBP 2026 conference presentation on planning an experiment to test if strategies are increasing arrest rates.

Experiment Planning Tool

New interactive tool to help plan crime reduction experiments. It uses WebR to run simulations in the browser to estimate the power of different experimental designs.

Evidence Based Oversight on Police Use of Force

Why policing scholars and practitioners should join the American Society of Evidence Based Policing (ASEBP). I describe why it is the best organization for bridging the gap between research and practice.

Policing Scholars should join ASEBP

Why policing scholars and practitioners should join the American Society of Evidence Based Policing (ASEBP). I describe why it is the best organization for bridging the gap between research and practice.

Using Agentic Coding Tools for Crime Analysis

This blog post shows using the Gemini CLI coding tool to conduct crime analysis of motor vehicle break ins in Chapel Hill. I go over how the tool out of the box does excellent in writing python code, but also identify several errors that needed human review.

Law Enforcement Analyst Podcast on LLMs for Mortals

In this episode of Analyst Talk, Jason Elder welcomes back Dr. Andrew Wheeler, who recently authored the book Large Language Models for Mortals, to explore how large language models are transforming the work of analysts. Moving beyond chatbots, Andrew breaks down practical applications such as extracting insights from reports, automating workflows, and integrating AI with tools like SQL and Excel.…

Don't focus on the kids for violence prevention

It is common for community groups to suggest school programs to prevent violence. The majority of gun violence, both victims and offenders, are adults. Any violence reduction intervention should focus on adults, not juveniles.

Math Hacks for Life

Math hacks for life. Keynote presentation at the SMathhacks hackathon at the North Carolina School of Science and Math.

Using local LLM models vs APIs

Even if you can run some of the large LLM models for text processing, it may not make sense in terms of throughput and pricing. Here I go through an example comparing running a Qwen model locally vs API calls via OpenRouter.

Preview Large Language Models for Mortals

PDF preview of the first 60+ pages in Large Language Models for Mortals book. Available for purchase in the Crime De-Coder store

Preview Data Science for Crime Analysis with Python

PDF preview of data science for crime analysis with python. Available for purchase in the Crime De-Coder store

Academic CV

Academic CV, PDF version.

llms.txt

For the machines, a description of the work I do at Crime De-Coder.

Confidence in Classification using LLMs and Conformal Sets

One of the common use cases for large language models is classifying text -- but data scientists often want to know the confidence that the text falls into the category. This blog post shows an example using a models log-probabilities to determine if text has obscene language, while setting the recall rate or estimating the precision of the classification.

The Alt-Ac Job Beat Newsletter Post 24 (new book out on LLMs)

The reason I started the newsletter was to help folks with backgrounds in social science and crime analysis develop the skills to compete in the private sector job market. I now run a team of close to 10 folks at Gainwell, and I would love to hire more individuals with PhDs, but many lack the requisite skills. This book is meant to give folks the necessary background to be qualified for data…

Large Language Models for Mortals book released

I have released a new book, Large Language Models for Mortals: A Practical Guide for Analysts. The book is a tutorial on how to use foundational model APIs in python, with examples for all major model providers (OpenAI, Anthropic, Google, AWS Bedrock). And extensive materials on the basics of LLMs (structured outputs, RAG, tool calling). It also includes a chapter on using LLM coding tools (GitHub…

Planning an Experiment in Increasing Arrest Rates

Do you want to know if your tech purchase or new strategy is increasing arrest rates? This blog post goes over a methodology (with R code) on how to plan how long to monitor your intervention to tell if it is working.

We don't know what causes wide spread crime trends

Many criminologists and pundits will speculate about what causes general crime to go up or down, but those theories often do not meet the same rigorous standards we expect when we evaluate evidence based policing interventions.

Coding Agents Risk Leaking Secrets

Coding agents, like Cursor and Claude Code, generate a new type of security risk,. This is where they leak sensitive data to outside websites through tool calling. I describe ways to reduce this risk in this blog post.

A graph is worth 1000 tables

CompStat reporting traditionally uses tables of pre-post crime metrics. This can fail to capture the distinction between short term spikes versus long term trends. I show two example charts, a weekly Poisson z-score chart and a monthly seasonal chart, that are better suited to identifying those patterns in crime data.

Translations of Python book into Spanish and French

I have translated my data science for crime analysis book into Spanish and French using generative AI tools. Print and epub versions are available for purchase worldwide. See reviews of the English version, and for a limited time purchase the epub versions in any of the languages for $19.99.

Avoid Chasing the Noise

Talk given to the Penn criminology masters students. Avoid chasing the noise when monitoring crime going up or down, or seeing if your intervention reduced crime relative to a control area.

Using the SPPT to Monitor Changes in Crime

When examining changes in crime over time, I suggest to use the, as other techniques are often too noisy. I demonstrate with python code and open source data from Durham, showing areas with increased thefts from motor vehicles.

Is gun shot detection tech worth the cost?

I detail how to evaluate the cost and benefits of gun shot detection, from lives saved to reductions in crime. Only areas with very high levels of gun violence do I think it is currently cost effective due to lives saved. There is not consistent evidence it reduces crime.

Using LLMs to Extract Data from Text

One application of generative AI tools is to extract information from plain text. This example code shows using python, AWS, and Anthropic models to classify elements of crime in police narratives.

How much do students spend on books at GSU

Dashboard to show how much students spend on books at GSU. Tech stack: Cloudflare R2 to host parquet files, DuckDB WASM to query the data client side, and D3.js to create a sortable table.

Finding outliers in proportions

Here I show a simple technique, using a funnel chart, to identify when a proportion is an outlier relative to the number of observations. I use a simulated data example in python to showcase the technique.

Denver's STAR Program and Disorder Crime Reductions

Reviving a series of posts I wrote for the American Society of Evidence Based Policing in theseries. First is a review of why I am skeptical that Denver's STAR alternative responder program caused a large crime decrease, and I go over the distinction between CAD and incident reports.

Some extensions to the WDD statistic

I have developed several extensions to the WDD statistic, including different temporal periods in pre/post, normalizing per area, combining different harm weight estimates, and continuous monitoring. See the post for examples and a spreadsheet to do the calculations.

Why crime analysts should learn SQL

Analysts should learn SQL to get ad-hoc queries faster, make your work more reliable, and have more skills that are transferable to other analyst positions.

Alt Academic Newsletter Post 023

Post 023 Alt Academic newsletter. Last newsletter for now, broadening your skills can help buffer against the current volatility in academic and government jobs.

Crime Analysts make too many BOLOs

Analysts working on too many BOLOs is a poor use of analyst time. This post I give several better uses of your time for analyst products.

Alt Academic Newsletter Post 022

Post 022 Alt Academic newsletter. Can apply more than once, using python to manipulate mouse for scraping.

Junk science: Detecting deception in 911 homicide calls

Research on detecting lying in 911 calls is junk, and I review a recent paper that makes a major mistake that greatly inflates its accuracy.

Alt Academic Newsletter Post 021

Post 021 Alt Academic newsletter. Don't worry about stack ranking, consulting travel jobs.

Alt Academic Newsletter Post 020

Post 020 Alt Academic newsletter. Rejection is not a normal part of other jobs, project manager if you are not quant, scraping via APIs or playwright.

A market for empirical research

Instead of relying on grants to outsource research, it makes sense for private and public sector agencies to contract directly with researchers. It is much faster and better savings for the researchers themselves.

Alt Academic Newsletter Post 019

Post 019 Alt Academic newsletter. Practice your talks, startup job focused on surveys, Willison blog to keep up on LLMs.

How to use python to query your RMS

Many analysts struggle to connect to data that is crucial for their job. In this post I go over my approach to figure out the proper ODBC connections to query record management systems using python.

Applications of AI in policing

Artificial intelligence has a ton of buzz, but not much substance in current public discussions. This post goes over some of the popular AI applications in policing, gives my opinion of their feasibility, and discusses some examples of AI that are over promising what they can accomplish.

Alt Academic Newsletter Post 018

Post 018 Alt Academic newsletter. Social media experience, UX researcher, Research position and Chase, and use Quarto.

Crime De-Coder Homepage

Updated homepage with shorter description for services + footer for links. Any feedback on website appreciated!

Durham Hotspots Slippy Map

Updated demo for interactive map. Built using python + folium. Incorporates custom looks and interactions.

Alt Academic Newsletter Post 017

Post 017 Alt Academic newsletter. Salary ranges can be misleading, creating LLC, updated jobboard link.

Aoristic analysis of crime times in python

Aoristic analysis is necessary when analyzing property crimes that have uncertain times they occurred. Check out this blog post for example graphs and links to python code.