Civic Data Engineer · Atlanta, GA · ES · EN

Building systems that make power visible.

I turn messy public data into tested pipelines, dashboards, maps, and bilingual tools — used by organizers, coalitions, and voters across Georgia’s 159 counties. Built under real election timelines, not in a lab.

Built during real election conditions · 2024 · 2025 · 2026

159
counties normalized
Georgia-wide civic datasets, county by county.
10s
lookup tools
Built for election-day use under real timelines.
3
election cycles
Tools deployed live, 2024 – 2026.
ES · EN
bilingual access
Voter-facing infrastructure in both languages.

Core Stack

Python SQL Prefect dbt dlt DuckDB BigQuery TypeScript Supabase GCP
public data → public power

What I Build

Three lanes I work in

Find the one that matches your team.

  • Data pipelines

    Public data ingestion, cleaning, testing, and documentation — with format drift, source unreliability, and political stakes baked into the design.

    Python · Prefect · dlt · dbt · DuckDB · BigQuery

  • Civic dashboards

    Maps, trackers, and decision tools for coalitions and campaigns — designed for nontechnical decision-makers under real timelines.

    TypeScript · Geospatial · Looker Studio · Supabase

  • Election tools

    Bilingual lookup tools, voter protection infrastructure, and county-level monitoring — built to be usable on a phone, on election day, in 10 seconds.

    Bilingual UX · ES/EN data models · field-tested

Case Studies

Selected civic data work

End-to-end systems from raw public data to real-time tools used by voters, organizers, and coalitions.

01
2026

GA Watchdog — Open Civic Data Pipelines

Built a public pipeline system that monitors Georgia election activity in real time — Prefect + dlt + DuckDB turn scattered SEB records and voter file releases into a usable civic tracker, in public.

PythonPrefectdltDuckDBData Pipelines
02
2026

Metro Precinct Finder — Election Day Tool

10-second bilingual address-to-precinct lookup for Gwinnett, Fulton, and DeKalb — built so voters and roving poll monitors can answer one question in one tap, in either language.

JavaScriptGeospatialBilingualElection Tech
03
2026

Georgia Redistricting Dashboard

Coalition briefing tool replacing a static deck — interactive map of 14 congressional districts, plain-language explanation of state law, and post-Callais session scenarios.

HTML/JSCivic DataMapsPolicy Tracking
04
2026

GA County Risk Dashboard — Enforcement Data

Python ETL turning scattered enforcement records into a county-level decision dashboard — coalitions can pull it up in a call and prioritize rapid response by county.

PythonETLLooker StudioPublic Data
05
2026

Georgia 2026 Early Voting Map

Ingested and normalized early voting data from all 159 Georgia counties — one interactive map and zero manual lookups for the May 2026 primary.

PythonData IngestionMapsElection Tech
06
2026

Airtable Data Tracker CLI

One Python command scaffolds a typed Airtable tracker base with seed records — invisible infrastructure for organizing teams that live in Airtable but need data integrity.

PythonAirtable APICLI ToolData Infra

About

Organizer turned engineer

I’m Maria del Rosario Palacios — a multilingual immigrant worker organizer who became a data engineer because I kept running into the same problem: the data that could prove what communities already knew was scattered, dirty, or locked away.

I bring 10+ years of organizing, training, and civic infrastructure experience into technical systems work. I have built tools for election protection, county monitoring, bilingual voter access, and coalition decision-making across Georgia.

I work where the data is messy, the timelines are real, and the users are nontechnical. My favorite kind of project is one where a spreadsheet becomes a pipeline, a pipeline becomes a tool, and a tool becomes a decision someone can defend in public.

Based in Atlanta, fluent in Spanish and English, and currently open to contract data engineering work — especially pipeline migration, testing, and documentation for civic and progressive organizations.

Data Engineering

PythonSQLPrefectdltdbtDuckDBBigQueryETL/ELTData QualityAirtable API

Full-Stack & Frontend

TypeScriptJavaScriptHTML/CSSSupabaseNext.jsReact

Analytics & Visualization

Looker StudioPandasJupyterR / tidyverseGCPGeospatial

Collaboration & Delivery

GitHub / PR reviewSprint workflowsDocumentationTraining & curriculum

Working With Me

Three ways teams hire me

  • Pipeline cleanup

    Messy spreadsheets, public records, Airtable bases, and county-level datasets — turned into typed, tested, documented pipelines.

  • Civic dashboard builds

    Maps, trackers, and public-facing tools that nontechnical users can actually run a meeting from.

  • Documentation & handoff

    Maintainable systems after launch — ADRs, runbooks, and the kind of docs your next hire can read on day one.

Hire Me

Need a civic data system built, cleaned up, migrated, or documented?

I’m available for short-term contracts, technical audits, pipeline builds, and civic-tech prototypes — especially when the data is political, bilingual, and on a deadline.

Based in Atlanta · Working across the U.S. South · ES · EN

← Portfolio
Year2026
TypeData Pipeline / Open Source
StackPython · Prefect · dlt · DuckDB

GA Watchdog — Open Civic Data Pipelines

Open data pipelines watching Georgia elections in real time. SEB meetings tracker and voter file watcher built with Prefect orchestration, dlt loading, and DuckDB — designed as a public teaching repository for civic data engineering patterns.

$prefect deployment run "seb-watcher/nightly"
okingest · sources resolved · 14 new artifacts
oktransform · 312 rows · 0 failed checks
okload · duckdb://warehouse · +1 meeting
pubdigest published · alerts: 0
$_

The Problem

Georgia's State Election Board holds public meetings and publishes voter file updates with no automated tracking. Organizers and journalists have to check manually — or miss it entirely. Public data that should flow automatically sits siloed.

What I Built

  • SEB meetings scraper and tracker with Prefect orchestration
  • Voter file watcher pipeline using dlt for reliable incremental loading
  • DuckDB as the analytical layer for fast local querying
  • Full documentation and teaching notes for each pattern

Pipeline Architecture

The watchdog is structured around two independent pipelines that share a common orchestration layer. Prefect handles scheduling, retries, and failure alerting — the same patterns used in production data engineering environments. dlt manages the schema evolution and incremental loading so that new SEB meeting records merge cleanly without duplicates.

DuckDB sits at the analytical layer. Because Georgia's civic datasets are mid-scale (thousands to low millions of rows), DuckDB handles the analytical queries locally without spinning up cloud infrastructure — making the whole system runnable by a single organizer on a laptop.

Teaching Dimension

This repo was explicitly built to be readable. Every pipeline has inline comments explaining the "why," not just the "what." The goal is for a data analyst who has never used Prefect or dlt to follow the code and understand the engineering decisions — especially around schema handling, idempotency, and incremental loads.

Prefect
Orchestration
dlt
Incremental loading
DuckDB
Local analytics
Public
Open teaching repo

You May Also Like

2026

Metro Precinct Finder

Bilingual election-day polling lookup for 3 Georgia counties.

2026

GA 2026 Early Voting Map

Python-ingested map of early voting across all 159 counties.

2026

GA County Risk Dashboard

Enforcement risk pipeline and coalition dashboard.

← Portfolio
Year2026
TypeFull-Stack Election Tool
StackJavaScript · Geospatial · Bilingual

Metro Precinct Finder — Election Day Tool

Bilingual address-to-polling-place lookup with map, directions, and voter-protection hotline serving Gwinnett, Fulton, and DeKalb counties. Built for organizers and voters by Common Cause Georgia.

CountyFulton
Precinct05A
SiteCentral Library
Open7am – 7pm

The Problem

On Election Day, voters — especially first-time voters and Spanish-speakers — struggle to find their correct polling location. Gwinnett alone has 156 precincts. A single wrong precinct means a provisional ballot or no vote at all.

