Scope 3 Methodology

How selected DDF Scope 3 source exports are translated into carbon activity rows and estimated emissions for the public dashboard.

Scope 3 Dashboard

Core Method

  1. Import each source export and record the file name, checksum, source system, parser version, period, row counts, and validation summary.
  2. Translate source rows into non-financial CarbonActivityRow records with date, source, public label, quantity, unit, data quality, and optional hashed actor.
  3. Match each activity row to a versioned EmissionFactor by domain, activity type, unit, source label, and factor hint.
  4. Calculate kgCO2e, uncertainty bounds, and optional secondary metrics such as kWh, water, land, or eutrophication when the factor supports them.
  5. Aggregate only complete months into the public dashboard. Users can open a month/source cell to see the driver categories behind that number.

Choose a source tab above to jump to its detailed methodology, data inputs, assumptions, and exclusions.

Category 1: Purchased goods and services

Selected DDF meals, approved Duke Farms Amazon Business purchases, and externally provided AI services are reported in GHG Protocol Scope 3 Category 1. The source methods below retain their distinct activity measures, factors, uncertainty, and exclusions.

NY Office Lunch Program

What data we use

We count what was ordered, not what it cost. A lunch-program export provides the date, restaurant, meal type, and menu items ordered. We do not use meal prices, invoices, tips, or other financial fields.

How the estimate is made

We split each menu item into likely food ingredients and portions—for example, a salad may be treated as vegetables, legumes, dairy, and dressing. We multiply each estimated portion by a published carbon factor for that food type, then add the ingredients together to estimate the meal’s emissions.

Assumptions and limits

The export does not include the restaurant’s exact recipe or serving weights. When a reviewed recipe mapping is available, we use it; otherwise, we use a consistent category-based estimate and flag it as lower confidence. Restaurant cooking energy, delivery transportation, and packaging are outside the calculation unless they are included in a future factor.

DDF ChatGPT Use

What data we use

The latest workspace analytics export provides daily aggregate ChatGPT tokens on covered days and daily message counts for all days. We use token activity whenever it is available and use message counts only as a labeled fallback. We do not use dollars, credits, or billing totals.

How the estimate is made

For token-covered days, we multiply the reported token total by the documented capability-class energy factor, then convert estimated electricity using the IEA 2024 global electricity intensity of 0.445 kgCO2e/kWh. On days without tokens, each message uses a 0.34 Wh fallback estimate.

Assumptions and limits

DDF does not receive a meter reading for the electricity used by each ChatGPT message, so this is an operational proxy based on published AI and cloud-accounting guidance. It has a wide uncertainty range and excludes model training, data-center construction, and hardware manufacturing.

Codex Use

What data we use

Codex reports the amount of text it processes as tokens—small pieces of text rather than words. We separately count new input, previously processed (cached) input, and generated output because they require different amounts of computing work.

How the estimate is made

We convert each token type into estimated electricity, include data-center overhead, and then convert that electricity to carbon. Codex remains separate from ChatGPT because its source export and activity units are different.

Assumptions and limits

The current export does not provide a direct energy reading or a model-by-model carbon reading. These consistent token-type assumptions are best used to understand patterns over time and compare periods on the same basis—not as a precise measure for a single coding session. Training and hardware emissions are excluded.

12-Month Workspace AI Update

Where detailed records are unavailable, the refresh uses daily aggregate tokens and then daily messages as a higher-uncertainty fallback. The aggregate-token factor is calibrated from the detailed Codex token mix. Credits by product, model, and metered item are usage-context audit data only and never enter carbon calculations. September 2026 is month-to-date through September 10.

Category 6: Business travel

Employee air travel in non-company-owned aircraft is reported in GHG Protocol Scope 3 Category 6. Airfare price is never used to estimate emissions.

Flights

What data we use

We estimate a flight’s emissions from how far the traveler flew, not from the airfare price. The export provides the date, airline or vendor, and business-purpose text. Financial fields are not used.

How the estimate is made

When the record identifies an origin and destination, we turn the trip into one or more flight legs, calculate the straight-line distance between airports, and apply the published emissions factor for an economy flight of that length.

How incomplete records are handled

If a row appears to be airfare but does not state a usable route, we use a consistent NYC–Chicago round-trip placeholder and label it for review. Refunds, cancellations, upgrades, seat or baggage fees, personal travel, rail, and ground transportation are kept out of the automatic total. The travel date comes from the trip text when available; otherwise we use the expense posted date.

How to Explain the Numbers

The dashboard follows the same simple pattern for every source: start with an observable activity, apply a documented emissions factor, and show the result as an estimate in kilograms of carbon-dioxide equivalent (kgCO2e). “Carbon-dioxide equivalent” is a common unit that combines climate-warming gases into one comparable number.

Lunch orders: “What was served?”

We read the ordered menu items, estimate the ingredients and serving sizes, and apply food-production factors. A beef-heavy meal generally has a larger estimated footprint than a vegetable- or legume-heavy meal because producing those foods typically releases different amounts of greenhouse gas. We never use the meal price to estimate emissions.

menu items ordered → estimated ingredients and portions → food factors → estimated kgCO2e

ChatGPT and Codex: “How much computing work occurred?”

For ChatGPT, the activity is the number of messages by model. For Codex, it is the number and type of tokens processed. We translate that activity into estimated electricity, add an allowance for operating the data center, and apply a grid-emissions factor. We keep the two products separate because they arrive in different units and are calculated differently.

messages or tokens → estimated electricity → data-center overhead → estimated kgCO2e

Airfare: “How far did the traveler fly?”

We identify the route when the record provides it, calculate the distance for each flight leg, and apply a distance-based economy-flight factor. If the route is missing, the row is clearly marked as a standard placeholder for later review. Airfare cost is never used as the carbon measure.

route → flight distance → published flight factor → estimated kgCO2e

What directors should take from the dashboard

These figures are designed to show the scale and direction of selected DDF activities, reveal the largest drivers, and help prioritize better data. They are not invoices, utility-meter readings, or a complete Scope 3 inventory. We retain the source, method, and factor version for each calculation so a better recipe, route, or usage export can replace an estimate transparently.

Source Metrics: Worked Examples

These examples make the source metrics above concrete: each begins with the observed activity, shows the documented factor or conversion, and ends with the estimated kgCO2e shown in the dashboard.

1. Real Lunch Item: Naya Build-Your-Own Salad

A Relish lunch row for a Naya salad is translated into separate ingredient activity rows. Each row carries the menu item, restaurant, estimated ingredient grams, factor hint, and a stable activity ID.

Ingredient rowCalculationkgCO2e
Dairy70 g x 0.003 kgCO2e/g0.210
Legumes140 g x 0.0009 kgCO2e/g0.126
Sauce30 g x 0.002 kgCO2e/g0.060
Vegetables280 g x 0.0007 kgCO2e/g0.196
0.210 + 0.126 + 0.060 + 0.196 = 0.592 kgCO2e

This is an example from the translated January Relish data. The dashboard groups these ingredient rows back up under NY Office Lunch Program driver categories.

2. Illustrative Hamburger

If a lunch menu item is a hamburger, the recipe mapper turns one ordered item into ingredient masses. A reviewed recipe would replace these illustrative grams.

Ingredient rowCalculationkgCO2e
Beef patty113 g x 0.060 kgCO2e/g6.780
Bun / bread50 g x 0.0011 kgCO2e/g0.055
Cheese / dairy20 g x 0.003 kgCO2e/g0.060
Lettuce, tomato, onion30 g x 0.0007 kgCO2e/g0.021
Sauce15 g x 0.002 kgCO2e/g0.030
Total illustrative hamburger estimate = 6.946 kgCO2e

The high total is driven by beef. That is why the dashboard drilldown separates red meat, fish, chicken, dairy, vegetables, grains, and other drivers instead of only showing restaurant totals.

3. DDF ChatGPT Use: One Week of GPT-5 Messages

ChatGPT exports arrive as model-message counts. Credits are ignored. The calculator converts message count into estimated energy, then into carbon using PUE and grid intensity assumptions.

1,000 ChatGPT messages without token data x 0.00034 kWh/message = 0.340 kWh
0.340 kWh x 0.445 kgCO2e/kWh = 0.1513 kgCO2e

For a token-covered day, the dashboard instead multiplies the reported aggregate tokens by the token factor and labels the result token-based.

4. Codex Use: Token Counts

Codex exports are token-based, so the translator creates separate activity rows for uncached input, cached input, and output tokens.

(500,000 uncached input x 0.000000006 kWh + 300,000 cached input x 0.000000002 kWh + 150,000 output x 0.000000012 kWh) x PUE 1.2 = 0.00648 kWh
0.0054 kWh x 0.445 kgCO2e/kWh = 0.00240 kgCO2e

The dashboard still shows Codex separately from DDF ChatGPT Use because the source data and activity units are different.

5. Flights: Expense Text to Passenger Distance

A row like Delta - JFK<>SLC - Sundance Film Festival becomes two economy passenger-distance segments: JFK to SLC and SLC to JFK. Rows with no clear route but real airfare text use a round-trip NYC-Chicago fallback and are tagged for review.

JFK-SLC great-circle distance x EPA medium-haul economy factor = segment kgCO2e
Fallback: NYC-ORD + ORD-NYC passenger-km x 0.080842443 kgCO2e/passenger-km

EPA 2025 Table 10 passenger-mile factors are converted to passenger-km and include CO2, CH4, and N2O as CO2e. The public dashboard shows the shared January-April 2026 window.

Amazon Business Purchased Goods & Services — Duke Farms

What data we use

We read only approved Duke Farms Amazon Business emissions records from the DDF Carbon ledger. The public dashboard retains the activity date, approved factor and method identifiers, estimated kgCO2e, and a limited set of product examples. It does not publish order identifiers, purchase amounts, invoices, taxes, fees, or other financial fields.

How the estimate is made

The upstream purchasing workflow maps each approved purchase category to an approved EPA Supply Chain GHG Emission Factors factor. This dashboard imports the approved result from that ledger rather than recalculating it, preserving the ledger’s factor version and citation.

Assumptions and limits

Only records marked Amazon Business, Duke Farms, and Approved are included. The method is a spend-based supply-chain proxy in the source ledger, so it is best used for portfolio-level trends and category comparison. The dashboard publishes complete calendar months only; current-month records remain out of totals until month close.

Example Upload Files

These are examples of the source files already translated into the carbon ledger. File names are retained for import provenance; financial columns, where present in source exports, are ignored.

Methodology Sources