Skip to main content

GFM Module Catalog

This catalog documents all Gap Filling Modules available in the EOS Engine. Each module fills specific data gaps in environmental impact calculations.

Module Versioning

Version numbers correspond to the EOS release tag in which each module was last updated. For example, v0.5.328 means the module was last modified in EOS release v0.5.328.

Module Overview

EOS includes 27 modules organized into functional categories:


🔗

Graph Building

These modules construct and manage the calculation graph structure.

add_client_nodes_gfm

v0.5.306Core Team

Loads child nodes of recipes, sub-recipes, and ingredients into the calculation graph.

Runs onRoot node's direct child
SkipsModeledActivityNode, ElementaryResourceEmissionNode
CreatesChild flow nodes for all ingredients

merge_linked_nodes_gfm

v0.5.298Core Team

Merges linked Flow Nodes that reference the same product into a single node.

Runs onFlowNodes with LinkingActivityNode parent
Dependenciesadd_client_nodes_gfm
OutputConsolidated flow node

ingredient_splitter_gfm

v0.5.313Core Team

Splits a product's ingredient list into separate nodes for individual assessment. Particularly useful for processed foods or dishes where exact composition is not provided.

Runs onNodes with ingredient lists
CreatesSeparate FlowNode per ingredient
EnablesIndividual ingredient calculations

inventory_connector_gfm

v0.5.298Core Team

Connects food products to Life Cycle Inventory data from databases like Agribalyse and ecoinvent. Uses an aggregated cache for system nodes to optimize performance.

Runs onModeledActivityNode, FlowNode
Data sourcesAgribalyse, ecoinvent, Brightway
OptimizesUses cache for large inventories

🏷️

Product Matching

These modules match product names to standardized database terms.

match_product_name_gfm

v0.5.309Core Team

Matches product names to FoodEx2 terms from the glossary database containing over 565,000 convenient products.

Runs onFoodProductFlowNode
InputProduct name from raw input
OutputMatched FoodEx2 terms
Database565,000+ products

Example
Input: "trockene Karotten" (dried carrots)
Output: Terms ("A1791", "J0116") = "CARROT" + "DEHYDRATED OR DRIED"

attach_food_tags_gfm

v0.5.328Core Team

Attaches food classification tags to products based on matched FoodEx2 terms.

Runs onFoodProductFlowNode
Dependenciesmatch_product_name_gfm
OutputFood classification tags

link_food_categories_gfm

v0.5.328Core Team

Links matched food terms to food category classifications.

Runs onFoodProductFlowNode (not subdivision)
Dependenciesmatch_product_name_gfm
OutputCategory assignments

link_term_to_activity_node_gfm

v0.5.298Core Team

Links product terms to LCA activity processes in the database. Searches glossary_link for connections between matched Terms and LCA processes.

Runs onFoodProductFlowNode, PracticeFlowNode
Dependenciesmatch_product_name_gfm
OutputConnected LCA activity node

🧪

Ingredient Analysis

These modules analyze and estimate ingredient quantities.

ingredient_amount_estimator_gfm

v0.5.306Science Team

Estimates ingredient amounts when only a list of ingredients is available without quantities. Uses convex optimization (CVXPY) to match declared product nutrition with ingredient compositions.

Runs onProducts with ingredient lists
MethodConvex optimization (CVXPY)
InputProduct nutrients, ingredient profiles
OutputEstimated ingredient percentages

nutrient_subdivision_gfm

v0.5.328Science Team

Subdivides ingredients into nutrient-based variants for more accurate matching.

Runs onFoodProductFlowNode without sub-nodes
PurposeEnable more accurate ingredient estimation
OutputSubdivision variant nodes

Example
Input: "cocoa powder"
Output: "low-fat cocoa powder" + "high-fat cocoa powder"

unit_weight_conversion_gfm

v0.5.328Core Team

Converts product quantities to standardized weight-based units. Handles weight units, volume to weight, food-specific units, and count-based items.

Runs onRoot node, FoodProductFlowNode, FlowNode
ConvertsVarious units to grams/kilograms
OutputStandardized weight quantities

🌍

Location & Origin

These modules determine geographic origin and location data.

origin_gfm

v0.5.328Science Team

Determines the geographic origin of food products using FAO trade data. When origin is not provided, uses FAO import statistics to estimate the most likely source country.

Runs onFoodProductFlowNode
Data sourceFAO trade statistics
MethodsName analysis, category defaults, trade patterns
OutputCountry code, confidence, origin basis

Example
Input: { name: "Swiss Cheese", category: "dairy.cheese" }
Output: { origin: "CH", originConfidence: 0.9, originBasis: "name_analysis" }

location_gfm

v0.5.331Core Team

Handles detailed geographic location data including coordinates and regions. Integrates with geographical databases for standardized location information.

Runs onFoodProductFlowNode
Dependenciesorigin_gfm
OutputLocation details, coordinates, region

🚛

Transportation

These modules calculate transportation impacts.

transportation_decision_gfm

v0.5.328Science Team

Determines the optimal transport mode (road, rail, sea, air) based on cost, distance, and product requirements. Considers product perishability and available infrastructure.

Runs onNodes with transport attribute
Dependencieslocation_gfm, perishability_gfm
SkipsNodes with transport mode already specified
OutputCheapest viable transport mode