What I Built

  • Address lookup across 156 Gwinnett + Fulton + DeKalb precincts
  • Interactive map with directions to each polling location
  • Bilingual UI (English and Spanish) throughout
  • Voter-protection hotline prominently placed for organizers

Data Architecture

The core data challenge was normalizing precinct data from three separate county election websites — each with different formats, address standards, and update cadences. I wrote ingestion scripts to clean, normalize, and join the datasets into a single source of truth, then built lookup logic that handles partial address matches and fuzzy search so voters aren't penalized for minor typos.

Design for Real Use

This tool is used by Common Cause Georgia volunteers doing door-to-door and phone bank work. The design priorities were mobile-first, fast load time, and the voter-protection hotline always visible. The bilingual requirement shaped every UX decision — labels, error messages, and instructions all exist in both languages, not just a translate button at the top.

3
Counties covered
156+
Precincts mapped
ES/EN
Bilingual UI
May '26
Deployed for primary

You May Also Like

2026

GA Watchdog Pipelines

Prefect + dlt + DuckDB watching Georgia elections in real time.

2026

Georgia Redistricting Dashboard

Interactive congressional district map + June 2026 session tracker.

2026

GA 2026 Early Voting Map

Python-ingested map of early voting across all 159 counties.

← Portfolio
Year2026
TypeCivic Data Dashboard
StackHTML · JavaScript · Maps

Georgia Redistricting Dashboard

Interactive dashboard covering 14 congressional districts, how maps are drawn, what state law requires, and June 17, 2026 special session scenarios. Coalition briefing tool for Common Cause Georgia.

14 congressional districts · post-Callais scenarios

The Problem

The post-Callais redistricting process was moving faster than coalitions could track. Organizers needed a single place to see current district maps, legal requirements, special session scenarios, and what was at stake — without relying on a GIS specialist.

What I Built

  • Interactive map of all 14 Georgia congressional districts
  • Explainer sections on how maps are drawn and what state law requires
  • June 17, 2026 special session scenario tracker
  • Coalition-ready briefing format for rapid deployment

Structured Data Under Policy

The hardest part wasn't the mapping — it was structuring legislative timeline data so it stayed accurate as the special session dates and scenarios shifted. I built the dashboard so content sections could be updated by non-engineers, with the data layer separated from the presentation layer.

Audience: Steering Committees

This wasn't a public-facing voter tool — it was built for coalition steering committees who needed to brief organizational leadership quickly. The design prioritized clarity, printability, and information density over public-facing polish.

14
Congressional districts
June '26
Special session tracked
Coalition
Briefing audience
Live
GitHub Pages deploy

You May Also Like

2026

GA Watchdog Pipelines

Prefect + dlt + DuckDB watching Georgia elections in real time.

2026

Metro Precinct Finder

Bilingual election-day polling lookup for 3 Georgia counties.

2026

GA County Risk Dashboard

Enforcement risk pipeline and coalition dashboard.

← Portfolio
Year2026
TypeData Pipeline + Dashboard
StackPython · ETL · Looker Studio

GA County Risk Dashboard — Enforcement Data

Python ETL pipeline ingesting public enforcement data, cleaning and joining county-level records, and delivering a coalition dashboard tracking immigration enforcement risk across Georgia's 159 counties.

159 Georgia counties · risk-scored from public records

The Problem

Immigration enforcement data is public but scattered across dozens of federal and state sources — ICE reports, arrest logs, detention records — with no county-level synthesis. Coalitions were making decisions without a unified picture.

What I Built

  • Python ETL pipeline ingesting multiple public data sources
  • County-level risk scoring from normalized enforcement records
  • Looker Studio dashboard with 159-county breakdown
  • Automated refresh so data stays current without manual pulls

The Data Engineering Challenge

The raw enforcement data came in multiple formats — PDFs, CSVs, API endpoints with inconsistent schemas. The pipeline had to handle format variability gracefully, flag anomalies, and produce a clean, joinable county-level table even when source data was late or malformed. I built schema validation checks into the pipeline so the dashboard would never show stale data silently.

