Breathline

Document what the fireline doesn't.

GitHub Repository · README & Documentation · Slide Deck

## Inspiration

Wildland firefighters face weeks of unfiltered smoke exposure every season, but no system tracks what they inhale. Structural firefighters wear air tanks. Wildland crews get a cloth bandana. When those firefighters later face cancer screenings or file workers' comp claims, they have no documented chemical history to bring with them. Breathline exists because that record should exist and doesn't.

## What it does

Breathline reconstructs a wildland firefighter's cumulative chemical exposure from their deployment history. Firefighters select the fires they worked, adjust their days on each one, and Breathline estimates their exposure to five known carcinogens based on each fire's fuel type and duration:

  • PM2.5 (fine particulate matter)
  • PAHs (polycyclic aromatic hydrocarbons)
  • Formaldehyde
  • Benzene
  • Dioxins

It visualizes that exposure accumulating on a 3D human body over time, translates doses into understandable comparisons, and exports a cited PDF exposure record for medical consultations, claims, and personal health tracking.

## How I built it

React and TypeScript with Vite. The 3D body visualization uses Three.js via React Three Fiber, rendering particle clouds on a human mesh model where each cloud represents a fire's chemical contribution. The PDF export uses jsPDF to generate a formatted document with deployment history, cumulative doses, methodology notes, and source citations. The fire database includes real documented wildfires with accurate locations, dates, and acreage.

### Exposure model

Exposure calculations are modeled from peer-reviewed emission factors, weighted across four fuel categories (timber, chaparral, WUI, grass). Each fuel type carries a different chemical profile. For a given fire, daily exposure for substance $s$ is calculated as:

$$D_s = \sum_{f \in \text{fuels}} R_{s,f} \cdot w_f \cdot t$$

Where $R_{s,f}$ is the emission rate for substance $s$ in fuel type $f$, $w_f$ is the proportion of that fuel type in the fire's fuel mix, and $t$ is days worked.

Contextual equivalences translate raw doses into comparisons:

  • Cigarette equivalence: $\text{cigarettes} = \frac{\text{PM2.5 (mg)}}{12}$ using the 12 mg inhaled particulate per cigarette standard (Pope et al., 2009)
  • Dioxin EPA multiple: $\text{multiple} = \frac{\text{dioxin dose (µg)}}{0.7 \times 80 \times 10^{-6} \times t}$ based on EPA IRIS reference dose of 0.7 pg/kg/day for an 80 kg individual

### Sources for emission factors

  • Akagi, S. K. et al. (2011). Emission factors for open and domestic biomass burning. Atmospheric Chemistry and Physics, 11, 4039-4072.
  • Urbanski, S. P. (2014). Wildland fire emissions, carbon, and climate. Forest Ecology and Management, 317, 9-11.
  • Rappold, A. G. et al. (2017). Community vulnerability to health impacts of wildland fire smoke exposure. Environmental Health Perspectives, 125(9).

## Challenges I ran into

Getting the exposure model right. Published emission factors report rates per kilogram of fuel burned, not per day of firefighter exposure. Translating between those units required making assumptions about breathing rates, proximity to the fire line, and shift duration. I documented those assumptions transparently in the exported PDF so the record is honest about what it estimates and how.

Balancing scientific credibility with accessibility was also difficult. The tool needs to be trusted by a doctor or claims adjuster, but usable by a firefighter with no chemistry background. The contextual equivalences (cigarette counts, EPA multiples) were the solution: they preserve the underlying data while making it meaningful without a chemistry degree.

## Accomplishments that I'm proud of

The contextual equivalences. Converting milligrams of PM2.5 into a cigarette count and dioxin doses into multiples of the EPA safe threshold makes exposure tangible in a way raw numbers never could. A firefighter who sees "2,847 cigarettes" understands their career exposure immediately. A doctor who sees that number in a PDF acts differently than one who sees "34.2 grams of PM2.5." The same data, framed for comprehension, changes what people do with it.

## What I learned

The data to build exposure records already exists in separate systems. IRWIN tracks deployments. Published research quantifies emission factors by fuel type. EPA maintains reference doses. The problem was never missing data. It was that no one had connected these sources into a single record tied to an individual firefighter.

I also learned how wide the equipment gap is between structural and wildland firefighters. The respiratory protection disparity is well-documented in policy literature but almost invisible to the public.

## What's next for Breathline

Connecting to the deployment records fire agencies already maintain. Systems like IRWIN and IROC track which firefighters were assigned to which fires. If Breathline could pull from that data directly, the exposure record would build itself over a career without manual input. That assignment data is currently restricted to NWCG-affiliated agencies, which is why the prototype uses manual selection. A partnership with USFS or DOI would close the gap and remove the biggest barrier to adoption: asking a firefighter to reconstruct something the agency already recorded.

Built With

Share this project:

Updates