transportation_mode_distance_gfm

v0.5.328Science Team

Calculates transport distances and route-specific emissions using the EcoTransit API. Models complete transport routes including road-to-port, port-to-port, and cooling requirements.

Runs onFlowNode from FoodProcessingActivityNode
Dependenciestransportation_decision_gfm
APIEcoTransit
OutputDistance, route segments, emissions

⚙️

Processing & Conservation

These modules model food processing, production methods, and storage impacts.

greenhouse_gfm

v0.5.328L. Eymann

Estimates emissions from heated greenhouse cultivation. Greenhouse production can increase climate impact by up to 10x compared to field-grown equivalents due to heating energy requirements.

Runs onModeledActivityNode with vegetable parent
Coverage7 vegetables, 28 European countries
OutputHeating, infrastructure, electricity emissions

Impact Comparison
Dutch heated greenhouse tomato (February): 2.9 kg CO₂eq/kg
Field-grown Spanish tomato (August): 0.2 kg CO₂eq/kg

processing_gfm

v0.5.331Science Team

Models food processing steps and their environmental impact. Handles both complex processing models (creating new Life Cycle Inventories) and simple processing models (weight-based).

Runs onFoodProductFlowNode
Dependenciesmatch_product_name_gfm
OutputProcessing energy, emissions

conservation_gfm

v0.5.178Science Team

Models storage requirements, cold chain, and preservation impacts. Analyzes preservation methods including canning, freezing, drying, and fermentation.

Runs onFoodProductFlowNode (not subdivision)
Dependencieslocation_gfm
OutputStorage type, duration, emissions

perishability_gfm

v0.5.298Science Team

Calculates food loss and waste factors based on product perishability. Estimates shelf life, refrigeration energy during transport, and food waste due to spoilage.

Runs onRoot node only
Dependenciesadd_client_nodes_gfm
OutputWaste factors, cold chain requirements

📊

Impact Calculation

These modules compute environmental impact metrics.

water_scarcity_gfm

v0.5.298Science Team

Calculates water scarcity footprint based on origin and regional water stress factors. Uses Water Stress Index (WSI) factors to weight blue water consumption by regional water scarcity.

Runs onModeledActivityNode with FoodProductFlowNode parent
Dependenciesorigin_gfm
Coverage162 countries
OutputScarce water consumption (m3)

Impact Comparison
Tomatoes from Morocco: 285.6 L scarce water/kg
Tomatoes from Netherlands: 12.8 L scarce water/kg

rainforest_gfm

v0.5.328Science Team

Evaluates deforestation risk and rainforest impact for relevant commodities.

Runs onModeledActivityNode with FoodProductFlowNode parent
FocusSoy, palm oil, cocoa, coffee, beef
OutputRainforest risk score, deforestation impact

impact_assessment_gfm

v0.5.298Core Team

Computes Life Cycle Impact Assessment using IPCC methodology. Calculates CO₂ equivalents for each production node using IPCC 2013 climate change impact assessment.

Runs onActivityNode (processing, modeled, supply sheet)
MethodologyIPCC 2013 GWP100a
OutputAggregated impact scores (kg CO₂eq)

matrix_calculation_gfm

v0.5.306Core Team

Performs matrix-based LCA calculations for complex product systems. A critical performance component for matrix aggregation in complex graphs.

Runs onComplex product graphs
MethodMatrix inversion for LCA
OutputCalculated flows and impacts

🥗

Nutrition & Scoring

These modules calculate health and nutrition metrics.

vitascore_gfm

v0.5.298Science Team

Calculates nutritional health score based on Global Burden of Disease risk factors.

Runs onFoodProductFlowNode
Dependenciesaggregation_gfm, daily_food_unit_gfm
OutputVitaScore health rating

daily_food_unit_gfm

v0.5.298Science Team

Computes the daily food unit contribution from aggregated nutrient values.

Runs onFoodProductFlowNode (not subdivision)
Dependenciesaggregation_gfm
OutputDaily food unit contribution

📦

Aggregation

These modules combine results across ingredients.

aggregation_gfm

v0.5.100Core Team

Aggregates data from all ingredients to the product level. Aggregates nutrient values, amounts per category, rainforest critical products, and animal products.

Runs onProduct nodes with ingredients
Dependenciesmatrix_calculation_gfm
OutputAggregated nutrient, category, and impact data

post_nutrients_aggregation_gfm

v0.5.305Core Team

Performs post-calculation aggregation after impact assessment.

Runs onProduct nodes
Dependenciesimpact_assessment_gfm, daily_food_unit_gfm
OutputFinal aggregated results

Module Dependencies

The typical execution flow follows this dependency pattern:

dfac831fc088723476fa35ca8f8ec3b1

Why GFMs Matter

  • Efficiency - Automate repetitive data entry tasks, making EOS scalable to thousands of products
  • Accuracy - Leverage statistical models, standard recipes, and trade data to increase reliability
  • Standardization - Harmonize data from varied sources into consistent formats
  • Adaptability - Update modules independently as new data or methodologies emerge

Next Steps

  • How GFMs Work - Internal mechanics
  • GFM SDK (coming soon) - Build custom modules