Pilot · Austin Public Health
Open-source codeAustin Health Pulse — life expectancy explorer by ZIP code
Result in one line: Built in about 12 staff hours, against a typical agency estimate of 6–8 weeks
An interactive map and calculator showing how life expectancy and health indicators differ across Travis County's 63 ZIP codes, with an 11.6-year gap between the longest- and shortest-lived.
Published October 15, 2026
- Skills needed to set it up
- Developer
- Readiness
- Needs customization
- Data it touches
- Public data only
- Who sees the output
- Public-facing
- Cost to stand up
- No new spend
- License
- Apache 2.0
- Portable to other platforms
- Yes — platform-agnostic
- Reviews it went through
- Not yet reviewed
- Public health area
- Chronic disease and injury prevention Epidemiology and surveillance Communications and community engagement
What do these mean?
- Developer
- A software developer to deploy or adapt it.
- Needs customization
- Your team will need to adapt it before use.
- Public data only
- Only data that is already public.
- Public-facing
- Residents or the general public interact with it.
- No new spend
- Built with licences, staff and infrastructure the organization already had.
- Apache 2.0
- Permissive, with a patent grant.
- Yes — platform-agnostic
- Runs on any comparable stack with configuration changes only.
- Not yet reviewed
- Shared honestly — this has not been through a formal review.
- Chronic disease and injury prevention
- Chronic conditions, tobacco, nutrition, violence, overdose and injury prevention.
- Epidemiology and surveillance
- Case, syndromic, laboratory and wastewater surveillance, and the analysis behind it.
- Communications and community engagement
- Public information, risk communication, language access and community partnerships.
Problem
Life expectancy in Travis County differs by more than 11 years between ZIP codes a few miles apart. That gap is well documented in public datasets, but those datasets are hard for residents, commissioners and community partners to explore. We wanted a tool anyone could open at a community event or on their phone to see their own neighborhood in context.
Approach
A static web app with three modes:
- Check your neighborhood: enter a ZIP code to see life expectancy against the county average, where it ranks among all ZIPs, and gauges for poverty, uninsured rate, diabetes, hypertension and obesity.
- Explore the map: a choropleth of every Travis County ZIP code, switchable across eight indicators.
- Compare ZIP codes: two or three ZIPs side by side in a radar chart and a table.
A personal lifespan estimator applies effect sizes from large published cohort studies (smoking, activity, diet, BMI, sleep, stress) to the U.S. life table. It shows which factors have the most years to gain and can hand off to the companion Austin Service Guide with only those factor categories, so the resident’s answers never leave the page. A kiosk mode rotates key facts on screen at events.
A Python pipeline pulls the public sources, rolls tract data up to ZIP codes with population weights, suppresses unreliable small-population estimates, and writes static JSON. The site needs no server.
Time and resources
Built by Austin Public Health IT staff in about 12 hours (three four-hour sessions), using Claude as an AI pair programmer. That covers the pipeline, all three modes, the calculators, kiosk mode and the deployment workflow. Loaded staff cost was about $1.5K, against a typical agency estimate of 250–400 hours ($50K–$100K). Hosting on GitHub Pages is free and all data is public.
Results
A working public-facing prototype that shows the county’s life expectancy gap at a glance, demonstrated to the Austin Public Health Commission. It shows how AI-assisted development can turn a public dataset into something residents can use in days rather than months, and lets the department test the idea with the community before committing to a production build.
Lessons learned
- Check the data, not just the code. A review pass found a campus ZIP code with too few residents for stable rates, and a few missing values that displayed as zero. We added population-based suppression and an “N/A” state.
- Say what the numbers are. Showing the data vintage (2010–2015), standard errors and “population average, not a prediction” alongside the results keeps a persuasive tool honest.
- Static is durable. No backend means nothing to patch and no hosting cost. Third-party map tiles are the exception: our original basemap provider started requiring an API key, and we switched to OpenStreetMap.
- Link insight to action. The handoff from “factors with the most years to gain” to local services makes the data useful to the person looking at it.
How to reuse this
Fork the repository. To use another county, change the ZIP code list in app/src/lib/constants.ts and the county filter in the pipeline. Then run scripts/export_frontend_json.py and scripts/prepare_geojson.py to regenerate the data. USALEEP, ACS and CDC PLACES cover the whole U.S.; replace the Austin crime source with your own or drop that indicator. Enable GitHub Pages (Source: GitHub Actions) and the included workflow lints, tests, builds and deploys on every push.
About
- Type of solution
- Dashboard or visualization
- Data pipeline or integration
- AI use category
- Coding & brainstorming
- Review status
- Under review
How it's built
- Role of AI
- AI helped build it
- Tools and technologies
- Claude (AI pair programmer)
- React / TypeScript / Vite
- Tailwind CSS
- Leaflet / OpenStreetMap
- Recharts
- Python / pandas / geopandas
- Where it runs
- Desktop or local
Sharing & licensing
- Portability notes
- A fully static site with no backend, database or API keys. It is hosted on GitHub Pages but runs from any static web host. The Python pipeline pulls national public sources (CDC USALEEP, ACS, CDC PLACES), so another U.S. county can regenerate the data by changing the county and ZIP list. Violent crime comes from the City of Austin open data portal and would need a local equivalent.
What it took
- Cost to keep running
- No ongoing cost
- How it was bought
- No procurement needed
- Who it affects
- Made to show residents and policymakers that health outcomes in Travis County track neighborhood conditions. Life expectancy data is from 2010–2015 and is shown with its standard error. Small-population ZIP codes are suppressed where estimates are unreliable (for example, the university campus ZIP). ZIP averages hide differences within a ZIP. The calculator uses national cohort studies that may not reflect every population equally, and it says its results are population averages, not predictions. The interface is English only.
Data & access
- No PII/PHI in the shared material
- Yes
- Data sources
- CDC USALEEP life expectancy at birth by census tract (2010–2015)
- American Community Survey 5-year estimates for poverty and uninsured rates (2022)
- CDC PLACES estimates for diabetes / hypertension / obesity / asthma (2023)
- City of Austin Open Data: APD crime reports (UCR Part 1 violent)
- Census ZCTA boundaries and ZCTA-to-tract relationship file
- NCHS U.S. life tables (calculator)
- Data-governance caveats
- Public aggregate data only. Tract-level life expectancy is rolled up to ZIP code areas using population-weighted averages. Rates are suppressed for ZIP codes under 1,000 residents. The calculator runs entirely in the browser; the 'find services' link sends only the factor categories (for example, diet or physical activity), never the resident's answers.