Maggie Lee

Hi, I'm a data reporter who covers state and local governments in Georgia. I started as a print reporter.

Print bylines and some data work in places like McClatchy's Georgia papers, Creative Loafing, SaportaReport, Atlanta Civic Circle and others.

Now I mainly do data visualizations, web-scraping and web apps. And good robots. For outlets like The Current GA. And sometimes still a bylined article still.

maggie.a.lee[ at ]gmail.com
Phone or signal: 404-five three eight-2740

github logo

Legislature 101: When do they vote?

thumbnail preview of graph showing legislative votes at the last minute

State legislative days turn into confused legislative nights. The Georgia General Assembly voted 996 times in 2024. More than a quarter of those votes were on two deadline days. For The Current.

Article

Ingredients: Scraping, Datawrapper

How Coastal Georgia voted

thumbnail preview of coastal Georgia 2024 presidental election results map

Coastal Georgia's 2024 presidental election results presented by party, geography and scale for The Current.

Coastal Georgia votes for president

Ingredients: QGIS, Flourish

Georgia voter cancellation portal requires second round of security fixes

thumbnail of an i voted sticker

The Georgia Secretary of State's website was still leaking data after the office said it was fixed. For The Current.

Article

Ingredients: Inspecting json files in browser console

On the Record: Which entities pay — and don't pay — Chatham County Property Taxes

thumbnail preview of Chatham untaxed properties map

Investigation into local property tax breaks for some of the county's richest entities. For The Current

Article and maps

Ingredients: Python, data-cleaning, csv, Flourish, QGIS

Atlanta and Georgia politics Bluesky bot & RSS feed

Decorative picture of a circuitboard

@GaPolBot monitors public Georgia and Atlanta public agency websites and RSS feeds and tweets what it finds.
Like, the governor's executive orders, Supreme Court of Georgia opinions and when new companies register to lobby in Georgia.

Also on RSS

Ingredients: Python, scraping, civic bot, RSS

Atlanta Airbnb snapshot

thumbnail preview of Atlanta airbnb map

Data byline on a couple SaportReport stories for scraping, understanding and mapping Atlanta Airbnb data.

A snapshot of Atlants's Airbnb listings raises questions about regulation and affordability

Northern suburbs' Airbnb data show challenges of short-term rental regulation

Ingredients: Python, scraping, QGIS, Flourish

Latest Georgia campaign money report: Lots of commas

thumbnail preview of selected  Georgia campaign fundraising 2022 cycle

Experiment in visual storytelling in a tight CMS. Basically an icon bar graph with paragraphs between the bars.

Live version at Atlanta Civic Circle

Ingredients: Flourish, no-code chart, grouped symbol bar chart

Georgia legislators above average

thumbnail preview of georgia legislator age historgram

Georgia lawmakers are above average in age and wealth. Brings together several data sources and experiments with telling the story as a quiz.

Live version at Atlanta Civic Circle

Ingredients: Python, scraping, data-cleaning, Flourish

Where Georgians live together and apart

thumbnail preview of Georgia demographic dot density map

Demographic dot-density map

Live version at Atlanta Civic Circle

Unframed version

Ingredients: Mapbox, QGIS

How to gerrymander

Thumbnail preview of graphics showing different ways to draw political districts that lead to different partisan makeups of legislatures

Graphics that explain "packing," "cracking" and other ways to manipulate district maps for political gain. Atlanta Civic Circle used these panels in social media.

Live version at Atlanta Civic Circle

Unframed version on Floursih

Ingredients: Photoshop, Flourish, no-coding

Know your state lawmakers 2021

A map of Georgia House districts

Social media and contact info for state lawmakers. Click on a district to find yours.

Live version at SaportaReport.com

Code on Github

Ingredients: Leaflet, map, HTML

2020 crime in Buckhead versus the rest of Atlanta

A graph showing types of crime in Buckhead vs the rest of Atlanta

You need a chart to tell a story that has lots of numbers, like crime stats. That's doable in fairly little time with very little coding via Datawrapper, Flourish and other software. Great for any size publication.

Live version at Reporter Newspapers

Ingredients: No-coding or low-coding charts and graphs, Flourish

Georgia election results (map)

Map of Georgia election results

Map of election results and number of voters by county

Live version at SaportaReport.com

Ingredients: Datawrapper, csv

Commercial property tax discounts in Atlanta

thumbnail preview of map and list of property tax discounts in Atlanta

Map and list tracking where Atlanta's and Fulton's economic development agencies have authorized commercial property tax breaks, starting in 2019. Goes with ongoing reporting at SaportaReport.com.

Live version

Code on GitHub

Ingredients: Leaflet, Flask, Python, static page

If Georgia's budget were $1

thumbnail preview of Georgia budget chart

If Georgia's budget were $1, health care and education would get quarters. Most other things would get pennies

With story at SaportaReport.com

Unframed version

Developed with Observable

Ingredients: D3.js, Excel

Georgians squeeze into metro Atlanta. Here's how much:

Thumbnail preview of Georgia map with counties sized by population

A personal project, just trying out a county map with the counties sized by 2016 population.

Interactive version

Code on GitHub

Ingredients: Cartogram, cartoram.js, D3.js, HTML, CSS

Georgia lawmakers wrote ~4,800 things, mostly honors

Thumbnail preview of graphic about Georgia legislature bill disposition

Another personal project, from 2016. I wanted to show what gets filed and handled in the Georgia Legislature. I wrote a little Python script to scrape, then categorize, these bills. D3.js did the heavy lifting on drawing the chart. It's finished and annotated in Photoshop.

Chart as png

Code on GitHub

Ingredients: Python, web scraping, D3.js, Photoshop

About 26,000 refugees moved to Georgia in 10 years. Here's where most came from and went to in metro Atlanta

Thumbnail preview of graphic about refugee resettlement in Georiga cities

A chart created for the AJC in 2016, though that page has succumbed to link rot :(

Unframed version

Code on GitHub

Ingredients: D3.js, JavaScript, HTML, CSS, CSV

Miscellaneous

APC Workshop: Excel is for reporters, not just accountants (2017)

APC/SPJ Workshop: Eight newsroom hacks that don't require coding (2016)

How to schedule a Python script in a piece of cloud, using an Amazon AWS EC2 instance (a tiny virtual server) and cron (a scheduler that is built into it.) (2015)