Coalition Impact

The dashboard became a live tool in coalition meetings — organizers could pull it up in a call and point to specific counties, compare risk levels, and prioritize rapid-response deployment. Turning a chaotic data landscape into a single decision-making interface was the core design goal.

159
Counties tracked
Multi-source
ETL pipeline
Auto
Refresh cadence
Coalition
Decision tool

You May Also Like

2026

GA Watchdog Pipelines

Prefect + dlt + DuckDB watching Georgia elections in real time.

2026

Georgia Redistricting Dashboard

Interactive congressional district map + June 2026 session tracker.

2026

Airtable Data Tracker CLI

Python CLI for scaffolding typed organizing data infrastructure.

← Portfolio
Year2026
TypeData Ingestion + Public Tool
StackPython · Maps · GCP

Georgia 2026 Early Voting Map

Python-ingested interactive map of early voting locations and hours across Georgia's 159 counties for the May 2026 primary. Nonpartisan public information tool built for voter access.

The Problem

Georgia's 159 counties each post early voting schedules independently — in PDFs, on county websites, with varying formats. Voters, especially in rural counties, had no single source for all 159 locations and hours.

What I Built

  • Python ingestion pipeline pulling and normalizing 159 county data sources
  • Data quality checks flagging missing or inconsistent hours
  • Interactive map with location + hours for every county
  • Mobile-optimized for voters checking on their phones

Ingestion at Scale

The core challenge was handling 159 independent data sources — some well-structured, some scraped from PDFs, some requiring manual review. I built a tiered ingestion approach: automated pulls for counties with consistent formats, flagging logic for problematic records, and a simple review queue for edge cases. The final dataset was clean enough to power a public-facing map with zero manual intervention at query time.

159
Counties ingested
May '26
Primary deployment
Python
Ingestion pipeline
Public
Nonpartisan tool

You May Also Like

2026

GA Watchdog Pipelines

Prefect + dlt + DuckDB watching Georgia elections in real time.

2026

Metro Precinct Finder

Bilingual election-day polling lookup for 3 Georgia counties.

2026

GA County Risk Dashboard

Enforcement risk pipeline and coalition dashboard.

← Portfolio
Year2026
TypeData Infrastructure / CLI Tool
StackPython · pyAirtable · CLI

Airtable Data Tracker CLI

Python CLI using pyAirtable to scaffold typed data tracker bases with seed records. A reusable infrastructure template for organizing data management workflows — purpose-built for teams that live in Airtable but need programmatic data integrity.

$airtable-base create --schema tracker.yml
okcreated table · 12 fields typed
okseeded 24 records · validations passed
apibase ready · https://airtable.com/app… ↗
$_

The Problem

Organizing teams often build Airtable bases manually for each campaign or program — inconsistent field types, missing validation, no seed data. Onboarding a new base takes hours and produces fragile data structures that break downstream analysis.

What I Built

  • Python CLI that provisions a full Airtable base via API
  • Typed field definitions — selects, dates, links, phone numbers
  • Seed records so the base is immediately usable and testable
  • Reusable template pattern for different organizing contexts

Engineering for Non-Engineers

The target user for the output of this tool — the Airtable base itself — is an organizing coordinator who has never touched code. That constraint shaped every decision: field types needed to enforce data integrity invisibly, seed records needed to model correct data entry, and the base structure needed to be intuitive to someone learning it for the first time.

The CLI itself is designed to be run once by a data engineer to set up the base, then never touched again by the technical team. Infrastructure that disappears into the background and just works.

CLI
Single command setup
Typed
Field definitions
Seed
Records included
Reusable
Template pattern

You May Also Like

2026

GA Watchdog Pipelines

Prefect + dlt + DuckDB watching Georgia elections in real time.

2026

GA County Risk Dashboard

Enforcement risk pipeline and coalition dashboard.

2026

GA 2026 Early Voting Map

Python-ingested map of early voting across all 159 counties.