Fair Supply LogoFair Supply - Docs

Footprints Domain

The Footprints domain handles supply chain impact calculations including modern slavery risk, carbon emissions, and biodiversity metrics.

Data Flow

Key Concepts

ConceptDescription
FootprintSupply chain impact metrics (modern slavery risk, emissions, biodiversity)
ImpactAbsolute value (e.g., 500 tonnes CO2)
IntensityValue per unit spend (e.g., 2.5 kg CO2/USD)
SatelliteData source containing impact factors by country/industry
Aquila1Industry classification system (based on NAICS) used for calculations

Scope Emissions

The platform focuses on Scope 3 emissions (supply chain), but understanding all scopes is important:

ScopeDescriptionPlatform Coverage
Scope 1Direct emissions from owned sourcesNot calculated
Scope 2Indirect from purchased energyNot calculated
Scope 3All other indirect (supply chain)Primary focus

Calculation Requirements

To calculate a footprint, a transaction needs three pieces of information:

RequirementPurpose
Country (origin)Geographic risk factors
Industry (Aquila1)Sector-specific impact factors
Amount (USD)Normalized spend value

Transactions missing any of these are skipped in calculations.

ClickHouse Integration

Footprint calculations use ClickHouse for analytical queries (not Neo4j):

FeatureDescription
Session CachingDeterministic session ID from input hash
TTL60-second cache on results
Distributed LocksPrevent race conditions during calculation

Business Rules

  1. Country and industry are required for calculation
  2. All amounts converted to USD before calculation
  3. Historical amounts adjusted for CPI inflation
  4. Risk thresholds determine high/medium/low classification
  5. Results cached for 60 seconds for performance
  6. Satellites are versioned by year; default is latest

Common Operations

Calculating Organisation Footprint

import { CalculateOrganisationFootprint } from '@repo/core';

const useCase = new CalculateOrganisationFootprint();
const footprint = await useCase.execute({
  organisationId: 'org-123',
  year: 2024,
});

// Result includes:
// - modernSlaveryRisk: { impact, intensity, riskLevel }
// - emissions: { impact, intensity, riskLevel }
// - biodiversity: { impact, intensity, riskLevel }

Getting Portfolio Footprint

import { GetPortfolioFootprint } from '@repo/core';

const useCase = new GetPortfolioFootprint();
const portfolio = await useCase.execute({
  accountId: 'account-123',
  filters: { year: 2024, country: 'AU' },
});

Risk Levels

Footprint results include risk classifications:

LevelDescription
LowBelow threshold for concern
MediumRequires monitoring
HighRequires attention and mitigation
CriticalImmediate action required
TypeLocation
ClickHouse Queriespackages/core/src/infrastructure/clickhouse/
Calculation Servicespackages/core/src/domain/services/footprint/
Use Casespackages/core/src/application/use-cases/footprint/
Satellites Datapackages/core/src/infrastructure/clickhouse/satellites/