From Field to Finance: The Complete Emissions Data Journey
The Data Pipeline: 4 Critical Stages
Emissions data flows through 4 stages before reaching your CFO's report:
STAGE 1: CAPTURE STAGE 2: REVIEW STAGE 3: CALCULATION STAGE 4: REPORTING
┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Field worker │ │ Sustainability │ │ Calculation │ │ Published │
│ photographs or │──>│ team reviews │──>│ engine processes │──>│ snapshot for │
│ office enters │ │ and approves │ │ & calculates │ │ auditor + exec │
│ data │ │ or rejects │ │ CO₂e totals │ │ reporting │
└─────────────────┘ └─────────────────┘ └──────────────────┘ └─────────────────┘
Problem: Each stage is a failure point. Data quality issues at stage 1 propagate to stage 4, where auditors discover them too late.
Stage 1: Data Capture (Field → Staging)
Risks:
- Field worker enters wrong unit (kg vs tonnes)
- OCR misreads handwritten number
- Spreadsheet uploaded with typos
- Invoice data missing required fields
CarbonSite mitigation:
- Automatic data reading with confidence scoring
- Automatic unit normalization (all converted to canonical units)
- Validation rules (check ranges, required fields)
- Audit log records extraction confidence + timestamp
Output: StagedActivityRecord (not yet committed to calculation)
Stage 1 Lineage Tracking
Original: "367" (from delivery ticket, handwritten)
├── Extracted by: Mobile app
├── Confidence: 89%
├── Unit detected: kg
├── Normalized: 367 kg → 0.367 tonnes
├── Timestamp: 2024-10-01 14:32:15
├── Location: facility_id = fac_456
└── Audit record: immutable hash recorded
Stage 2: Review (Staging → Committed)
Risks:
- Sustainability lead approves without reviewing
- Reviewer misses OCR errors (e.g., 367 tonnes passes as "reasonable")
- Data stuck in review queue too long (stale when calculated)
CarbonSite mitigation:
- Anomaly detection flags suspicious records before review
- Review UI highlights high-risk records (red) vs. low-risk (green)
- Reviewer audit trail: who approved, when, any notes
- SLA notifications: flag records stuck in review >7 days
- Batch operations: approve/reject multiple records at once
Output: ActivityRecord (now committed, immutable)
Stage 2 Lineage Tracking
StagedActivityRecord #4521
├── Status: pending_review
├── Anomaly flags: Z-score=31.7 (weight 8x baseline)
├── Review assigned: alice@company.com
├── Review: Approved with note "Confirmed with field worker, legitimate spike due to facility maintenance"
├── Approved by: alice@company.com
├── Approved at: 2024-10-02 09:15:22
├── Audit entry: hash_def456ghi
└── Now becomes: ActivityRecord #4521
Stage 3: Calculation (Records → Emissions)
Risks:
- Wrong emission factor applied (old DEFRA vs. new DEFRA)
- Calculation formula error (forgot GWP for CH4)
- Calculation run crashes, leaves incomplete results
- Different records calculated with different methodologies
CarbonSite mitigation:
- Factor version locked at calculation start (all records use same DEFRA 2024)
- Calculation formula stored with each record (provenance)
- Atomic calculation: all-or-nothing (no partial results)
- Calculation run logs every step (factor selection, formula applied, result)
- Immutable EmissionCalculation records (never updated)
Output: PublishedSnapshot (locked, read-only)
Stage 3 Lineage Tracking
CalculationRun #42 (2024-10-02 14:00:00 UTC)
├── Organization: Acme Corp
├── Period: Q3 2024
├── Records processed: 10,442
├── Methodology: ghg-protocol-v2024-01
├── Factor library: DEFRA 2024.1 (revision 3)
├── Status: complete (took 12m 34s)
├── Records with scope1: 8,234
│ ├── Factor applied: natural_gas_combustion_2024
│ ├── Formula: activity_mmbtu × factor_value × (1 + ch4_gwp + n2o_gwp)
│ ├── Total: 15,234 tonnes CO₂e
│ └── Audit entry: hash_ghi789jkl
├── Records with scope2: 1,208
│ ├── Factor applied: uk_grid_electricity_2024
│ ├── Formula: activity_kwh × factor_value
│ ├── Total: 28,945 tonnes CO₂e
│ └── Audit entry: hash_jkl012mno
└── Total result: 50,234 tonnes CO₂e
└── Hash chain: mno345pqr (proof of data integrity)
Stage 4: Reporting (Snapshot → Report)
Risks:
- Dashboard totals ≠ report totals (different aggregations)
- Export format loses data (decimal places, categories)
- Report generated before calculation finishes (stale snapshot)
- Auditor can't trace report numbers back to source data
CarbonSite mitigation:
- Dashboard reads from same PublishedSnapshot as report (single source of truth)
- Export format includes full lineage (source records + calculation details)
- Report generation waits for calculation completion + validation
- Audit evidence package exported with report (links back to stage 1)
Output: Published Report + Audit Evidence Package
Stage 4 Lineage Tracking
Report #R-2024-Q3-001
├── Title: "Q3 2024 Emissions Report: Acme Corp"
├── Created by: bob@company.com
├── Created at: 2024-10-05 16:30:00 UTC
├── Based on: CalculationRun #42
├── Based on: PublishedSnapshot v2.0 (Q3 2024)
├── Totals (verified match dashboard):
│ ├── Scope 1: 15,234 tonnes CO₂e ✓
│ ├── Scope 2: 28,945 tonnes CO₂e ✓
│ └── Scope 3: 6,055 tonnes CO₂e ✓
│ └── TOTAL: 50,234 tonnes CO₂e ✓
├── Format: PDF + Excel
├── Export includes:
│ ├── Full audit trail (10k+ log entries)
│ ├── Factor library snapshot (DEFRA 2024.1)
│ ├── Calculation formulas
│ ├── Sample record lineage (10 examples)
│ └── Hash chain verification (proof of data integrity)
└── Digital signature: signed_by_acme_org_key
Tracing a Single Record End-to-End
Want to verify report accuracy? Pick any record:
Q3 Report shows: Facility A, Waste, 367 tonnes
├── Trace back to: CalculationRun #42
│ ├── Factor applied: waste_landfill_biodegradable_2024
│ ├── Factor value: 0.234 kg CO₂e / kg waste
│ ├── Formula: 367 tonnes × 0.234 × (1 + 0) = 86 tonnes CO₂e
│ └── Matches report: ✓
├── Trace back to: ActivityRecord #4521
│ ├── Original value: "367" (extracted by OCR)
│ ├── Confidence: 89%
│ ├── Normalized to: 0.367 tonnes
│ ├── Approved by: alice@company.com (2024-10-02)
│ └── Anomaly flagged: yes (8x baseline, but confirmed valid)
└── Verify: All hashes match, no tampering detected ✓
The Big Picture: Data Lineage UI
CarbonSite provides an interactive visualization:
┌─────────────────────────────────────────────────────────┐
│ Trace Report Data │
├─────────────────────────────────────────────────────────┤
│ Report #R-2024-Q3-001 → 50,234 tonnes CO₂e │
│ ↓ │
│ CalculationRun #42 → DEFRA 2024.1 factors │
│ ├─ Scope 1: 15,234 tonnes (8,234 records) │
│ ├─ Scope 2: 28,945 tonnes (1,208 records) │
│ └─ Scope 3: 6,055 tonnes (1,000 records) │
│ ↓ │
│ Click on Scope 1 → see all 8,234 records │
│ ├─ Facility A: 1,234 records → 860 tonnes │
│ ├─ Facility B: 3,456 records → 2,890 tonnes │
│ └─ Facility C: 3,744 records → 11,484 tonnes │
│ ↓ │
│ Click on Facility A → see individual records │
│ ├─ Waste delivery 2024-09-01: 367 tonnes → 86 CO₂e │
│ │ └─ Original OCR: "367" (confidence 89%) │
│ │ └─ Extracted from: delivery_ticket_photo.jpg │
│ │ └─ Captured by: field_worker_123 │
│ │ └─ Timestamp: 2024-09-01 14:32:15 │
│ └─ [View all 1,234 records in Facility A] │
└─────────────────────────────────────────────────────────┘
Benefits of Complete Lineage
✅ Auditors: Verify data integrity mathematically (hash chains) ✅ Reviewers: Understand which records trigger which emissions ✅ Finance: Reconcile emissions reports to source invoices ✅ Operations: Trace anomalies back to source (field worker, entry date, supplier) ✅ Compliance: Demonstrate CSRD / SBTi alignment at every stage
Next Steps
- Import data → CarbonSite automatically tracks lineage
- Review the audit trail → Click any record, trace back to source
- Export for auditors → Generate lineage package in seconds
See Data Lineage in Action
Import sample data and explore complete record traceability.
Try Data LineageRelated reading: