diff --git a/offsets_db_data/apx.py b/offsets_db_data/apx.py index 9c44048..4027e18 100644 --- a/offsets_db_data/apx.py +++ b/offsets_db_data/apx.py @@ -8,6 +8,7 @@ PROJECT_SCHEMA_UPATH, load_column_mapping, load_inverted_protocol_mapping, + load_protocol_mapping, load_registry_project_column_mapping, load_type_category_mapping, ) @@ -212,6 +213,7 @@ def process_apx_projects( ) inverted_column_mapping = {value: key for key, value in registry_project_column_mapping.items()} inverted_protocol_mapping = load_inverted_protocol_mapping() + protocol_mapping = load_protocol_mapping() type_category_mapping = load_type_category_mapping() data = df.rename(columns=inverted_column_mapping) if registry_name == 'art-trees': @@ -234,8 +236,9 @@ def process_apx_projects( override_data_path=BERKELEY_PROJECT_TYPE_UPATH, source_str='berkeley' ) .add_category( - type_category_mapping=type_category_mapping - ) # must come after types; type -> category + type_category_mapping=type_category_mapping, + protocol_mapping=protocol_mapping, + ) # category derived from protocol; project_type is independent .map_project_type_to_display_name(type_category_mapping=type_category_mapping) .add_is_compliance_flag() .add_retired_and_issued_totals(credits=credits) diff --git a/offsets_db_data/common.py b/offsets_db_data/common.py index 54a45e3..b70e6fa 100644 --- a/offsets_db_data/common.py +++ b/offsets_db_data/common.py @@ -5,7 +5,7 @@ import numpy as np import pandas as pd import pandas_flavor as pf -import pandera as pa +import pandera.pandas as pa import upath CREDIT_SCHEMA_UPATH = ( @@ -54,7 +54,9 @@ def load_inverted_protocol_mapping() -> dict: return store -def load_column_mapping(*, registry_name: str, download_type: str, mapping_path: str) -> dict: +def load_column_mapping( + *, registry_name: str, download_type: str, mapping_path: upath.UPath | str +) -> dict: with open(mapping_path) as f: registry_credit_column_mapping = json.load(f) return registry_credit_column_mapping[registry_name][download_type] diff --git a/offsets_db_data/configs/all-protocol-mapping.json b/offsets_db_data/configs/all-protocol-mapping.json index 7e900e8..0b35051 100644 --- a/offsets_db_data/configs/all-protocol-mapping.json +++ b/offsets_db_data/configs/all-protocol-mapping.json @@ -211,8 +211,8 @@ }, "acm0006": { "category": "fuel-switching", - "sub-category": "biomass", "known-strings": [ + "ACM0006; AMS-III.E.", "ACM0002: Grid-connected electricity generation from renewable sources / ACM0006: Electricity and heat generation from biomass", "CDM - ACM0006: Electricity and heat generation from biomass", "ACM0006 Electricity and heat generation from biomass residues", @@ -221,6 +221,7 @@ "ACM0006 Large-Scale Consolidated Methodology Electricity and heat generation from biomass [Version: 16.0]" ], "program": "cdm", + "sub-category": "biomass", "url": "https://cdm.unfccc.int/methodologies/documentation/meth_booklet.pdf#ACM0006" }, "acm0007": { @@ -269,6 +270,7 @@ "acm0012": { "category": "energy-efficiency", "known-strings": [ + "ACM0012; AMS-III.Q", "ACM0012 Waste energy recovery, Version 6.0", "ACM0012 Waste energy recovery", "ACM0012: Waste Energy Recovery-Version 6", @@ -305,13 +307,13 @@ }, "acm0016": { "category": "energy-efficiency", - "sub-category": "transportation", "known-strings": [ "ACM0016", "ACM0016 V5.0 - Mass rapid transit projects", "ACM0016: Mass Rapid Transit Projects --- Version 5.0" ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "acm0017": { "category": "fuel-switching", @@ -335,6 +337,7 @@ "ACM0018, Version - 5.0", "ACM0018 “Large-scale Consolidated Methodology: Electricity generation from biomass in power-only plants”, Version 5.0", "ACM0018", + "ACM0018: Electricity generation from biomass in power-only plants", "ACM0018 – Electricity generation from biomass in power-only plants version 06.0" ], "program": "cdm", @@ -464,14 +467,22 @@ }, "acr-idling": { "category": "fuel-switching", - "sub-category": "transportation", "known-strings": [ "Truck Stop Electrification", - "Emissions Reductions though Anti-Idling Technologies" + "Emissions Reductions through Anti-Idling Technologies" ], "program": "acr", + "sub-category": "transportation", "url": "https://americancarbonregistry.org/carbon-accounting/standards-methodologies/emission-reductions-through-truck-stop-electrification" }, + "acr-ifm-small": { + "category": "forest", + "known-strings": [ + "Improved Forest Management (IFM) on Small Non-Industrial Private Forestlands" + ], + "program": "acr", + "sub-category": "ifm" + }, "acr-ifm-nonfed": { "category": "forest", "known-strings": [ @@ -599,6 +610,11 @@ "program": "cdm", "url": "https://cdm.unfccc.int/methodologies/DB/X93VJ89ZXSYOVG3UN3PNFXPVEIKZWF/view.html" }, + "am0016": { + "category": "ghg-management", + "known-strings": ["AM0016"], + "program": "cdm" + }, "am0023": { "category": "ghg-management", "known-strings": ["AM0023"], @@ -645,9 +661,9 @@ }, "am0031": { "category": "energy-efficiency", - "sub-category": "transportation", "known-strings": ["AM0031"], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "am0034": { "category": "ghg-management", @@ -753,9 +769,9 @@ }, "am0090": { "category": "energy-efficiency", - "sub-category": "transportation", "known-strings": ["AM0090"], "program": "cdm", + "sub-category": "transportation", "url": "https://cdm.unfccc.int/methodologies/documentation/meth_booklet.pdf#AM0090" }, "am0107": { @@ -771,7 +787,7 @@ "program": "cdm" }, "am0123": { - "known-strings": ["AM0123"], + "known-strings": ["AM0123", "AMS-I.F.; AM0123"], "program": "cdm" }, "ams-i-a": { @@ -797,6 +813,8 @@ "ams-i-c": { "category": "fuel-switching", "known-strings": [ + "AMS-I.C.; AMS-III.AO.", + "AMS-I.C.; AMS-III.D.; AMS-III.AO.", "AMS-I.C.: Thermal energy production with or without electricity", "AMS-I.C.; AMS-I.F.; AMS-III.H.", "AMS-I.C.: Thermal energy production with or without electricity - Version 22.0", @@ -835,6 +853,8 @@ "ams-i-d": { "category": "renewable-energy", "known-strings": [ + "AMS-I.D.; AMS-I.F.", + "AMS-I.D.; AMS-II.C.", "CDM - AMS-I.D.: Grid connected renewable electricity generation", "AMS-I.D.; AMS-III.F.; AMS-III.Y", "AMS-I.D.; AMS-III.D.; AMS-III.H.; AMS-III.O.; AMS-III.AQ", @@ -959,6 +979,9 @@ "ams-i-e": { "category": "renewable-energy", "known-strings": [ + "AMS-I.E.; AMS-III.D.", + "AMS-I.E.; VMR0006; AMS-III.AV.", + "AMS-I.E.; AMS-III.AV.", "AMS-I.E. Switch from Non-Renewable Biomass for Thermal Applications by the User", "AMS-I.E.; AMS-III.R.", "AMS-I.E.: Switch from non-renewable biomass for thermal applications by the user", @@ -971,6 +994,13 @@ "ams-i-f": { "category": "renewable-energy", "known-strings": [ + "AMS-I.F.; AM0123", + "AMS-I.D.; AMS-I.F.", + "AMS-I.F.; VMR0014; AMS-III.C; VM0038", + "AMS-I.F.; AMS-II.E.", + "AMS-I.J; AMS-I.F.; AMS-III.AR", + "AMS-I.F.; VMR0014; VM0038", + "AMS-I.F.; AMS-III.C.; VM0038", "CDM - AMS-I.F.: Renewable electricity generation for captive use and mini-grid", "AMS-I.C.; AMS-I.F.; AMS-III.H.", "AMS-I.F.: Renewable electricity generation for captive use and mini-grid ---Version 5.0 ", @@ -1019,6 +1049,9 @@ "ams-i-j": { "category": "renewable-energy", "known-strings": [ + "AMS-I.J", + "AMS-I.J; AMS-I.L.", + "AMS-I.J; AMS-I.F.; AMS-III.AR", "AMS-I.J.", "AMS-I.J; AMS-II.F.", "AMS-I.J. Solar water heating systems (SWH)" @@ -1031,13 +1064,14 @@ }, "ams-i-k": { "category": "renewable-energy", - "sub-category": "household", "known-strings": ["AMS-I.K. Solar cookers for households"], - "program": "cdm" + "program": "cdm", + "sub-category": "household" }, "ams-i-l": { "category": "renewable-energy", "known-strings": [ + "AMS-I.J; AMS-I.L.", "AMS-I.L.: Electrification of rural communities using renewable energy", "AMS.I.J1; AMS-I.L.", "AMS-I.L.", @@ -1053,6 +1087,7 @@ "ams-ii-c": { "category": "energy-efficiency", "known-strings": [ + "AMS-I.D.; AMS-II.C.", "AMS-II.C. Demand-side energy efficiency activities for specific technologies", "AMS-II.C.", "AMS-II.C.; AMS-II.G.", @@ -1073,6 +1108,7 @@ "ams-ii-e": { "category": "energy-efficiency", "known-strings": [ + "AMS-I.F.; AMS-II.E.", "AMS-I.D.; AMS-II.E.", "AMS-II.E.", "AMS-II.E. Energy efficiency and fuel switching measures for buildings" @@ -1087,6 +1123,7 @@ "ams-ii-g": { "category": "energy-efficiency", "known-strings": [ + "AMS-II.G.; VMR0006; AMS-III.AR", "AMS-II.G. Energy Efficiency Measures in Thermal Applications of Non-Renewable Biomass", "AMS-II.G.; VMR0006", "AMS-II.G.", @@ -1123,6 +1160,13 @@ "program": "cdm", "sub-category": "lighting" }, + "ams-ii-am": { + "category": "ghg-management", + "known-strings": [ + "AMS-II.M Demand-side energy efficiency activities for installation of low-flow hot water savings devices" + ], + "program": "cdm" + }, "ams-iii-af": { "category": "ghg-management", "known-strings": ["AMS-III.AF."], @@ -1147,6 +1191,10 @@ "ams-iii-ao": { "category": "ghg-management", "known-strings": [ + "AMS-I.C.; AMS-III.AO.", + "AMS-III.F.; AMS-III.AO.", + "AMS-III.D.; AMS-III.AO.", + "AMS-I.C.; AMS-III.D.; AMS-III.AO.", "AMS-III.AO.; AMS-III.AQ", "AMS-III.AO. Methane recovery through controlled anaerobic digestion", "AMS-I.F.; AMS-III.D.; AMS-III.AO.; VM0042", @@ -1162,8 +1210,8 @@ }, "ams-iii-aq": { "category": "fuel-switching", - "sub-category": "transportation", "known-strings": [ + "AMS-III.AQ. Introduction of Bio-CNG in transportation applications", "AMS-III.H.; AMS-III.AQ", "AMS-I.D.; AMS-III.D.; AMS-III.H.; AMS-III.O.; AMS-III.AQ", "AMS-III.AO.; AMS-III.AQ", @@ -1171,11 +1219,14 @@ "AMS-III.D.; AMS-III.AO.; AMS-III.AQ", "AMS-III.D - Version 21.0, AMS-III.AQ. - Version 2.0" ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "ams-iii-ar": { "category": "fuel-switching", "known-strings": [ + "AMS-II.G.; VMR0006; AMS-III.AR", + "AMS-I.J; AMS-I.F.; AMS-III.AR", "AMS-III.AR. Substituting fossil fuel based lighting with LED lighting systems", "AMS-III.AR", "AMS-II.G.; AMS-III.AR", @@ -1192,6 +1243,13 @@ "program": "cdm", "sub-category": "biomass" }, + "ams-iii-at": { + "category": "energy-efficiency", + "known-strings": [ + "AMS-III.AT.: Transportation energy efficiency activities installing digital tachograph systems to commercial freight transport fleets" + ], + "program": "cdm" + }, "ams-iii-au": { "category": "agriculture", "known-strings": [ @@ -1205,13 +1263,15 @@ }, "ams-iii-av": { "category": "energy-efficiency", - "sub-category": "drinking-water", "known-strings": [ + "AMS-I.E.; VMR0006; AMS-III.AV.", + "AMS-I.E.; AMS-III.AV.", "VMR0006; AMS-III.AV.", "AMS-III.AV.", "AMS-III.AV. Low greenhouse gas emitting water purification systems" ], - "program": "cdm" + "program": "cdm", + "sub-category": "drinking-water" }, "ams-iii-b": { "category": "fuel-switching", @@ -1237,12 +1297,12 @@ }, "ams-iii-bc": { "category": "energy-efficiency", - "sub-category": "transportation", "known-strings": [ "AMS-III.BC.", "AMS-III.BC.: Emissions Reductions through Improved Efficiency of Vehicle Fleet" ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "ams-iii-bd": { "category": "energy-efficiency", @@ -1252,36 +1312,44 @@ }, "ams-iii-bg": { "category": "energy-efficiency", - "sub-category": "biomass", "known-strings": [ "VMR0006; AMS-III.BG", "AMS-III.BG Emission reduction through sustainable charcoal production and consumption" ], - "program": "cdm" + "program": "cdm", + "sub-category": "biomass" }, "ams-iii-bm": { "category": "energy-efficiency", - "sub-category": "transportation", "known-strings": [ "AMS-III.BM", "AMS-III.BM: Lightweight two and three wheeled personal transportation version 1.0" ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "ams-iii-c": { "category": "energy-efficiency", - "sub-category": "transportation", "known-strings": [ + "AMS-I.F.; VMR0014; AMS-III.C; VM0038", + "AMS-I.F.; AMS-III.C.; VM0038", "AMS-III.C. Emission reductions by electric and hybrid vehicles", "AMS-I.F.; AMS-III.C.", "AMS-III.C.; VM0038", "AMS-III.C." ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "ams-iii-d": { "category": "ghg-management", + "is_methane": true, "known-strings": [ + "AMS-I.E.; AMS-III.D.", + "AMS-III.D.; AMS-III.E.; AMS-III.F.", + "AMS-III.D.; AMS-III.F.; VMR0007", + "AMS-III.D.; AMS-III.AO.", + "AMS-I.C.; AMS-III.D.; AMS-III.AO.", "AMS-I.D.; AMS-III.D.; AMS-III.H.; AMS-III.O.; AMS-III.AQ", "AMS-III.D. Methane recovery in animal manure management systems", "AMS-I.C.; AMS-III.D.; AMS-III.R.", @@ -1307,7 +1375,6 @@ "AMS-III.F.: Avoidance of methane emissions through composting - Ver12.0; AMS-III.D: Methane recovery in animal manure management systems Ver 21.0" ], "program": "cdm", - "is_methane": true, "sub-category": "livestock-methane", "url": "https://cdm.unfccc.int/methodologies/documentation/meth_booklet.pdf#AMS_III_D" }, @@ -1315,6 +1382,8 @@ "category": "ghg-management", "is_methane": true, "known-strings": [ + "AMS-III.D.; AMS-III.E.; AMS-III.F.", + "ACM0006; AMS-III.E.", "AMS-I.F.; AMS-III.E.; VM0044", "AMS-I.D.; AMS-III.E.", "AMS-III.E.: --- Version 17.0, AMS-I.C.: --- Version 22.0", @@ -1329,6 +1398,9 @@ "category": "ghg-management", "is_methane": true, "known-strings": [ + "AMS-III.F.; AMS-III.AO.", + "AMS-III.D.; AMS-III.E.; AMS-III.F.", + "AMS-III.D.; AMS-III.F.; VMR0007", "AMS-III.F: Avoidance of methane emissions through composting", "AMS-I.D.; AMS-III.F.; AMS-III.Y", "AMS-I.F.; AMS-III.E.; VM0044", @@ -1346,6 +1418,7 @@ }, "ams-iii-g": { "category": "ghg-management", + "is_methane": true, "known-strings": [ "AMS-III.G. Landfill methane recovery", "AMS-I.C.; AMS-III.G.", @@ -1366,7 +1439,6 @@ "AMS-III.G: “Landfill methane recovery” - Version 10.0; AMS-I.D: “Grid connected renewable electricity generation” - Version 18.0" ], "program": "cdm", - "is_methane": true, "sub-category": "landfill-methane" }, "ams-iii-h": { @@ -1412,14 +1484,14 @@ }, "ams-iii-j": { "category": "fuel-switching", - "known-string": ["AMS-III.J."], + "known-string": ["AMS-III.J.", "AMS-III.J."], "program": "cdm", "url": "https://cdm.unfccc.int/methodologies/documentation/meth_booklet.pdf#AMS_III_J" }, "ams-iii-l": { "category": "ghg-management", "is_methane": true, - "known-string": ["AMS-III.L."], + "known-string": ["AMS-III.L.", "AMS-III.L."], "program": "cdm", "url": "https://cdm.unfccc.int/methodologies/documentation/meth_booklet.pdf#AMS_III_L" }, @@ -1439,6 +1511,7 @@ "ams-iii-q": { "category": "energy-efficiency", "known-strings": [ + "ACM0012; AMS-III.Q", "AMS-III.Q", "AMS-III.Q. Waste Energy Recovery (gas/heat/pressure) Projects" ], @@ -1458,21 +1531,21 @@ }, "ams-iii-s": { "category": "fuel-switching", - "sub-category": "transportation", "known-strings": [ "AMS-I.F.; AMS-III.S.", "AMS-III.S.", "AMS-III.S. Introduction of low-emission vehicles/technologies to commercial vehicle fleets" ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "ams-iii-u": { "category": "fuel-switching", - "sub-category": "transportation", "known-strings": [ "AMS-III.U.: Cable Cars for Mass Rapid Transit System (MRTS)" ], - "program": "cdm" + "program": "cdm", + "sub-category": "transportation" }, "ams-iii-y": { "category": "ghg-management", @@ -1516,6 +1589,7 @@ "ar-acm0003": { "category": "forest", "known-strings": [ + "AR-ACM0003; VM0042", "CDM - AR-ACM0003: Afforestation and reforestation of lands except wetlands", "ACM0003; VM0042", "AR-AMS0003; AR-AMS0007; AR-ACM0003; AR-AM0014", @@ -1658,6 +1732,11 @@ "sub-category": "industrial-processes", "url": "https://www.climateactionreserve.org/how/protocols/industrial/adipic-acid-production/" }, + "car-biochar": { + "category": "biomass-cdr", + "known-strings": ["Biochar"], + "program": "car" + }, "car-forest": { "category": "forest", "known-strings": [ @@ -1682,6 +1761,11 @@ "sub-category": "avoided-conversion", "url": "https://www.climateactionreserve.org/how/protocols/ncs/grassland/" }, + "car-cement": { + "category": "ghg-management", + "known-strings": ["Low Carbon Cement"], + "program": "car" + }, "car-grassland-ca": { "category": "land-use", "known-strings": ["Canada Grassland"], @@ -1779,6 +1863,43 @@ "sub-category": "waste-management", "url": "https://www.climateactionreserve.org/how/protocols/waste/organic-waste-digestion/" }, + "ccb-landfills": { + "category": "ghg-management", + "known-strings": [ + "Methodology for executing projects that capture, destroy, or use the biogas produced in sanitary landfills" + ], + "program": "ccb" + }, + "ccb-redd": { + "category": "forest", + "known-strings": [ + "CCB - M/LU-REDD+: Methodology for the Implementation of REDD+ Projects Consistent with National Reference Levels" + ], + "program": "ccb", + "url": "https://www.cercarbono.com/wp-content/uploads/2023/01/REDD-Methodology-V-1.3.1.pdf" + }, + "ccb-refor": { + "category": "forest", + "known-strings": [ + "CCB - M/UT/F-A01: Methodology To Implement GHG Removal Projects Through Reforestation, Forest Restoration and the Establishment of Woody Crops" + ], + "program": "ccb", + "url": "https://www.cercarbono.com/wp-content/uploads/2021/11/Forest-and-Woody-Crops-Methodology-V.1.1.pdf" + }, + "ccb-renewables-eg": { + "category": "renewable-energy", + "known-strings": [ + "M/EE-EG001 Implementation of GHG Emission Reduction Projects Through Renewable Energy Use for Electric Power Generation." + ], + "program": "ccb" + }, + "ccb-renewables-er": { + "category": "renewable-energy", + "known-strings": [ + "CCB - M/E-ER01: Methodology for the realization of GHG emissions reduction projects by the use of renewable energy" + ], + "program": "ccb" + }, "climate-leaders-landfill": { "category": "ghg-management", "is_methane": true, @@ -1788,10 +1909,19 @@ "program": "epa", "sub-category": "landfill" }, + "ecy-forest": { + "category": "forest", + "known-strings": [ + "ECY Compliance Offset Protocol: U.S. Forest Projects", + "Improved Forest Management - WA ECO Compliance" + ], + "program": "ecy" + }, "ecy-ozone": { "category": "ghg-management", "known-strings": [ - "ECY Compliance Offset Protocol: Ozone Depleting Substances Projects" + "ECY Compliance Offset Protocol: Ozone Depleting Substances Projects", + "Ozone Depleting Substances - U.S. - WA ECO Compliance" ], "program": "ecy", "sub-category": "industrial-gases" @@ -1804,36 +1934,33 @@ "program": "acr", "sub-category": "industrial-gases" }, - "gs-shipping": { - "category": "energy-efficiency", - "sub-category": "transportation", - "known-strings": [ - "GS Retrofit Energy Efficiency Measures in Shipping v2", - "GS Retrofit Energy Efficiency Measures in Shipping v1" - ], - "url": "https://globalgoals.goldstandard.org/standards/422_V2.0_EE_Shipping_Retrofit-Energy-Efficiency-Measures-in-Shipping.pdf" - }, "gs-alt-coal": { "category": "energy-efficiency", - "sub-category": "cooking", "known-strings": ["GS Alternative Ignition Coal Fires v1."], + "sub-category": "cooking", "url": "https://www.goldstandard.org/sites/default/files/documents/alternative_ignition.pdf" }, - "gs-reforest": { - "category": "forest", + "gs-drinking-water": { + "category": "energy-efficiency", "known-strings": [ - "Afforestation/Reforestation GHG Emissions Reduction & Sequestration Methodology" + "GS Methodology for emission reductions from safe drinking water supply" ], - "url": "https://globalgoals.goldstandard.org/standards/403_V2.0_LUF_AR-Methodology-GHGs-emission-reduction-and-Sequestration-Methodology.pdf" + "sub-category": "drinking-water" }, - "gs-tpddtec": { - "category": "energy-efficiency", + "gs-biodigesters": { + "category": "ghg-management", + "known-strings": ["GS Baseline and Monitoring Methodology Biodigester v1."] + }, + "gs-manure-management": { + "category": "ghg-management", "known-strings": [ - "GS TPDDTEC v 1.", - "GS TPDDTEC v 2.", - "GS TPDDTEC v 3.", - "GS TPDDTEC v3.1", - "GS TPDDTEC V4.0: REDUCED EMISSIONS FROM COOKING AND HEATING – TECHNOLOGIES AND PRACTICES TO DISPLACE DECENTRALIZED THERMAL ENERGY CONSUMPTION" + "Methodology for animal waste management and biogas application" + ] + }, + "gs-rice": { + "category": "agriculture", + "known-strings": [ + "Methane Emission Reduction By Adjusted Water Management Practice In Rice Cultivation" ] }, "gs-kitchen-cookstoves": { @@ -1844,18 +1971,35 @@ "GS Methodology for Improved Cook stoves and Kitchen Regimes v2." ] }, - "gs-drinking-water": { + "gs-metered-cookstoves": { "category": "energy-efficiency", - "sub-category": "drinking-water", "known-strings": [ - "GS Methodology for emission reductions from safe drinking water supply" + "Methodology for Metered & Measured Energy Cooking Devices" ] }, - "gs-metered-cookstoves": { + "gs-wash": { "category": "energy-efficiency", + "known-strings": ["GS Water Access and WASH Methodology v1."] + }, + "gs-reforest": { + "category": "forest", "known-strings": [ - "Methodology for Metered & Measured Energy Cooking Devices" - ] + "Afforestation/Reforestation GHG Emissions Reduction & Sequestration Methodology" + ], + "url": "https://globalgoals.goldstandard.org/standards/403_V2.0_LUF_AR-Methodology-GHGs-emission-reduction-and-Sequestration-Methodology.pdf" + }, + "gs-soil": { + "category": "agriculture", + "known-strings": ["Soil Organic Carbon Framework Methodology"] + }, + "gs-shipping": { + "category": "energy-efficiency", + "known-strings": [ + "GS Retrofit Energy Efficiency Measures in Shipping v2", + "GS Retrofit Energy Efficiency Measures in Shipping v1" + ], + "sub-category": "transportation", + "url": "https://globalgoals.goldstandard.org/standards/422_V2.0_EE_Shipping_Retrofit-Energy-Efficiency-Measures-in-Shipping.pdf" }, "gs-simplified-cookstoves": { "category": "energy-efficiency", @@ -1865,6 +2009,68 @@ "The Gold Standard Simplified Methodology for Clean and Efficient Cookstoves, Version 3.0" ] }, + "gs-tpddtec": { + "category": "energy-efficiency", + "known-strings": [ + "GS TPDDTEC v 1.", + "GS TPDDTEC v 2.", + "GS TPDDTEC v 3.", + "GS TPDDTEC v3.1", + "GS TPDDTEC V4.0: REDUCED EMISSIONS FROM COOKING AND HEATING – TECHNOLOGIES AND PRACTICES TO DISPLACE DECENTRALIZED THERMAL ENERGY CONSUMPTION" + ] + }, + "iso-bio-burial": { + "category": "biomass-cdr", + "known-strings": ["subsurface-biomass"], + "program": "iso" + }, + "iso-bio-ccs": { + "category": "biomass-cdr", + "known-strings": ["biogenic-capture-and-storage"], + "program": "iso" + }, + "iso-bio-geo": { + "category": "biomass-cdr", + "known-strings": ["biomass-geological-storage"], + "program": "iso", + "url": "https://isometric.com/pathways/biomass-geological-storage" + }, + "iso-bio-oil": { + "category": "biomass-cdr", + "known-strings": ["bio-oil-geological-storage"], + "program": "iso" + }, + "iso-biochar": { + "category": "biomass-cdr", + "known-strings": ["biochar"], + "program": "iso", + "url": "https://isometric.com/pathways/biochar" + }, + "iso-dac": { + "category": "air-capture", + "known-strings": ["direct-air-capture"], + "program": "iso" + }, + "iso-erw": { + "category": "alkalinity-cdr", + "known-strings": ["enhanced-weathering-agriculture"], + "program": "iso" + }, + "iso-refor": { + "category": "forest", + "known-strings": ["reforestation"], + "program": "iso" + }, + "iso-river": { + "category": "alkalinity-cdr", + "known-strings": ["river-alkalinity-enhancement"], + "program": "iso" + }, + "iso-wastewater": { + "category": "alkalinity-cdr", + "known-strings": ["wastewater-alkalinity-enhancement"], + "program": "iso" + }, "unknown": { "category": "unknown", "known-strings": [ @@ -1909,7 +2115,7 @@ }, "vm0006": { "category": "forest", - "known-strings": ["VM0006", "AR-AMS0007; VM0006"], + "known-strings": ["VM0006; VM0048", "VM0006", "AR-AMS0007; VM0006"], "program": "vcs", "sub-category": "redd", "url": "https://verra.org/methodologies/vm0006-methodology-for-carbon-accounting-for-mosaic-and-landscape-scale-redd-projects-v2-2/" @@ -1917,13 +2123,20 @@ "vm0007": { "category": "forest", "known-strings": [ + "VM0007; VM0010; VM0048", + "VM0007; VM0033; VM0047", + "VM0007; VM0033; VM0047; VM0048", + "VM0007; VM0042", + "VM0007; VM0011", + "VM0007; VM0033", "VM0007; AR-ACM0003", "VM0007; VM0015", "VM0005; VM0007; VM0017", "VM0007", "AM0014; VM0007; AR-ACM0003", "VM0007; VM0010", - "VM0007; VM0048" + "VM0007; VM0048", + "VM0007; VM0047" ], "program": "vcs", "sub-category": "redd", @@ -1931,9 +2144,9 @@ }, "vm0008": { "category": "energy-efficiency", - "sub-category": "weatherization", "known-strings": ["VM0008"], - "program": "vcs" + "program": "vcs", + "sub-category": "weatherization" }, "vm0009": { "category": "forest", @@ -1943,13 +2156,13 @@ }, "vm0010": { "category": "forest", - "known-strings": ["VM0010", "VM0007; VM0010"], + "known-strings": ["VM0010", "VM0007; VM0010; VM0048", "VM0007; VM0010"], "program": "vcs", "url": "https://verra.org/methodologies/vm0010-methodology-for-improved-forest-management-conversion-from-logged-to-protected-forest-v1-3/" }, "vm0011": { "category": "forest", - "known-strings": ["VM0011"], + "known-strings": ["VM0007; VM0011", "VM0011"], "program": "vcs" }, "vm0012": { @@ -1971,7 +2184,9 @@ "vm0015": { "category": "forest", "known-strings": [ + "VM0015; VM0048", "VM00015", + "VM0015; VM0037", "VM0005; VM0015; Methodology Under Development", "VM0007; VM0015", "VM0015", @@ -2004,9 +2219,9 @@ }, "vm0019": { "category": "fuel-switching", - "sub-category": "transportation", "known-strings": ["VM0019"], - "program": "vcs" + "program": "vcs", + "sub-category": "transportation" }, "vm0021": { "known-strings": ["AMS-III.F.; VM0021", "VM0021"], @@ -2037,12 +2252,19 @@ }, "vm0032": { "category": "agriculture", - "known-strings": ["VM0032"], + "known-strings": ["VM0032; VM0042", "VM0032"], "program": "vcs" }, "vm0033": { "category": "unknown", - "known-strings": ["VM0033"], + "known-strings": [ + "VM0007; VM0033; VM0047", + "VM0007; VM0033; VM0047; VM0048", + "VM0033; VM0042", + "VM0033; VM0047", + "VM0007; VM0033", + "VM0033" + ], "program": "vcs", "url": "https://verra.org/methodologies/vm0033-methodology-for-tidal-wetland-and-seagrass-restoration-v2-1/" }, @@ -2060,15 +2282,22 @@ }, "vm0037": { "category": "forest", - "known-strings": ["VM0037"], + "known-strings": ["VM0037", "VM0015; VM0037"], "program": "vcs", "url": "https://verra.org/methodologies/vm0037-methodology-implementation-redd-activities-landscapes-affected-mosaic-deforestation-degradation-v1-0/" }, "vm0038": { "category": "fuel-switching", - "sub-category": "transportation", - "known-strings": ["AMS-III.C.; VM0038", "VM0038"], + "known-strings": [ + "AMS-I.F.; VMR0014; AMS-III.C; VM0038", + "AMS-I.F.; VMR0014; VM0038", + "AMS-I.F.; AMS-III.C.; VM0038", + "AMS-III.C.; VM0038", + "VM0038", + "VMR0014; VM0038" + ], "program": "vcs", + "sub-category": "transportation", "url": "https://verra.org/methodologies/vm0038-methodology-for-electric-vehicle-charging-systems-v1-0/" }, "vm0039": { @@ -2084,6 +2313,12 @@ "vm0042": { "category": "agriculture", "known-strings": [ + "VM0042; VM0048", + "AR-ACM0003; VM0042", + "VM0032; VM0042", + "VM0007; VM0042", + "VM0033; VM0042", + "VM0042; VM0047", "VM0041; VM0042", "ACM0003; VM0042", "AMS-I.F.; AMS-III.D.; AMS-III.AO.; VM0042", @@ -2123,16 +2358,49 @@ }, "vm0047": { "category": "forest", - "known-strings": ["VM0047", "VM0047; VM0048"], + "known-strings": [ + "VM0007; VM0033; VM0047", + "VM0007; VM0033; VM0047; VM0048", + "VM0033; VM0047", + "VM0042; VM0047", + "VM0047", + "VM0047; VM0048", + "VM0007; VM0047" + ], "program": "verra", "url": "https://verra.org/methodologies/vm0047-afforestation-reforestation-and-revegetation-v1-0/" }, "vm0048": { "category": "forest", - "known-strings": ["VM0007; VM0048", "VM0047; VM0048", "VM0048"], + "known-strings": [ + "VM0042; VM0048", + "VM0015; VM0048", + "VM0007; VM0033; VM0047; VM0048", + "VM0007; VM0010; VM0048", + "VM0006; VM0048", + "VM0007; VM0048", + "VM0047; VM0048", + "VM0048" + ], "program": "verra", "url": "https://verra.org/methodologies/vm0047-afforestation-reforestation-and-revegetation-v1-0/" }, + "vm0049": { + "category": "ghg-management", + "known-strings": ["VM0049"], + "program": "verra" + }, + "vm0050": { + "category": "energy-efficiency", + "known-strings": ["VM0050"], + "program": "verra", + "url": "https://verra.org/methodologies/vm0050-energy-efficiency-and-fuel-switch-measures-in-cookstoves-v1-0/" + }, + "vm0051": { + "category": "agriculture", + "known-strings": ["VM0051"], + "program": "verra" + }, "vmd00038": { "category": "energy-efficiency", "known-strings": ["VM0025; VMD0038"], @@ -2158,6 +2426,8 @@ "vmr0006": { "category": "energy-efficiency", "known-strings": [ + "AMS-II.G.; VMR0006; AMS-III.AR", + "AMS-I.E.; VMR0006; AMS-III.AV.", "VMR0006; AMS-III.AV.", "AMS-II.G.; VMR0006", "VMR0006; AMS-III.BG", @@ -2168,79 +2438,28 @@ "program": "vcs", "url": "https://verra.org/methodologies/vmr0006-methodology-for-installation-of-high-efficiency-firewood-cookstoves/" }, - "ccb-redd": { - "category": "forest", - "known-strings": [ - "CCB - M/LU-REDD+: Methodology for the Implementation of REDD+ Projects Consistent with National Reference Level" + "vmr0007": { + "category": "fuel-switching", + "known-string": [ + "AMS-III.D.; AMS-III.F.; VMR0007", + "VMR0007", + "VMR0007; VMR0008" ], - "program": "ccb", - "url": "https://www.cercarbono.com/wp-content/uploads/2023/01/REDD-Methodology-V-1.3.1.pdf" + "program": "verra" }, - "ccb-refor": { - "category": "forest", - "known-strings": [ - "CCB - M/UT/F-A01: Methodology To Implement GHG Removal Projects Through Reforestation, Forest Restoration and the Establishment of Woody Crop" - ], - "program": "ccb", - "url": "https://www.cercarbono.com/wp-content/uploads/2021/11/Forest-and-Woody-Crops-Methodology-V.1.1.pdf" + "vmr0008": { + "category": "energy-efficiency", + "known-string": ["VMR0008", "VMR0007; VMR0008"], + "program": "verra" }, - "ccb-renewables": { - "category": "renewable-energy", - "known-strings": [ - "CCB - M/E-ER01: Methodology for the realization of GHG emissions reduction projects by the use of renewable energy" + "vmr0014": { + "category": "energy-efficiency", + "known-string": [ + "AMS-I.F.; VMR0014; AMS-III.C; VM0038", + "AMS-I.F.; VMR0014; VM0038", + "VMR0014; VM0038", + "VMR0014" ], - "program": "ccb" - }, - "iso-biochar": { - "category": "biomass-cdr", - "known-strings": ["biochar"], - "program": "iso", - "url": "https://isometric.com/pathways/biochar" - }, - "iso-erw": { - "category": "alkalinity-cdr", - "known-strings": ["enhanced-weathering-agriculture"], - "program": "iso" - }, - "iso-dac": { - "category": "air-capture", - "known-strings": ["direct-air-capture"], - "program": "iso" - }, - "iso-bio-oil": { - "category": "biomass-cdr", - "known-strings": ["bio-oil-geological-storage"], - "program": "iso" - }, - "iso-bio-geo": { - "category": "biomass-cdr", - "known-strings": ["biomass-geological-storage"], - "program": "iso", - "url": "https://isometric.com/pathways/biomass-geological-storage" - }, - "iso-wastewater": { - "category": "alkalinity-cdr", - "known-strings": ["wastewater-alkalinity-enhancement"], - "program": "iso" - }, - "iso-river": { - "category": "alkalinity-cdr", - "known-strings": ["river-alkalinity-enhancement"], - "program": "iso" - }, - "iso-bio-burial": { - "category": "biomass-cdr", - "known-strings": ["subsurface-biomass"], - "program": "iso" - }, - "iso-bio-ccs": { - "category": "biomass-cdr", - "known-strings": ["biogenic-capture-and-storage"], - "program": "iso" - }, - "iso-refor": { - "category": "forest", - "known-strings": ["reforestation"], - "program": "iso" + "program": "verra" } } diff --git a/offsets_db_data/configs/beneficiary-mappings.json b/offsets_db_data/configs/beneficiary-mappings.json index b3b04e9..696f74f 100644 --- a/offsets_db_data/configs/beneficiary-mappings.json +++ b/offsets_db_data/configs/beneficiary-mappings.json @@ -64074,5 +64074,4301 @@ } ], "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Not public;%;%;%;%\", \"\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Not public;%;%;%;%\", \"\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Delta Air Lines For DL 2021 Carbon Neutrality;%;%;%;%\", \"Delta Air Lines\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Delta Air Lines For DL 2021 Carbon Neutrality;%;%;%;%\", \"Delta Air Lines\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Primax Colombia S.A;%;%;%;%\", \"Primax\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Primax Colombia S.A;%;%;%;%\", \"Primax\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%CHEVRON PETROLEUM COMPANY;%;%;%;%\", \"Chevron\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%CHEVRON PETROLEUM COMPANY;%;%;%;%\", \"Chevron\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Guacolda Energía SpA;%;%;%;%\", \"Guacolda Energía\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Guacolda Energía SpA;%;%;%;%\", \"Guacolda Energía\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ENGIE Energía Chile S.A;%;%;%;%\", \"ENGIE\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ENGIE Energía Chile S.A;%;%;%;%\", \"ENGIE\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Ecopetrol S.A.;%;%;%;%\", \"Ecopetrol\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Ecopetrol S.A.;%;%;%;%\", \"Ecopetrol\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\"%;%ECOPETROL S.A.;%;%;%;%\", \"Ecopetrol\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\"%;%ECOPETROL S.A.;%;%;%;%\", \"Ecopetrol\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%OLEODUCTO CENTRAL S.A.;%;%;%;%\", \"Oleoducto Central\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%OLEODUCTO CENTRAL S.A.;%;%;%;%\", \"Oleoducto Central\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ENGIE Energía Chile S.A.;%;%;%;%\", \"ENGIE\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ENGIE Energía Chile S.A.;%;%;%;%\", \"ENGIE\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ACCIONA, S.A.;%;%;%;%\", \"ACCIONA\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ACCIONA, S.A.;%;%;%;%\", \"ACCIONA\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Tecnoglass Inc;%;%;%;%\", \"Tecnoglass\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Tecnoglass Inc;%;%;%;%\", \"Tecnoglass\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%PETROLEOS DEL MILENIO S.A.;%;%;%;%\", \"Petromil\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%PETROLEOS DEL MILENIO S.A.;%;%;%;%\", \"Petromil\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%PLUS+ ENERGY S.A.S;%;%;%;%\", \"Plus+ Energy\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%PLUS+ ENERGY S.A.S;%;%;%;%\", \"Plus+ Energy\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%PUMA ENERGY COLOMBIA COMBUSTIBLES S.A.S.;%;%;%;%\", \"Puma Energy Colombia Combustibles\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%PUMA ENERGY COLOMBIA COMBUSTIBLES S.A.S.;%;%;%;%\", \"Puma Energy Colombia Combustibles\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ESENTTIA S.A.;%;%;%;%\", \"Esenttia\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ESENTTIA S.A.;%;%;%;%\", \"Esenttia\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Enel Generación Chile S.A.;%;%;%;%\", \"Enel Generación\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Enel Generación Chile S.A.;%;%;%;%\", \"Enel Generación\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ECOPETROL S.A;%;%;%;%\", \"Ecopetrol\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ECOPETROL S.A;%;%;%;%\", \"Ecopetrol\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Masser S.A.S.;%;%;%;%\", \"Masser\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Masser S.A.S.;%;%;%;%\", \"Masser\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Fast Colombia SAS;%;%;%;%\", \"Fast Colombia\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Fast Colombia SAS;%;%;%;%\", \"Fast Colombia\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ESENTTIA MASTERBATCH LTDA;%;%;%;%\", \"Esenttia\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ESENTTIA MASTERBATCH LTDA;%;%;%;%\", \"Esenttia\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%SIEMENS ENERGY S.A.S;%;%;%;%\", \"Siemens Energy\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%SIEMENS ENERGY S.A.S;%;%;%;%\", \"Siemens Energy\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Transportadora de Gas Internacional S.A. ESP;%;%;%;%\", \"Transportadora de Gas Internacional\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Transportadora de Gas Internacional S.A. ESP;%;%;%;%\", \"Transportadora de Gas Internacional\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Guacolda Energía SpA.;%;%;%;%\", \"Guacolda Energía\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Guacolda Energía SpA.;%;%;%;%\", \"Guacolda Energía\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Petrobras Colombia Combustibles S.A.;%;%;%;%\", \"Petrobras\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Petrobras Colombia Combustibles S.A.;%;%;%;%\", \"Petrobras\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%AEROVIAS DEL CONTINENTE AMERICANO S.A.;%;%;%;%\", \"Avianca\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%AEROVIAS DEL CONTINENTE AMERICANO S.A.;%;%;%;%\", \"Avianca\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ENEL GENERACIÓN CHILE S.A.;%;%;%;%\", \"Enel Generación\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ENEL GENERACIÓN CHILE S.A.;%;%;%;%\", \"Enel Generación\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%AEROSUCRE S.A.;%;%;%;%\", \"Aerosucre\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%AEROSUCRE S.A.;%;%;%;%\", \"Aerosucre\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GASEOSAS POSADA TOBON S.A.;%;%;%;%\", \"Postobón\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GASEOSAS POSADA TOBON S.A.;%;%;%;%\", \"Postobón\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Postobon S.A.;%;%;%;%\", \"Postobón\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Postobon S.A.;%;%;%;%\", \"Postobón\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%POSTOBON S.A.;%;%;%;%\", \"Postobón\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%POSTOBON S.A.;%;%;%;%\", \"Postobón\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GREENLAND INVESTMENTS S.A.S.;%;%;%;%\", \"Greenland Investments\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GREENLAND INVESTMENTS S.A.S.;%;%;%;%\", \"Greenland Investments\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Cabify Matriz S.L.;%;%;%;%\", \"Cabify\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Cabify Matriz S.L.;%;%;%;%\", \"Cabify\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GASEOSAS LUX S.A.S.;%;%;%;%\", \"Gaseosas Lux\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GASEOSAS LUX S.A.S.;%;%;%;%\", \"Gaseosas Lux\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": "cenit", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%CENIT TRANSPORTE Y LOGISTICA DE HIDROCARBUROS S.A.S;%;%;%;%\", \"Cenit\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%CENIT TRANSPORTE Y LOGISTICA DE HIDROCARBUROS S.A.S;%;%;%;%\", \"Cenit\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": "cenit", + "mode": "text", + "caseSensitive": false, + "invert": true + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GASEOSAS LUX SAS;%;%;%;%\", \" Gaseosas Lux\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GASEOSAS LUX SAS;%;%;%;%\", \" Gaseosas Lux\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": "gaseo", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GASEOSAS COLOMBIANAS S.A.S.;%;%;%;%\", \"Gaseosas Colombianas\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GASEOSAS COLOMBIANAS S.A.S.;%;%;%;%\", \"Gaseosas Colombianas\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": "gaseo", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Gaseosas Colombianas S.A.S.;%;%;%;%\", \"Gaseosas Colombianas\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Gaseosas Colombianas S.A.S.;%;%;%;%\", \"Gaseosas Colombianas\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": "gaseo", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GASEOSAS COLOMBIANAS S.A.S;%;%;%;%\", \"Gaseosas Colombianas\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GASEOSAS COLOMBIANAS S.A.S;%;%;%;%\", \"Gaseosas Colombianas\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Minera Escondida Ltda;%;%;%;%\", \"Minera Escondida\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Minera Escondida Ltda;%;%;%;%\", \"Minera Escondida\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Sodimac Colombia S.A.;%;%;%;%\", \"Sodimac\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Sodimac Colombia S.A.;%;%;%;%\", \"Sodimac\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%Proquinal S.A.S;%;%;%;%\", \"Proquinal\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%Proquinal S.A.S;%;%;%;%\", \"Proquinal\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%ORIZON S A;%;%;%;%\", \"Orizon\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%ORIZON S A;%;%;%;%\", \"Orizon\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%FRONTERA ENERGY COLOMBIA CORP., SUCURSAL COLOMBIA.;%;%;%;%\", \"Frontera Energy\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%FRONTERA ENERGY COLOMBIA CORP., SUCURSAL COLOMBIA.;%;%;%;%\", \"Frontera Energy\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%GUARDIAN INDUSTRIES VP;%;%;%;%\", \"Guardian Industries\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%GUARDIAN INDUSTRIES VP;%;%;%;%\", \"Guardian Industries\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%EGTC Infra S.A;%;%;%;%\", \"EGTC Infra\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%EGTC Infra S.A;%;%;%;%\", \"EGTC Infra\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%INVESMAR INTERNATIONAL INVESTMENTS S.A.;%;%;%;%\", \"Invesmar International Investments\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%INVESMAR INTERNATIONAL INVESTMENTS S.A.;%;%;%;%\", \"Invesmar International Investments\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%CENTRALES ELÉCTRICAS DEL NORTE DE SANTANDER S.A. E.S.P.;%;%;%;%\", \"Centrales Eléctricas de Norte de Santander\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%CENTRALES ELÉCTRICAS DEL NORTE DE SANTANDER S.A. E.S.P.;%;%;%;%\", \"Centrales Eléctricas de Norte de Santander\")" + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "grel:value.replace(\";%;%OLEODUCTO DE LOS LLANOS ORIENTALES S.A.;%;%;%;%\", \"Oleoducto de los Llanos Orientales\")", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10, + "description": "Text transform on cells in column merged_beneficiary using expression grel:value.replace(\";%;%OLEODUCTO DE LOS LLANOS ORIENTALES S.A.;%;%;%;%\", \"Oleoducto de los Llanos Orientales\")" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "cc", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": [ + ";%;%FABRICA DE LICORES Y ALCOHOLES DE ANTIOQUIA EICE;%;%;%;%" + ], + "fromBlank": false, + "fromError": false, + "to": "Fabrica de Licores y Alcoholes de Antioquia" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Block;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Block" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Shopify;%Shopify;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Shopify" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["JPMorganChase;%JPMorganChase;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "JPMorganChase" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Yelp Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Yelp" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Supercritical;%BlackRock, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Blackrock" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Marsh;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Marsh" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": [ + "Harvard Management Company;%Harvard Management Company;%;%;%;%" + ], + "fromBlank": false, + "fromError": false, + "to": "Harvard Management Company" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Workday;%Workday;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Workday" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Figma;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Figma" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Autodesk;%Autodesk;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Autodesk" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Zendesk, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Zendesk" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["ClimeFi;%Boston Consulting Group;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Boston Consulting Group" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Samsara Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Samsara" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Rubicon Carbon;%Cisco Systems, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Cisco Systems" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Wise Payments Ltd;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Wise Payments" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Rubicon Carbon;%GitLab Inc. ;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "GitLab" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Opna;%Wise Payments Ltd;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Wise Payments" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Rubicon Carbon;%Jefferies Financial Group Inc;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Jefferies Financial Group" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Rubicon Carbon;%Bumble Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Bumble" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Terraset;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Terraset" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Patch;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Patch" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Versa;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Versa" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Dayforce US, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Dayforce US" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Coatue;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Coatue" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Skyscanner Limited;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Skyscanner" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Wren;%Union Square Ventures;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Union Square Ventures" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Aledade, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Aledade" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Skims Body, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Skims Body" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Canva Pty Ltd;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Canva" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Coatue;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Coatue" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Watershed;%Match Group Holdings I, LLC;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Match Group" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Typeform S.L.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Typeform" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Quang Nguyen;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Quang Nguyen" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Raritan Valley Community College;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Raritan Valley Community College" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%CarbonCure Technologies Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "CarbonCure" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Stanford University;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Stanford University" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Tomorro;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Tomorro" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Wren;%New Mountain Capital ;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "New Mountain Capital" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Bain & Company;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Bain & Company" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Wren;%Molten Ventures;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Molten Ventures" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Rubicon Carbon;%Genesys Cloud Services, Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Genesys Cloud Services" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Piva Capital;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Piva Capital" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Princeville Capital;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Princeville Capital" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Patch;%Future Energy Ventures Management GmbH;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Future Energy Ventures Management" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%CaptureNow;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "CaptureNow" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%Own Your Beliefs Inc.;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "Own Your Beliefs" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": ["Stripe;%DeliverOne;%;%;%;%"], + "fromBlank": false, + "fromError": false, + "to": "DeliverOne" + } + ], + "description": "Mass edit cells in column merged_beneficiary" + }, + { + "op": "core/mass-edit", + "engineConfig": { + "facets": [ + { + "type": "text", + "name": "transaction_type", + "columnName": "transaction_type", + "query": "retir", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "project_id", + "columnName": "project_id", + "query": "iso", + "mode": "text", + "caseSensitive": false, + "invert": false + }, + { + "type": "text", + "name": "merged_beneficiary", + "columnName": "merged_beneficiary", + "query": ";%", + "mode": "text", + "caseSensitive": false, + "invert": false + } + ], + "mode": "row-based" + }, + "columnName": "merged_beneficiary", + "expression": "value", + "edits": [ + { + "from": [ + "CEEZER;%Deutscher Verband für Negative Emissionen e.V.;%;%;%;%" + ], + "fromBlank": false, + "fromError": false, + "to": "Deutscher Verband für Negative Emissionen" + } + ], + "description": "Mass edit cells in column merged_beneficiary" } ] diff --git a/offsets_db_data/configs/credits-raw-columns-mapping.json b/offsets_db_data/configs/credits-raw-columns-mapping.json index d5a7d6c..43781f4 100644 --- a/offsets_db_data/configs/credits-raw-columns-mapping.json +++ b/offsets_db_data/configs/credits-raw-columns-mapping.json @@ -8,6 +8,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Status Effective (GMT)", + "transaction_url": null, "vintage": "Vintage" }, "issuances": { @@ -18,6 +19,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Date Issued (GMT)", + "transaction_url": null, "vintage": "Vintage" }, "retirements": { @@ -28,6 +30,7 @@ "retirement_note": "Purpose of Retirement", "retirement_reason": "Retirement Reason", "transaction_date": "Status Effective (GMT)", + "transaction_url": null, "vintage": "Vintage" } }, @@ -40,6 +43,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Status Effective", + "transaction_url": null, "vintage": "Vintage" }, "issuances": { @@ -50,6 +54,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Date Approved", + "transaction_url": null, "vintage": "Vintage" }, "retirements": { @@ -60,6 +65,7 @@ "retirement_note": "Retirement Reason Details", "retirement_reason": "Retirement Reason", "transaction_date": "Status Effective", + "transaction_url": null, "vintage": "Vintage" } }, @@ -72,6 +78,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Status Effective", + "transaction_url": null, "vintage": "Vintage" }, "issuances": { @@ -82,6 +89,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Date Issued", + "transaction_url": null, "vintage": "Vintage" }, "retirements": { @@ -92,6 +100,7 @@ "retirement_note": "Retirement Reason Details", "retirement_reason": "Retirement Reason", "transaction_date": "Status Effective", + "transaction_url": null, "vintage": "Vintage" } }, @@ -104,6 +113,7 @@ "retirement_note": null, "retirement_reason": null, "transaction_date": "Issuance Date", + "transaction_url": null, "vintage": "Vintage" }, "retirements": { @@ -114,9 +124,34 @@ "retirement_note": "Note", "retirement_reason": null, "transaction_date": "Retirement Date", + "transaction_url": null, "vintage": "Vintage" } }, + "isometric": { + "issuances": { + "project_id": "project_id", + "quantity": "credit_batch_size_total.credits", + "retirement_account": null, + "retirement_beneficiary": null, + "retirement_note": null, + "retirement_reason": null, + "transaction_date": "issued_at", + "transaction_url": null, + "vintage": "sequestered_on" + }, + "retirements": { + "project_id": "project_id", + "quantity": "credit_batch_size_total.credits", + "retirement_account": "owner.name", + "retirement_beneficiary": "beneficiary.name", + "retirement_note": "notes", + "retirement_reason": "purposes", + "transaction_date": "retired_at", + "transaction_url": "url", + "vintage": "sequestered_on" + } + }, "verra": { "transactions": { "project_id": null, @@ -126,7 +161,8 @@ "retirement_note": "Retirement Details", "retirement_reason": "Retirement Reason", "transaction_date": null, - "vintage": null + "transaction_url": null, + "vintage": "null" } } } diff --git a/offsets_db_data/configs/projects-raw-columns-mapping.json b/offsets_db_data/configs/projects-raw-columns-mapping.json index 2d1cdac..1ac3e6d 100644 --- a/offsets_db_data/configs/projects-raw-columns-mapping.json +++ b/offsets_db_data/configs/projects-raw-columns-mapping.json @@ -4,6 +4,7 @@ "art-trees": "Program Country", "climate-action-reserve": "Project Site Country", "gold-standard": "Country", + "isometric": "location.country_name", "verra": "Country/Area" }, "listed_at": { @@ -11,6 +12,7 @@ "art-trees": null, "climate-action-reserve": "Project Listed Date", "gold-standard": null, + "isometric": null, "verra": null }, "name": { @@ -18,6 +20,7 @@ "art-trees": "Program Name", "climate-action-reserve": "Project Name", "gold-standard": "Project Name", + "isometric": "name", "verra": "Name" }, "original_protocol": { @@ -25,6 +28,7 @@ "art-trees": null, "climate-action-reserve": "Project Type", "gold-standard": "Methodology", + "isometric": "protocol_slug", "verra": "Methodology" }, "project_id": { @@ -32,6 +36,7 @@ "art-trees": "Program ID", "climate-action-reserve": "Project ID", "gold-standard": "GSID", + "isometric": "short_code", "verra": "ID" }, "proponent": { @@ -39,6 +44,7 @@ "art-trees": "Sovereign Program Developer", "climate-action-reserve": "Project Owner", "gold-standard": "Project Developer Name", + "isometric": "supplier.organisation.name", "verra": "Proponent" }, "status": { @@ -46,6 +52,7 @@ "art-trees": "Status", "climate-action-reserve": "Status", "gold-standard": "Status", + "isometric": "status", "verra": "Status" } } diff --git a/offsets_db_data/gld.py b/offsets_db_data/gld.py index 1190284..02072f1 100644 --- a/offsets_db_data/gld.py +++ b/offsets_db_data/gld.py @@ -8,6 +8,7 @@ PROJECT_SCHEMA_UPATH, load_column_mapping, load_inverted_protocol_mapping, + load_protocol_mapping, load_registry_project_column_mapping, load_type_category_mapping, ) @@ -212,6 +213,7 @@ def process_gld_projects( inverted_column_mapping = {value: key for key, value in registry_project_column_mapping.items()} type_category_mapping = load_type_category_mapping() inverted_protocol_mapping = load_inverted_protocol_mapping() + protocol_mapping = load_protocol_mapping() df = df.copy() credits = credits.copy() @@ -230,8 +232,9 @@ def process_gld_projects( override_data_path=BERKELEY_PROJECT_TYPE_UPATH, source_str='berkeley' ) .add_category( - type_category_mapping=type_category_mapping - ) # must come after types; type -> category + type_category_mapping=type_category_mapping, + protocol_mapping=protocol_mapping, + ) # category derived from protocol; project_type is independent .map_project_type_to_display_name(type_category_mapping=type_category_mapping) .add_is_compliance_flag() .add_retired_and_issued_totals(credits=credits) @@ -256,8 +259,9 @@ def process_gld_projects( override_data_path=BERKELEY_PROJECT_TYPE_UPATH, source_str='berkeley' ) .add_category( - type_category_mapping=type_category_mapping - ) # must come after types; type -> category + type_category_mapping=type_category_mapping, + protocol_mapping=protocol_mapping, + ) # category derived from protocol; project_type is independent .map_project_type_to_display_name(type_category_mapping=type_category_mapping) .add_is_compliance_flag() .add_missing_columns(schema=project_schema) diff --git a/offsets_db_data/isometric.py b/offsets_db_data/isometric.py new file mode 100644 index 0000000..ecb5b87 --- /dev/null +++ b/offsets_db_data/isometric.py @@ -0,0 +1,200 @@ +import pandas as pd +import pandas_flavor as pf + +from offsets_db_data.common import ( + BERKELEY_PROJECT_TYPE_UPATH, + CREDIT_SCHEMA_UPATH, + PROJECT_SCHEMA_UPATH, + load_column_mapping, + load_inverted_protocol_mapping, + load_protocol_mapping, + load_registry_project_column_mapping, + load_type_category_mapping, +) +from offsets_db_data.credits import ( + aggregate_issuance_transactions, # noqa: F401 + filter_and_merge_transactions, # noqa: F401 + harmonize_beneficiary_data, + merge_with_arb, # noqa: F401 +) +from offsets_db_data.models import credit_without_id_schema, project_schema +from offsets_db_data.projects import ( + add_category, # noqa: F401 + add_first_issuance_and_retirement_dates, # noqa: F401 + add_is_compliance_flag, # noqa: F401 + add_retired_and_issued_totals, # noqa: F401 + harmonize_country_names, # noqa: F401 + harmonize_status_codes, # noqa: F401 + map_protocol, # noqa: F401 +) + + +@pf.register_dataframe_method +def add_isometric_project_url(df: pd.DataFrame) -> pd.DataFrame: + """Add project URL column for Isometric projects. + + Parameters + ---------- + df : pd.DataFrame + Input dataframe containing Isometric project data. + + Returns + ------- + pd.DataFrame + Dataframe with added project URL column. + """ + df['project_url'] = df['url'] + return df + + +@pf.register_dataframe_method +def add_isometric_project_id(df: pd.DataFrame, prefix: str = 'ISO') -> pd.DataFrame: + """Add project ID column for Isometric credits dataframe. + + Parameters + ---------- + df : pd.DataFrame + Input dataframe containing Isometric credit transactions data. + + Returns + ------- + pd.DataFrame + Dataframe with added project ID column. + """ + df = df.copy() + df['project_id'] = prefix + df['project_id'].astype(str) + + return df + + +@pf.register_dataframe_method +def process_isometric_credits( + df: pd.DataFrame, + *, + download_type: str, + prj_id_to_short_code: dict | None = None, + registry_name: str = 'isometric', + prefix: str = 'ISO', + harmonize_beneficiary_info: bool = False, +) -> pd.DataFrame: + """Process Isometric credits dataframe to conform to offsets-db schema. + + Parameters + ---------- + df : pd.DataFrame + Input dataframe containing Isometric credit transactions data. + + Returns + ------- + pd.DataFrame + Dataframe conforming to offsets-db credit schema. + """ + column_mapping = load_column_mapping( + registry_name=registry_name, download_type=download_type, mapping_path=CREDIT_SCHEMA_UPATH + ) + + columns = {v: k for k, v in column_mapping.items()} + df = df.copy() + # Add project ID with prefix using the prj_id_to_short_code mapping if provided + if prj_id_to_short_code is not None: + df['project_id'] = prefix + df['project_id'].map(prj_id_to_short_code) + + if df.empty: + return ( + pd.DataFrame(columns=credit_without_id_schema.columns.keys()) + .add_missing_columns(schema=credit_without_id_schema) + .convert_to_datetime(columns=['transaction_date'], format='%Y-%m-%d') + .add_missing_columns(schema=credit_without_id_schema) + .validate(schema=credit_without_id_schema) + ) + if download_type == 'issuances': + df['transaction_type'] = 'issuance' + df['transaction_url'] = 'https://registry.isometric.com/issuance/' + df['id'].astype(str) + if 'sequestered_on' in df.columns: + df = df.convert_to_datetime(columns=['sequestered_on']) + df['sequestered_on'] = df['sequestered_on'].dt.year + elif download_type == 'retirements': + df = df.convert_to_datetime(columns=['sequestered_on']) + df['sequestered_on'] = df['sequestered_on'].dt.year + df['transaction_type'] = 'retirement' + # purposes is a list[str] from the API — flatten to comma-joined string + df['purposes'] = df['purposes'].apply( + lambda x: ', '.join(x) if isinstance(x, list) and x else None + ) + # notes arrives as empty string when unset — normalise to None + df['notes'] = df['notes'].replace('', None) + data = ( + df.rename(columns=columns) + .set_registry(registry_name=registry_name) + .convert_to_datetime(columns=['transaction_date'], format='%Y-%m-%d') + .add_missing_columns(schema=credit_without_id_schema) + .validate(schema=credit_without_id_schema) + ) + + if harmonize_beneficiary_info: + data = data.pipe( + harmonize_beneficiary_data, registry_name=registry_name, download_type=download_type + ) + + return data + + +@pf.register_dataframe_method +def process_isometric_projects( + df: pd.DataFrame, + *, + credits: pd.DataFrame, + registry_name: str = 'isometric', +) -> pd.DataFrame: + """Process Isometric projects dataframe to conform to offsets-db schema. + + Parameters + ---------- + df : pd.DataFrame + Input dataframe containing Isometric project data. + credits : pd.DataFrame + Dataframe containing credit transactions data. + registry_name : str, optional + Name of the registry to be added to the dataframe, by default "isometric" + + Returns + ------- + pd.DataFrame + Dataframe conforming to offsets-db project schema. + """ + + registry_project_column_mapping = load_registry_project_column_mapping( + registry_name=registry_name, file_path=PROJECT_SCHEMA_UPATH + ) + inverted_column_mapping = {value: key for key, value in registry_project_column_mapping.items()} + type_category_mapping = load_type_category_mapping() + inverted_protocol_mapping = load_inverted_protocol_mapping() + protocol_mapping = load_protocol_mapping() + + df = df.copy() + credits = credits.copy() + + data = ( + df.rename(columns=inverted_column_mapping) + .set_registry(registry_name=registry_name) + .add_isometric_project_id() + .add_isometric_project_url() + .harmonize_country_names() + .harmonize_status_codes() + .map_protocol(inverted_protocol_mapping=inverted_protocol_mapping) + .infer_project_type() + .override_project_types( + override_data_path=BERKELEY_PROJECT_TYPE_UPATH, source_str='berkeley' + ) + .add_category( + type_category_mapping=type_category_mapping, + protocol_mapping=protocol_mapping, + ) # category derived from protocol; project_type is independent + .map_project_type_to_display_name(type_category_mapping=type_category_mapping) + .add_retired_and_issued_totals(credits=credits) + .add_first_issuance_and_retirement_dates(credits=credits) + .add_missing_columns(schema=project_schema) + .convert_to_datetime(columns=['listed_at', 'first_issuance_at', 'first_retirement_at']) + .validate(schema=project_schema) + ) + return data diff --git a/offsets_db_data/models.py b/offsets_db_data/models.py index 6b50342..8a242f5 100644 --- a/offsets_db_data/models.py +++ b/offsets_db_data/models.py @@ -2,7 +2,7 @@ import janitor # noqa: F401 import pandas as pd -import pandera as pa +import pandera.pandas as pa RegistryType = typing.Literal[ 'verra', @@ -23,10 +23,10 @@ 'project_type': pa.Column(pa.String, nullable=False), 'project_type_source': pa.Column(pa.String, nullable=False), 'retired': pa.Column( - pa.Int, pa.Check.greater_than_or_equal_to(0), nullable=True, coerce=True + pa.Float64, pa.Check.greater_than_or_equal_to(0), nullable=True, coerce=True ), 'issued': pa.Column( - pa.Int, pa.Check.greater_than_or_equal_to(0), nullable=True, coerce=True + pa.Float64, pa.Check.greater_than_or_equal_to(0), nullable=True, coerce=True ), 'project_id': pa.Column(pa.String, nullable=False), 'name': pa.Column(pa.String, nullable=True), @@ -46,7 +46,7 @@ credit_without_id_schema = pa.DataFrameSchema( { 'quantity': pa.Column( - pa.Int, pa.Check.greater_than_or_equal_to(0), nullable=True, coerce=True + pa.Float64, pa.Check.greater_than_or_equal_to(0), nullable=True, coerce=True ), 'project_id': pa.Column(pa.String, nullable=False), 'vintage': pa.Column(pa.Int, nullable=True, coerce=True), @@ -57,6 +57,7 @@ 'retirement_note': pa.Column(pa.String, nullable=True), 'retirement_beneficiary': pa.Column(pa.String, nullable=True), 'retirement_beneficiary_harmonized': pa.Column(pa.String, nullable=True), + 'transaction_url': pa.Column(pa.String, nullable=True), } ) diff --git a/offsets_db_data/projects.py b/offsets_db_data/projects.py index 658e250..65991ee 100644 --- a/offsets_db_data/projects.py +++ b/offsets_db_data/projects.py @@ -1,5 +1,6 @@ import contextlib import json +from decimal import Decimal import country_converter as coco import janitor # noqa: F401 @@ -34,16 +35,26 @@ def harmonize_country_names(df: pd.DataFrame, *, country_column: str = 'country' @pf.register_dataframe_method -def add_category(df: pd.DataFrame, *, type_category_mapping: dict) -> pd.DataFrame: +def add_category( + df: pd.DataFrame, *, type_category_mapping: dict, protocol_mapping: dict | None = None +) -> pd.DataFrame: """ Add a category to each record in the DataFrame based on its protocol. + Category is derived directly from the protocol via protocol_mapping when available, + falling back to type_category_mapping via project_type. This keeps category and + project_type independent of each other. + Parameters ---------- df : pd.DataFrame Input DataFrame containing protocol data. type_category_mapping : dict - Dictionary mapping types to categories. + Dictionary mapping project_type strings to categories (fallback). + protocol_mapping : dict, optional + The full protocol mapping (from all-protocol-mapping.json). When provided, + category is read directly from the matched protocol's 'category' field, + which decouples it from project_type. Returns ------- @@ -52,12 +63,25 @@ def add_category(df: pd.DataFrame, *, type_category_mapping: dict) -> pd.DataFra """ print('Adding category based on protocol...') - df['category'] = ( - df['project_type'] - .str.lower() - .map({key.lower(): value['category'] for key, value in type_category_mapping.items()}) - .fillna('unknown') - ) + + if protocol_mapping is not None: + + def _category_from_protocol(protocol_list: list) -> str: + for p in protocol_list: + cat = protocol_mapping.get(p, {}).get('category') + if cat and cat != 'unknown': + return cat + return 'unknown' + + df['category'] = df['protocol'].apply(_category_from_protocol) + else: + # Legacy fallback: derive category from project_type via type_category_mapping + df['category'] = ( + df['project_type'] + .str.lower() + .map({key.lower(): value['category'] for key, value in type_category_mapping.items()}) + .fillna('unknown') + ) return df @@ -134,8 +158,10 @@ def infer_project_type(df: pd.DataFrame) -> pd.DataFrame: ) df.loc[df.apply(lambda x: 'vm0007' in x['protocol'], axis=1), 'project_type'] = 'redd+' - df.loc[df.apply(lambda x: 'acm0001' in x['protocol'], axis=1), 'project_type'] = 'landfill' - df.loc[df.apply(lambda x: 'acm0002' in x['protocol'], axis=1), 'project_type'] = 'natural gas' + df.loc[df.apply(lambda x: 'acm0001' in x['protocol'], axis=1), 'project_type'] = ( + 'landfill methane' + ) + df.loc[df.apply(lambda x: 'acm0002' in x['protocol'], axis=1), 'project_type'] = 're bundled' df.loc[df.apply(lambda x: 'iso-refor' in x['protocol'], axis=1), 'project_type'] = ( 'afforestation/reforestation' @@ -445,9 +471,19 @@ def add_retired_and_issued_totals(projects: pd.DataFrame, *, credits: pd.DataFra # # filter out the projects that are not in the credits data # credits = credits[credits['project_id'].isin(projects['project_id'].unique())] - # groupd and sum + # infer source precision and round after sum to avoid float64 representation errors + # (e.g. 153.89 + 235.53 = 389.41999... in binary float) + source_precision = int( + credits['quantity'] + .dropna() + .apply(lambda x: max(0, -Decimal(repr(x)).as_tuple().exponent)) + .max() + ) credit_totals = ( - credits.groupby(['project_id', 'transaction_type'])['quantity'].sum().reset_index() + credits.groupby(['project_id', 'transaction_type'])['quantity'] + .sum() + .round(source_precision) + .reset_index() ) # pivot the table credit_totals_pivot = credit_totals.pivot( diff --git a/offsets_db_data/registry.py b/offsets_db_data/registry.py index 9eb5e32..e7bc705 100644 --- a/offsets_db_data/registry.py +++ b/offsets_db_data/registry.py @@ -4,6 +4,7 @@ 'acr': 'american-carbon-registry', 'art': 'art-trees', 'gld': 'gold-standard', + 'iso': 'isometric', } diff --git a/offsets_db_data/vcs.py b/offsets_db_data/vcs.py index 6fd1550..0b1e369 100644 --- a/offsets_db_data/vcs.py +++ b/offsets_db_data/vcs.py @@ -8,6 +8,7 @@ PROJECT_SCHEMA_UPATH, load_column_mapping, load_inverted_protocol_mapping, + load_protocol_mapping, load_registry_project_column_mapping, load_type_category_mapping, ) @@ -351,7 +352,6 @@ def process_vcs_projects( *, credits: pd.DataFrame, registry_name: str = 'verra', - download_type: str = 'projects', ) -> pd.DataFrame: """ Process Verra projects data, including renaming, adding, and validating columns, and merging with credits data. @@ -381,6 +381,7 @@ def process_vcs_projects( inverted_column_mapping = {value: key for key, value in registry_project_column_mapping.items()} type_category_mapping = load_type_category_mapping() inverted_protocol_mapping = load_inverted_protocol_mapping() + protocol_mapping = load_protocol_mapping() data = ( df.rename(columns=inverted_column_mapping) @@ -395,8 +396,9 @@ def process_vcs_projects( override_data_path=BERKELEY_PROJECT_TYPE_UPATH, source_str='berkeley' ) .add_category( - type_category_mapping=type_category_mapping - ) # must come after types; type -> category + type_category_mapping=type_category_mapping, + protocol_mapping=protocol_mapping, + ) # category derived from protocol; project_type is independent .add_is_compliance_flag() .add_vcs_compliance_projects() .map_project_type_to_display_name(type_category_mapping=type_category_mapping) diff --git a/tests/conftest.py b/tests/conftest.py index 6941b71..925c90b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,8 @@ """Shared test fixtures for offsets-db-data tests. Sample data in tests/data/ was extracted from: - s3://carbonplan-offsets-db/raw/2026-04-14/ + s3://carbonplan-offsets-db/raw/2026-04-14/ (verra, acr, art, car, gld, arb) + s3://carbonplan-scratch/offsets-db-test/raw/2026-04-15/ (isometric) To refresh samples, run: python tests/scripts/refresh_sample_data.py @@ -16,7 +17,9 @@ # S3 coordinates that match the local sample data RAW_DATE = '2026-04-14' +SCRATCH_DATE = '2026-04-15' RAW_BUCKET = 's3://carbonplan-offsets-db/raw' +SCRATCH_BUCKET = 's3://carbonplan-scratch/offsets-db-test/raw' def pytest_collection_modifyitems(items): @@ -34,11 +37,21 @@ def date() -> str: return RAW_DATE +@pytest.fixture +def scratch_date() -> str: + return SCRATCH_DATE + + @pytest.fixture def bucket() -> str: return RAW_BUCKET +@pytest.fixture +def scratch_bucket() -> str: + return SCRATCH_BUCKET + + # ── Raw data fixtures (load from local sample files) ────────────────────────── # These fixtures load small CSV samples extracted from S3. Use them as the base # for unit tests so tests don't need S3 access. @@ -134,6 +147,27 @@ def raw_gld_retirements() -> pd.DataFrame: return pd.read_csv(DATA_DIR / 'gold-standard' / 'retirements.csv') +@pytest.fixture +def raw_isometric_projects() -> pd.DataFrame: + return pd.read_csv(DATA_DIR / 'isometric' / 'projects.csv') + + +@pytest.fixture +def raw_isometric_issuances() -> pd.DataFrame: + return pd.read_csv(DATA_DIR / 'isometric' / 'issuances.csv') + + +@pytest.fixture +def raw_isometric_retirements() -> pd.DataFrame: + return pd.read_csv(DATA_DIR / 'isometric' / 'retirements.csv') + + +@pytest.fixture +def isometric_prj_id_to_short_code(raw_isometric_projects) -> dict: + """Map Isometric project UUID → short code, used by process_isometric_credits.""" + return dict(zip(raw_isometric_projects['id'], raw_isometric_projects['short_code'])) + + # ── Processed fixtures ───────────────────────────────────────────────────────── # These derive processed DataFrames from the raw fixtures above. # Import side-effects register all pandas_flavor methods on pd.DataFrame. diff --git a/tests/data/isometric/issuances.csv b/tests/data/isometric/issuances.csv new file mode 100644 index 0000000..219eb79 --- /dev/null +++ b/tests/data/isometric/issuances.csv @@ -0,0 +1,101 @@ +id,issued_at,project_id,supplier.id,supplier.short_description,supplier.long_description,supplier.organisation.id,supplier.organisation.name,supplier.organisation.domain,supplier.location,supplier_credit_batch_size_total.credits,supplier_credit_batch_size_total.credit_kgs,buffer_pool_credit_batch_size_total.credits,buffer_pool_credit_batch_size_total.credit_kgs,credit_batch_size_total.credits,credit_batch_size_total.credit_kgs,supplier.location.country_code,supplier.location.country_name,supplier.location.latitude,supplier.location.longitude,supplier.location.description +iss_1KP6EDZ8K1S036PY,2026-04-14T16:50:41.621676Z,prj_1JYCV03BW1S0RTE5,spl_1J6EQFMYF1S00KDE,Alt Carbon removes carbon dioxide from the atmosphere by accelerating earth’s natural carbon dioxide regulating mechanism - weathering.,"Alt Carbon is a deeptech science and data company, building agri-infrastructure for Planetary Intelligence. They aim to make South Asia a hub for Carbon Dioxide Removal (CDR) through technology pathways like Enhanced Rock Weathering. They work with farmers and scientists in the Global South, to turn underutilized land into carbon sinks and aim to unite climate action with cultural and ecological restoration — by reviving degraded soils, restoring livelihoods, and rebuilding ecosystems. Alt Carbon are rooted in science, powered by community, and driven by the belief that revivals require ambitious people and audacious bets.",org_1J6EQBDPF1S0S9P4,Alt Carbon,alt-carbon.com,,2710.062,2710062,55.308,55308,2765.37,2765370,,,,, +iss_1KNWQGW3W1S00T4H,2026-04-10T22:17:09.640909Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,4923.623,4923623,100.777,100777,5024.4,5024400,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1KN4715T51S0BCKZ,2026-04-01T09:47:11.635914Z,prj_1JZ0ZD3JN1S0SHW9,spl_1JWY4JWJK1S05RE6,Mombak removes carbon at scale in Brazil across two complementary pathways: reforesting the Amazon and spreading finely ground rock on agricultural soils.,"Mombak is a multi-pathway carbon removal company operating large-scale Reforestation and Enhanced Rock Weathering (ERW) projects in Brazil. Our reforestation program transforms degraded pasturelands into biodiverse carbon sinks through native species planting and assisted natural regeneration. We actively neutralize leakage from our project areas and guarantee 100-year durability through continuous satellite monitoring of our forests. Our ERW projects spread finely ground rock on agricultural soils, where it captures atmospheric CO₂ as stable bicarbonates stored in the ocean on geological timescales — while improving soil health and crop yields for farmers. Across both pathways, we apply rigorous MRV protocols to deliver transparent, science-based carbon removal at scale.",org_1JWY4JWJK1S0ASV7,Mombak,mombak.com,,46.001,46001,0.939,939,46.94,46940,,,,, +iss_1KN0CFPA31S06M3M,2026-03-30T22:05:32.409339Z,prj_1H502CZZH1S0VMYW,spl_1H4RJ0NBR1S0JKNR,"Planetary Technologies add alkaline compounds to seawater to enhance the natural ability of seawater to absorb atmospheric carbon dioxide, storing the carbon in dissolved carbon-containing ions in the oceans.",Planetary removes carbon by adding finely ground alkaline feedstock to industrial outfalls that discharge into the ocean. This reduces ocean acidity and allows the ocean to naturally absorb more CO₂ from the atmosphere through air-sea gas exchange.,org_1H4RJ0NBR1S0YYT3,Planetary,planetarytech.com,,1499.721,1499721,30.609,30609,1530.33,1530330,CAN,Canada,44.666,-63.5676, +iss_1KN07ZZD51S0JMQ5,2026-03-30T20:47:03.143292Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,1352.328,1352328,101.802,101802,1454.13,1454130,,,,, +iss_1KM6AXSV81S0EY1W,2026-03-20T19:18:02.454490Z,prj_1JXCRW5ST1S0EEKH,spl_1JWTY1R161S033FC,"Pacific Biochar modifies biomass power plants for biochar production, thus leveraging existing infrastructure, trained staff, and hard earned utility and procurement contracts.","Pacific Biochar is a pioneering company leading the charge in durable carbon removal through our innovative biochar production model. Committed to mitigating climate change while leaving a legacy of fertile soil, Pacific Biochar specializes in the production and distribution of high-quality biochar products designed to sequester carbon while enhancing agricultural and industrial productivity. Our unique model utilizes existing biomass power plant infrastructure to produce biochar, enabling rapid scaling potential with low capital investments. The partnerships we make with these bioenergy facilities result in cascading community benefits including wildfire risk reduction, rural job growth, and improved food security.",org_1JWTXAK4S1S0XWSY,Pacific Biochar,pacificbiochar.com,,508.865,508865,10.385,10385,519.25,519250,,,,, +iss_1KM6AXSV81S0CNQK,2026-03-20T19:18:02.405810Z,prj_1JXCRW5ST1S0EEKH,spl_1JWTY1R161S033FC,"Pacific Biochar modifies biomass power plants for biochar production, thus leveraging existing infrastructure, trained staff, and hard earned utility and procurement contracts.","Pacific Biochar is a pioneering company leading the charge in durable carbon removal through our innovative biochar production model. Committed to mitigating climate change while leaving a legacy of fertile soil, Pacific Biochar specializes in the production and distribution of high-quality biochar products designed to sequester carbon while enhancing agricultural and industrial productivity. Our unique model utilizes existing biomass power plant infrastructure to produce biochar, enabling rapid scaling potential with low capital investments. The partnerships we make with these bioenergy facilities result in cascading community benefits including wildfire risk reduction, rural job growth, and improved food security.",org_1JWTXAK4S1S0XWSY,Pacific Biochar,pacificbiochar.com,,787.762,787762,16.078,16078,803.84,803840,,,,, +iss_1KM67E92D1S0Q41Q,2026-03-20T18:17:07.999701Z,prj_1JQEQKCF91S06HAJ,spl_1JPQG0XPF1S01KTD,NULIFE GreenTech utilizes patented Hydrothermal Liquefaction (HTL) technology to convert waste biomass into bio-oil. The bio-oil is injected underground for durable storage.,"NULIFE GreenTech is a scalable, decentralized BiCRS solution that not only enables permanent carbon removal but also directly addresses real waste management challenges. By converting waste biomass—which would otherwise decompose and release emissions—into carbon-rich bio-oil, NULIFE provides a sustainable alternative to traditional disposal methods. NULIFE’s modular HTL technology is highly flexible, processing a variety of engineered slurries containing both wet and dry organic wastes. The resulting bio-oil is transported for geological sequestration, ensuring permanent carbon removal. Additionally, NULIFE generates valuable co-products, including CO₂ gas and biochar, which can be leveraged for further carbon dioxide removal or to offset fossil fuels. The effluent water from the process can be recycled into the HTL system or repurposed to support regional water supply, enhancing sustainability.",org_1JPQFP4VR1S0R1RT,NULIFE GreenTech,nulifegreentech.com,,266.421,266421,5.439,5439,271.86,271860,,,,, +iss_1KM0TFZQ51S02DX9,2026-03-18T15:54:40.332908Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,725.924,725924,38.216,38216,764.14,764140,USA,United States of America,37.77,-122.42, +iss_1KM0S5YS91S0W1DR,2026-03-18T15:31:43.563589Z,prj_1J7NQMR9V1S04P0D,spl_1HW7TJTRT1S0QM20,InPlanet enables farmers in the tropics to remove atmospheric CO₂ and move toward more sustainable agricultural practices.,"InPlanet works closely with farmers in the tropics to restore their soils and help them to transition to a low carbon, sustainable and nature-based agriculture. InPlanet do this through the deployment and scaling of Enhanced Weathering using locally sourced rocks that are optimal for CDR and regenerating nutrient-depleted soils.",org_1HF7TMNVX1S0768V,InPlanet,inplanet.earth,,150.812,150812,3.078,3078,153.89,153890,DEU,Germany,48.1351,11.582, +iss_1KKXY110X1S0E05V,2026-03-17T12:58:41.129412Z,prj_1K10D531D1S0DEV9,spl_1JWGBNCEC1S0PNGQ,"Terradot accelerates the natural process of rock weathering by spreading crushed silicate rock on farmland, permanently removing atmospheric CO₂ while enhancing soil health.","Terradot accelerates the natural process of rock weathering by applying finely ground silicate rock to tropical agricultural soils. Once applied, the rock dissolves in the presence of moisture and acidity, releasing base cations like calcium and magnesium that react with carbon dioxide in the soil to form bicarbonate, a stable form of carbon that is then safely transported through water systems to the ocean. This process ultimately shifts atmospheric CO₂ into the ocean’s long-term carbon cycle, where it remains sequestered for hundreds of thousands of years.",org_1JWGBGQ291S0D3F4,Terradot,terradot.earth,,200.851,200851,4.099,4099,204.95,204950,,,,, +iss_1KJG1DTHG1S04JE2,2026-02-27T17:13:02.716628Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,1898.624,1898624,142.926,142926,2041.55,2041550,,,,, +iss_1KJG1DTHG1S02NKV,2026-02-27T17:13:02.344430Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,1748.606,1748606,131.634,131634,1880.24,1880240,,,,, +iss_1KJFW4WNE1S0D5GA,2026-02-27T15:40:46.883028Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,4377.238,4377238,89.602,89602,4466.84,4466840,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1KJ7FP3781S0VNRF,2026-02-24T09:29:03.523751Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,41.296,41296,2.174,2174,43.47,43470,USA,United States of America,37.77,-122.42, +iss_1KGFFSJQR1S0R673,2026-02-02T15:33:29.532049Z,prj_1JN6XNWDQ1S0BSN7,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,46.768,46768,0.962,962,47.73,47730,USA,United States of America,37.77,-122.42, +iss_1KG9R13DC1S0BRJW,2026-01-31T10:02:00.619103Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1346.769,1346769,27.551,27551,1374.32,1374320,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1KG9R13DC1S09XQ5,2026-01-31T10:01:58.088473Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1894.171,1894171,38.749,38749,1932.92,1932920,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1KG7NZ1XM1S0ND49,2026-01-30T14:47:24.893848Z,prj_1JXCRW5ST1S0EEKH,spl_1JWTY1R161S033FC,"Pacific Biochar modifies biomass power plants for biochar production, thus leveraging existing infrastructure, trained staff, and hard earned utility and procurement contracts.","Pacific Biochar is a pioneering company leading the charge in durable carbon removal through our innovative biochar production model. Committed to mitigating climate change while leaving a legacy of fertile soil, Pacific Biochar specializes in the production and distribution of high-quality biochar products designed to sequester carbon while enhancing agricultural and industrial productivity. Our unique model utilizes existing biomass power plant infrastructure to produce biochar, enabling rapid scaling potential with low capital investments. The partnerships we make with these bioenergy facilities result in cascading community benefits including wildfire risk reduction, rural job growth, and improved food security.",org_1JWTXAK4S1S0XWSY,Pacific Biochar,pacificbiochar.com,,548.065,548065,11.185,11185,559.25,559250,,,,, +iss_1KG7926ZX1S0CXJW,2026-01-30T11:01:56.909074Z,prj_1K3VWSDS61S0QKV7,spl_1K3PCHYCA1S0VE66,"Equilibrium converts biomass to biochar, enabling rural livelihoods, regenerating degraded lands and enriching soil organic carbon in the region.","Equilibrium's BiCRS project converts invasive woody biomass, into durable biochar for long-term carbon sequestration. Using advanced pyrolysis technology, the project addresses critical environmental challenges, including land degradation and biodiversity loss. By diverting biomass from combustion and decay into a stable carbon form, the initiative delivers measurable climate benefits, enhances soil health, and supports sustainable rural livelihoods in one of India’s most water-stressed regions.",org_1K39J37JF1S0ADWM,Equilibrium,equilibriumearth.com,,1.44,1440,0.03,30,1.47,1470,,,,, +iss_1KFDZWJ6Z1S0RDYW,2026-01-20T15:20:33.803684Z,prj_1K39D0N8S1S0TMKX,spl_1JFW0WS9H1S0GKKN,"CarbonRun is the first in the world to use a safe, proven river restoration approach to decrease river acidity in a way that also naturally delivers carbon to the ocean, preventing it from returning to the atmosphere. Rivers as a force for change.","Through river alkalinity enhancement (RAE), site-specific amounts of safe alkalinity material is added to rivers where it dissolves rapidly, converting the CO2 in the rivers into stable, beneficial bicarbonate as well as minerals like calcium and magnesium. Our process absorbs CO₂ from both the soil and atmosphere and re-establishes key ecological building blocks. The rivers naturally transport the bicarbonate to the ocean, and the permanence of the CDR is currently estimated to be in the 10,000s of years. The drawdown of carbon can be directly measured in the river in real time.",org_1JCZX8EZR1S0B49J,CarbonRun,carbonrun.io,,75.156,75156,1.534,1534,76.69,76690,,,,, +iss_1KDNK479M1S0F973,2025-12-29T17:40:05.067920Z,prj_1JQEQKCF91S06HAJ,spl_1JPQG0XPF1S01KTD,NULIFE GreenTech utilizes patented Hydrothermal Liquefaction (HTL) technology to convert waste biomass into bio-oil. The bio-oil is injected underground for durable storage.,"NULIFE GreenTech is a scalable, decentralized BiCRS solution that not only enables permanent carbon removal but also directly addresses real waste management challenges. By converting waste biomass—which would otherwise decompose and release emissions—into carbon-rich bio-oil, NULIFE provides a sustainable alternative to traditional disposal methods. NULIFE’s modular HTL technology is highly flexible, processing a variety of engineered slurries containing both wet and dry organic wastes. The resulting bio-oil is transported for geological sequestration, ensuring permanent carbon removal. Additionally, NULIFE generates valuable co-products, including CO₂ gas and biochar, which can be leveraged for further carbon dioxide removal or to offset fossil fuels. The effluent water from the process can be recycled into the HTL system or repurposed to support regional water supply, enhancing sustainability.",org_1JPQFP4VR1S0R1RT,NULIFE GreenTech,nulifegreentech.com,,57.369,57369,1.171,1171,58.54,58540,,,,, +iss_1KD3NZKND1S0FH9R,2025-12-22T18:43:39.871165Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,2141.545,2141545,161.215,161215,2302.76,2302760,,,,, +iss_1KCW90YXR1S0FKX2,2025-12-19T21:42:32.684328Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,4443.447,4443447,90.923,90923,4534.37,4534370,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1KCW1PEJB1S01796,2025-12-19T19:34:27.213385Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,2125.27,2125270,160.0,160000,2285.27,2285270,,,,, +iss_1KCSQVZYR1S0114X,2025-12-18T22:04:14.204251Z,prj_1K3S0527T1S0KYXT,spl_1JFA2B4TV1S0B6R3,"CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems.","CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems. Onsite, the feedstock is transferred into CREW’s dosing systems, and is dosed into the wastewater treatment reactors as a slurry. CREW’s system controls the rate of dosing to optimize process benefits and CDR.",org_1JC30RXHE1S0VQHE,CREW Carbon,crewcarbon.com,,48.539,48539,0.991,991,49.53,49530,,,,, +iss_1KCSQS1RJ1S0DX1Q,2025-12-18T22:02:37.775029Z,prj_1JFA3YY9P1S0YVKR,spl_1JFA2B4TV1S0B6R3,"CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems.","CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems. Onsite, the feedstock is transferred into CREW’s dosing systems, and is dosed into the wastewater treatment reactors as a slurry. CREW’s system controls the rate of dosing to optimize process benefits and CDR.",org_1JC30RXHE1S0VQHE,CREW Carbon,crewcarbon.com,,365.067,365067,7.453,7453,372.52,372520,,,,, +iss_1KCK6GD6F1S0F3QG,2025-12-16T09:05:22.152056Z,prj_1JXCRW5ST1S0EEKH,spl_1JWTY1R161S033FC,"Pacific Biochar modifies biomass power plants for biochar production, thus leveraging existing infrastructure, trained staff, and hard earned utility and procurement contracts.","Pacific Biochar is a pioneering company leading the charge in durable carbon removal through our innovative biochar production model. Committed to mitigating climate change while leaving a legacy of fertile soil, Pacific Biochar specializes in the production and distribution of high-quality biochar products designed to sequester carbon while enhancing agricultural and industrial productivity. Our unique model utilizes existing biomass power plant infrastructure to produce biochar, enabling rapid scaling potential with low capital investments. The partnerships we make with these bioenergy facilities result in cascading community benefits including wildfire risk reduction, rural job growth, and improved food security.",org_1JWTXAK4S1S0XWSY,Pacific Biochar,pacificbiochar.com,,1241.807,1241807,25.343,25343,1267.15,1267150,,,,, +iss_1KCK6FN6W1S0M54H,2025-12-16T09:04:57.609102Z,prj_1JXCRW5ST1S0EEKH,spl_1JWTY1R161S033FC,"Pacific Biochar modifies biomass power plants for biochar production, thus leveraging existing infrastructure, trained staff, and hard earned utility and procurement contracts.","Pacific Biochar is a pioneering company leading the charge in durable carbon removal through our innovative biochar production model. Committed to mitigating climate change while leaving a legacy of fertile soil, Pacific Biochar specializes in the production and distribution of high-quality biochar products designed to sequester carbon while enhancing agricultural and industrial productivity. Our unique model utilizes existing biomass power plant infrastructure to produce biochar, enabling rapid scaling potential with low capital investments. The partnerships we make with these bioenergy facilities result in cascading community benefits including wildfire risk reduction, rural job growth, and improved food security.",org_1JWTXAK4S1S0XWSY,Pacific Biochar,pacificbiochar.com,,1739.656,1739656,35.504,35504,1775.16,1775160,,,,, +iss_1KC9P98E11S07KVZ,2025-12-12T16:28:40.812068Z,prj_1H502CZZH1S0VMYW,spl_1H4RJ0NBR1S0JKNR,"Planetary Technologies add alkaline compounds to seawater to enhance the natural ability of seawater to absorb atmospheric carbon dioxide, storing the carbon in dissolved carbon-containing ions in the oceans.",Planetary removes carbon by adding finely ground alkaline feedstock to industrial outfalls that discharge into the ocean. This reduces ocean acidity and allows the ocean to naturally absorb more CO₂ from the atmosphere through air-sea gas exchange.,org_1H4RJ0NBR1S0YYT3,Planetary,planetarytech.com,,1477.82,1477820,30.16,30160,1507.98,1507980,CAN,Canada,44.666,-63.5676, +iss_1KBQW1E271S01GM9,2025-12-05T18:22:56.099876Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,431.971,431971,22.739,22739,454.71,454710,USA,United States of America,37.77,-122.42, +iss_1KB5R8GYP1S08TEH,2025-11-28T17:30:34.430833Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,3245.756,3245756,66.424,66424,3312.18,3312180,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1KB0D6QDW1S08XRC,2025-11-26T15:41:08.960024Z,prj_1JQEQKCF91S06HAJ,spl_1JPQG0XPF1S01KTD,NULIFE GreenTech utilizes patented Hydrothermal Liquefaction (HTL) technology to convert waste biomass into bio-oil. The bio-oil is injected underground for durable storage.,"NULIFE GreenTech is a scalable, decentralized BiCRS solution that not only enables permanent carbon removal but also directly addresses real waste management challenges. By converting waste biomass—which would otherwise decompose and release emissions—into carbon-rich bio-oil, NULIFE provides a sustainable alternative to traditional disposal methods. NULIFE’s modular HTL technology is highly flexible, processing a variety of engineered slurries containing both wet and dry organic wastes. The resulting bio-oil is transported for geological sequestration, ensuring permanent carbon removal. Additionally, NULIFE generates valuable co-products, including CO₂ gas and biochar, which can be leveraged for further carbon dioxide removal or to offset fossil fuels. The effluent water from the process can be recycled into the HTL system or repurposed to support regional water supply, enhancing sustainability.",org_1JPQFP4VR1S0R1RT,NULIFE GreenTech,nulifegreentech.com,,235.385,235385,4.805,4805,240.19,240190,,,,, +iss_1KA1F2XVP1S01R4X,2025-11-14T15:17:34.223182Z,prj_1JYCV03BW1S0RTE5,spl_1J6EQFMYF1S00KDE,Alt Carbon removes carbon dioxide from the atmosphere by accelerating earth’s natural carbon dioxide regulating mechanism - weathering.,"Alt Carbon is a deeptech science and data company, building agri-infrastructure for Planetary Intelligence. They aim to make South Asia a hub for Carbon Dioxide Removal (CDR) through technology pathways like Enhanced Rock Weathering. They work with farmers and scientists in the Global South, to turn underutilized land into carbon sinks and aim to unite climate action with cultural and ecological restoration — by reviving degraded soils, restoring livelihoods, and rebuilding ecosystems. Alt Carbon are rooted in science, powered by community, and driven by the belief that revivals require ambitious people and audacious bets.",org_1J6EQBDPF1S0S9P4,Alt Carbon,alt-carbon.com,,216.923,216923,4.427,4427,221.35,221350,,,,, +iss_1K987GRBH1S0KT4M,2025-11-04T20:04:17.939626Z,prj_1JQ775W7D1S0WYSA,spl_1HW7TJTRT1S0QM20,InPlanet enables farmers in the tropics to remove atmospheric CO₂ and move toward more sustainable agricultural practices.,"InPlanet works closely with farmers in the tropics to restore their soils and help them to transition to a low carbon, sustainable and nature-based agriculture. InPlanet do this through the deployment and scaling of Enhanced Weathering using locally sourced rocks that are optimal for CDR and regenerating nutrient-depleted soils.",org_1HF7TMNVX1S0768V,InPlanet,inplanet.earth,,313.57,313570,6.4,6400,319.97,319970,DEU,Germany,48.1351,11.582, +iss_1K932NYSS1S017PY,2025-11-02T20:03:33.350164Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,277.256,277256,14.594,14594,291.85,291850,USA,United States of America,37.77,-122.42, +iss_1K8TJJ9KE1S0KZ7A,2025-10-30T12:48:00.773788Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,3507.551,3507551,71.829,71829,3579.38,3579380,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1K754YW881S01WS5,2025-10-09T18:50:28.014913Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,158.076,158076,8.324,8324,166.4,166400,USA,United States of America,37.77,-122.42, +iss_1K6GGJDWT1S06FK3,2025-10-01T18:29:19.938262Z,prj_1H502CZZH1S0VMYW,spl_1H4RJ0NBR1S0JKNR,"Planetary Technologies add alkaline compounds to seawater to enhance the natural ability of seawater to absorb atmospheric carbon dioxide, storing the carbon in dissolved carbon-containing ions in the oceans.",Planetary removes carbon by adding finely ground alkaline feedstock to industrial outfalls that discharge into the ocean. This reduces ocean acidity and allows the ocean to naturally absorb more CO₂ from the atmosphere through air-sea gas exchange.,org_1H4RJ0NBR1S0YYT3,Planetary,planetarytech.com,,1165.857,1165857,23.793,23793,1189.65,1189650,CAN,Canada,44.666,-63.5676, +iss_1K6FYR68X1S0ZR6K,2025-10-01T13:17:54.390866Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,2367.825,2367825,178.265,178265,2546.09,2546090,,,,, +iss_1K6DWCG2Y1S0581E,2025-09-30T17:58:05.178300Z,prj_1JQEQKCF91S06HAJ,spl_1JPQG0XPF1S01KTD,NULIFE GreenTech utilizes patented Hydrothermal Liquefaction (HTL) technology to convert waste biomass into bio-oil. The bio-oil is injected underground for durable storage.,"NULIFE GreenTech is a scalable, decentralized BiCRS solution that not only enables permanent carbon removal but also directly addresses real waste management challenges. By converting waste biomass—which would otherwise decompose and release emissions—into carbon-rich bio-oil, NULIFE provides a sustainable alternative to traditional disposal methods. NULIFE’s modular HTL technology is highly flexible, processing a variety of engineered slurries containing both wet and dry organic wastes. The resulting bio-oil is transported for geological sequestration, ensuring permanent carbon removal. Additionally, NULIFE generates valuable co-products, including CO₂ gas and biochar, which can be leveraged for further carbon dioxide removal or to offset fossil fuels. The effluent water from the process can be recycled into the HTL system or repurposed to support regional water supply, enhancing sustainability.",org_1JPQFP4VR1S0R1RT,NULIFE GreenTech,nulifegreentech.com,,54.586,54586,1.114,1114,55.7,55700,,,,, +iss_1K6DS8NSB1S0CE2P,2025-09-30T17:03:34.329130Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,2867.54,2867540,58.79,58790,2926.33,2926330,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1K5XPYRDZ1S01XR9,2025-09-24T11:15:21.237412Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,128.62,128620,6.77,6770,135.39,135390,USA,United States of America,37.77,-122.42, +iss_1K4B0H3VF1S00JXE,2025-09-04T18:41:23.862394Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,544.823,544823,11.127,11127,555.95,555950,USA,United States of America,37.77,-122.42, +iss_1K3YDJ1BB1S0REHD,2025-08-30T21:18:58.000656Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,2730.419,2730419,55.911,55911,2786.33,2786330,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1K1V25P691S0BEJ0,2025-08-04T17:30:52.018476Z,prj_1JN6XNWDQ1S0BSN7,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,3.449,3449,0.071,71,3.52,3520,USA,United States of America,37.77,-122.42, +iss_1K1GRMN4Y1S0VQWK,2025-07-31T17:31:52.530716Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1322.54,1322540,27.1,27100,1349.64,1349640,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JZB25YAD1S000SZ,2025-07-04T15:51:45.810293Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,994.271,994271,20.299,20299,1014.57,1014570,USA,United States of America,37.77,-122.42, +iss_1JZ2M1G2B1S083RJ,2025-07-01T09:10:44.664605Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,694.773,694773,14.267,14267,709.04,709040,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JYSFMMG51S0RWTN,2025-06-27T20:00:38.988972Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,1737.349,1737349,130.801,130801,1868.15,1868150,,,,, +iss_1JXW6N77B1S05B02,2025-06-16T11:05:42.455463Z,prj_1H502CZZH1S0VMYW,spl_1H4RJ0NBR1S0JKNR,"Planetary Technologies add alkaline compounds to seawater to enhance the natural ability of seawater to absorb atmospheric carbon dioxide, storing the carbon in dissolved carbon-containing ions in the oceans.",Planetary removes carbon by adding finely ground alkaline feedstock to industrial outfalls that discharge into the ocean. This reduces ocean acidity and allows the ocean to naturally absorb more CO₂ from the atmosphere through air-sea gas exchange.,org_1H4RJ0NBR1S0YYT3,Planetary,planetarytech.com,,613.127,613127,12.513,12513,625.64,625640,CAN,Canada,44.666,-63.5676, +iss_1JX27HZND1S098R4,2025-06-06T09:01:09.808788Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,982.882,982882,20.068,20068,1002.95,1002950,USA,United States of America,37.77,-122.42, +iss_1JWH785KR1S0MRMS,2025-05-30T18:28:42.912887Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1130.224,1130224,23.246,23246,1153.47,1153470,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JTJESX391S0MQ2N,2025-05-06T09:28:34.988967Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1829.141,1829141,37.509,37509,1866.65,1866650,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JT406N8E1S0AA5N,2025-04-30T18:44:02.051068Z,prj_1JFA3YY9P1S0YVKR,spl_1JFA2B4TV1S0B6R3,"CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems.","CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems. Onsite, the feedstock is transferred into CREW’s dosing systems, and is dosed into the wastewater treatment reactors as a slurry. CREW’s system controls the rate of dosing to optimize process benefits and CDR.",org_1JC30RXHE1S0VQHE,CREW Carbon,crewcarbon.com,,19.717,19717,0.403,403,20.12,20120,,,,, +iss_1JT406N8E1S081VC,2025-04-30T18:44:01.983969Z,prj_1JFA3YY9P1S0YVKR,spl_1JFA2B4TV1S0B6R3,"CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems.","CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems. Onsite, the feedstock is transferred into CREW’s dosing systems, and is dosed into the wastewater treatment reactors as a slurry. CREW’s system controls the rate of dosing to optimize process benefits and CDR.",org_1JC30RXHE1S0VQHE,CREW Carbon,crewcarbon.com,,82.593,82593,1.687,1687,84.28,84280,,,,, +iss_1JS1XMG2X1S0E4M2,2025-04-17T13:04:59.271664Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,92.099,92099,1.881,1881,93.98,93980,USA,United States of America,37.77,-122.42, +iss_1JS1XMG2X1S0A4QZ,2025-04-17T13:04:59.065098Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,488.702,488702,9.978,9978,498.68,498680,USA,United States of America,37.77,-122.42, +iss_1JQRYV5H31S0V3C9,2025-04-01T15:17:14.590003Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1238.04,1238040,25.35,25350,1263.39,1263390,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JNF2SAPF1S0PW1Q,2025-03-03T22:42:20.891568Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,489.082,489082,36.828,36828,525.91,525910,,,,, +iss_1JNF2SAPF1S01V4A,2025-03-03T22:42:20.535071Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,699.322,699322,52.658,52658,751.98,751980,,,,, +iss_1JN615GRZ1S0D2D2,2025-02-28T10:20:52.955863Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,942.12,942120,19.3,19300,961.42,961420,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JMJX2HK81S0K6A9,2025-02-21T00:03:46.981115Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,241.792,241792,4.938,4938,246.73,246730,USA,United States of America,37.77,-122.42, +iss_1JJWBA5841S0M3HJ,2025-01-30T19:34:23.331149Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,190.635,190635,3.905,3905,194.54,194540,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JJWBA5841S0Y137,2025-01-30T19:34:22.789378Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,183.755,183755,3.765,3765,187.52,187520,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JG6F6CG01S0P4SX,2024-12-28T11:07:32.571157Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,841.038,841038,17.222,17222,858.26,858260,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JG4EHW071S0QCJG,2024-12-27T16:17:51.219920Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,802.084,802084,60.406,60406,862.49,862490,,,,, +iss_1JFTA2YD11S0V766,2024-12-23T17:47:23.581333Z,prj_1J7NQMR9V1S04P0D,spl_1HW7TJTRT1S0QM20,InPlanet enables farmers in the tropics to remove atmospheric CO₂ and move toward more sustainable agricultural practices.,"InPlanet works closely with farmers in the tropics to restore their soils and help them to transition to a low carbon, sustainable and nature-based agriculture. InPlanet do this through the deployment and scaling of Enhanced Weathering using locally sourced rocks that are optimal for CDR and regenerating nutrient-depleted soils.",org_1HF7TMNVX1S0768V,InPlanet,inplanet.earth,,230.819,230819,4.711,4711,235.53,235530,DEU,Germany,48.1351,11.582, +iss_1JF7EGFQ11S0J9VK,2024-12-16T09:59:07.339807Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1391.681,1391681,28.489,28489,1420.17,1420170,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JE49SVT51S01417,2024-12-02T18:23:26.635980Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,2204.31,2204310,45.13,45130,2249.44,2249440,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1JC4048KE1S0XZVQ,2024-11-07T19:02:57.950078Z,prj_1J4P33N6W1S0RKE2,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,80.832,80832,6.098,6098,86.93,86930,,,,, +iss_1JBA48V531S0RBBJ,2024-10-28T17:55:07.102793Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1169.97,1169970,23.95,23950,1193.92,1193920,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1J9C0ZMP91S03J83,2024-10-04T15:04:45.120445Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,835.158,835158,17.102,17102,852.26,852260,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1J6FR4ZJ61S02VQQ,2024-08-29T19:00:15.164252Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,1216.062,1216062,24.898,24898,1240.96,1240960,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1J5QB89FD1S0CJGB,2024-08-20T07:33:05.733829Z,prj_1HZSSWBQM1S08H83,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,105.065,105065,2.145,2145,107.21,107210,USA,United States of America,37.77,-122.42, +iss_1J531RY9W1S01G3V,2024-08-12T10:22:37.008556Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,826.626,826626,16.924,16924,843.55,843550,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1J2KTSN221S0E2M2,2024-07-12T16:00:40.126048Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,670.584,670584,13.726,13726,684.31,684310,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HV486YMS1S01YX0,2024-04-10T14:57:30.614326Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,330.132,330132,6.758,6758,336.89,336890,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HV486YMS1S0T042,2024-04-10T14:57:23.714951Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,721.314,721314,14.766,14766,736.08,736080,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0JY8D,2023-12-23T10:40:36.523391Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.703,5703,0.117,117,5.82,5820,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0QZNE,2023-12-23T10:40:36.434893Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.752,5752,0.118,118,5.87,5870,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0X12F,2023-12-23T10:40:36.352833Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.831,5831,0.119,119,5.95,5950,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S022FG,2023-12-23T10:40:36.270508Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.722,6722,0.138,138,6.86,6860,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S073WH,2023-12-23T10:40:36.185481Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.967,6967,0.143,143,7.11,7110,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0C59J,2023-12-23T10:40:36.103153Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.448,5448,0.112,112,5.56,5560,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0H6PK,2023-12-23T10:40:36.014978Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,7.271,7271,0.149,149,7.42,7420,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0P83M,2023-12-23T10:40:35.939832Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.929,5929,0.121,121,6.05,6050,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0V9GN,2023-12-23T10:40:35.842376Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,7.291,7291,0.149,149,7.44,7440,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S00AXP,2023-12-23T10:40:35.759210Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.526,6526,0.134,134,6.66,6660,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S05CAQ,2023-12-23T10:40:35.654363Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.036,6036,0.124,124,6.16,6160,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0ADQR,2023-12-23T10:40:35.570943Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.468,6468,0.132,132,6.6,6600,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0FF4S,2023-12-23T10:40:35.488697Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.909,5909,0.121,121,6.03,6030,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0MGHT,2023-12-23T10:40:35.415083Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,4.449,4449,0.091,91,4.54,4540,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0SHYV,2023-12-23T10:40:35.339861Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.242,6242,0.128,128,6.37,6370,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0YKBW,2023-12-23T10:40:35.263443Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.095,6095,0.125,125,6.22,6220,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S03MRX,2023-12-23T10:40:35.175247Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,8.457,8457,0.173,173,8.63,8630,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S08P5Y,2023-12-23T10:40:35.094017Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.213,6213,0.127,127,6.34,6340,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0DQJZ,2023-12-23T10:40:35.015076Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.242,6242,0.128,128,6.37,6370,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0JS00,2023-12-23T10:40:34.934915Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,5.243,5243,0.107,107,5.35,5350,USA,United States of America,29.728229835733384,-95.56960726715872, +iss_1HJB45W9G1S0QTD1,2023-12-23T10:40:34.850996Z,prj_1HHYZFVGW1S044ZY,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,6.174,6174,0.126,126,6.3,6300,USA,United States of America,29.728229835733384,-95.56960726715872, diff --git a/tests/data/isometric/projects.csv b/tests/data/isometric/projects.csv new file mode 100644 index 0000000..5220c38 --- /dev/null +++ b/tests/data/isometric/projects.csv @@ -0,0 +1,57 @@ +id,name,status,short_code,url,process_key,pathway,protocol_slug,country_code,validator_name,current_verifier_name,crediting_period_start,crediting_period_end,supplier.id,supplier.short_description,supplier.long_description,supplier.organisation.id,supplier.organisation.name,supplier.organisation.domain,supplier.location,issued_credits_total.credits,issued_credits_total.credit_kgs,retired_credits_total.credits,retired_credits_total.credit_kgs,issued_buffer_pool_credits_total.credits,issued_buffer_pool_credits_total.credit_kgs,retired_buffer_pool_credits_total.credits,retired_buffer_pool_credits_total.credit_kgs,location.country_code,location.country_name,location.latitude,location.longitude,location.description,location,supplier.location.country_code,supplier.location.country_name,supplier.location.latitude,supplier.location.longitude,supplier.location.description +prj_1K3VWSDS61S0QKV7,A Biochar Project at Satyapura,validated,TS26,https://to.isometric.com/prj_1K3VWSDS61S0QKV7,biochar-process,biomass_carbon_removal_and_storage,biochar,IND,Enviance,Enviance,2025-11-27,2030-11-26,spl_1K3PCHYCA1S0VE66,"Equilibrium converts biomass to biochar, enabling rural livelihoods, regenerating degraded lands and enriching soil organic carbon in the region.","Equilibrium's BiCRS project converts invasive woody biomass, into durable biochar for long-term carbon sequestration. Using advanced pyrolysis technology, the project addresses critical environmental challenges, including land degradation and biodiversity loss. By diverting biomass from combustion and decay into a stable carbon form, the initiative delivers measurable climate benefits, enhances soil health, and supports sustainable rural livelihoods in one of India’s most water-stressed regions.",org_1K39J37JF1S0ADWM,Equilibrium,equilibriumearth.com,,1.47,1470,0.0,0,0.03,30,0.0,0,IND,India,27.0238,74.2179,"Rajasthan, India",,,,,, +prj_1KC8T0EGS1S0H36R,"“Agneerath” - Smallholder Biochar: Restoring Soil, Climate, and Community",under_validation,Y76J,https://to.isometric.com/prj_1KC8T0EGS1S0H36R,biochar-process,biomass_carbon_removal_and_storage,biochar,IND,,Carbon Check,2026-01-01,2031-01-01,spl_1JW84N7721S0PCYD,Earthrevive is a CDR developer working with farmers across engineered removal pathways.,Earthrevive is a CDR developer working with farmers across engineered removal pathways.,org_1JW84N7721S0VEBE,Earthrevive Technologies Pvt. Ltd.,earthrevive.earth,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,19.7515,75.7139,Maharashtra,,,,,, +prj_1JTZ7NRK81S0GA0S,B10 - Brondal #1,under_validation,8WQK,https://to.isometric.com/prj_1JTZ7NRK81S0GA0S,biochar-process,biomass_carbon_removal_and_storage,biochar,ZAF,,Carbon Check,,,spl_1JT309WR61S0FTZR,B10 takes sawmill waste and turns it into high quality biochar for durable storage.,"B10 is a BiCRS company making use of sawmil waste that would otherwise be burned on the pile or left to decompose and Turing this waste into high quality biochar for long term storage. The final biochar is used in a variety of applications like agriculture, anaerobic digesters, mine reclamation where it's ultimately ending up in soil. ",org_1JRJQY5701S05G7J,B10,b10-char.com,,0.0,0,0.0,0,0.0,0,0.0,0,ZAF,South Africa,-30.5595,22.9375,South Africa,,,,,, +prj_1K4PWG5T01S0PWMF,Bharat Biochar Initiative,under_validation,3TBA,https://to.isometric.com/prj_1K4PWG5T01S0PWMF,biochar-process,biomass_carbon_removal_and_storage,biochar,IND,,,2026-01-01,2030-12-31,spl_1JZAYNANJ1S00HJE,Bharat Biochar Initiative utilizes naturally fallen pine needles to produce biochar using continuous reactor technology.,"The Bharat Biochar Initiative is a BiCRS (Biochar Carbon Removal & Sequestration) solution. It takes naturally fallen pine needles from Uttarakhand, which would have otherwise contributed to forest fires, and repurposes them to create biochar. This process uses a continuous reactor technology to produce a carbon-rich substance for agricultural and environmental use. + +By doing so, the project mitigates wildfire risks, promotes carbon sequestration, and generates rural livelihoods.",org_1JZAY6Y1V1S05JZF,FusionPact,foresttwin.com,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,30.0668,79.0193,"Uttarakhand, India",,,,,, +prj_1KESD32TS1S0ZHGV,Burney Forest Power v1.2,under_validation,3YMF,https://to.isometric.com/prj_1KESD32TS1S0ZHGV,biochar-process,biomass_carbon_removal_and_storage,biochar,USA,,350Solutions,2023-07-01,2028-07-01,spl_1K39AA58W1S0Q5G9,"Biochar Solutions uses non merchantable woody biomass to produce biochar for remediation, agricultural, and industrial applications that qualify for carbon removal.","Biochar Solutions manufactures and sell biochar for remediation, agricultural, and industrial applications. Biomass is sourced through high hazard biomass reduction projects, wood recycling programs, and other non merchantable woody biomass residuals streams. Biochar Solutions is also creating biochar based products for a number of different applications and industries that allows its customers to integrate biochar into their existing programs or processes without changes to equipment or procedure.",org_1K36W9D5V1S0YBHF,Biochar Solutions,biocharsolutions.com,,0.0,0,0.0,0,0.0,0,0.0,0,,,,,,,,,,, +prj_1JRZWM3BP1S071QG,Burnsville,under_validation,9Y8H,https://to.isometric.com/prj_1JRZWM3BP1S071QG,biochar-burial-process,biomass_carbon_removal_and_storage,biochar,USA,,350Solutions,2026-01-15,2031-01-15,spl_1HW7V7QDK1S0163K,Carba converts biomass to a stable solid carbon through pyrolysis and buries it underground in anoxic chambers for durable storage.,"Carba takes sustainably sourced waste biomass and efficiently converts it to a solid carbon charcoal devoid of food value. The solid carbon is then buried underground in anoxic chambers to protect it from oxidative and light-mediated degradation pathways. The process mimics the formation and storage of similar carbon structures in coal 300 million years ago, which have remained stable around the world. ",org_1HGXFBDKK1S0ZNAM,Carba,carba.com,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,44.7677,-93.2777,"Burnsville, MN",,,,,, +prj_1JYENJXB71S0CR1B,Capital Link's Berthoud Facility,under_validation,WPVN,https://to.isometric.com/prj_1JYENJXB71S0CR1B,biochar-process,biomass_carbon_removal_and_storage,biochar,USA,,,2026-04-02,2026-04-03,spl_1JWDR6TPN1S0W2DT,CLG converts carbon-rich waste into high-grade biochar and carbon credits through industrial-scale pyrolysis.,"CLG runs an industrial-scale biochar facility, using low-oxygen vacuum pyrolysis to turn biomass and to durable carbon and verifiable carbon credits. CLG sources feedstock through public-private partnerships with government departments, reducing landfill use and wildfire risk. Syngas byproduct powers the facility, turning waste into power.",org_1JWDR1M5G1S0B6MX,Capital Link Green,capital.link,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,40.3083174,-105.0810924,"Berthoud, Colorado",,,,,, +prj_1JF8BBG921S010M4,Carboneers & Terrafront High Tech Biochar,under_validation,NYW2,https://to.isometric.com/prj_1JF8BBG921S010M4,biochar-process,biomass_carbon_removal_and_storage,biochar,IND,,Carbon Check,,,spl_1JEXX4F1D1S0TN3V,Carboneers TF develops biochar projects and models in remote areas in the Global South.,"Carboneers and Terrafront Ventures collaboratively develop biochar projects by processing agricultural residues into biochar and heat. In the project the biochar will be charged with both compost and manure, and given back for free to the same farmer. The aggregation of biomass and distribution of biochar is a 360 degree model. The project will be with rice, cotton and maize farmers in the regions of Odisha, Assam, Nagaland.",org_1JEXWN3PM1S0KBCH,Carboneers,Carboneers.earth,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,26.4512,92.1058,,,NLD,Netherlands,52.377956,4.89707,"Amsterdam, Netherlands" +prj_1K48633C61S0WY58,CarbonZero.eco - Williams,under_validation,Z9PR,https://to.isometric.com/prj_1K48633C61S0WY58,biochar-process,biomass_carbon_removal_and_storage,biochar,USA,,350Solutions,2026-07-01,2031-07-31,spl_1K473ARXN1S0D5MQ,CarbonZero.ECO partners with California farmers to convert orchard waste into durable carbon removal.,"CarbonZero.ECO operates Beston BST-50S pyrolysis systems that use a continuous rotary kiln design with an enclosed burn chamber. Biomass, such as almond shells, is heated in a low-oxygen environment, preventing combustion and converting the material into stable biochar. The process captures and reuses syngas for heat, improving efficiency and reducing emissions. This closed-loop system ensures consistent, high-quality biochar production while maximizing carbon retention and minimizing environmental impact.",org_1K4734APQ1S0J71R,CarbonZero,carbonzero.eco,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,39.1041,-122.2654,"Colusa County, CA",,,,,, +prj_1HZSSWBQM1S08H83,Charm Bio-oil Geologic Storage,validated,7BDE,https://to.isometric.com/prj_1HZSSWBQM1S08H83,bio-oil-process,biomass_carbon_removal_and_storage,bio-oil-geological-storage,USA,FuturePast,350Solutions,2024-03-01,2029-02-28,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,5376.03,5376030,3650.846,3650846,163.253,163253,0.0,0,USA,United States of America,30.916251,-92.297908,,,USA,United States of America,37.77,-122.42, +prj_1JN6XNWDQ1S0BSN7,Charm Range & Plains Biochar,validated,6TMZ,https://to.isometric.com/prj_1JN6XNWDQ1S0BSN7,biochar-process,biomass_carbon_removal_and_storage,biochar,USA,350Solutions,350Solutions,2024-03-01,2029-03-01,spl_1H31MW3T81S0R67B,"Charm Industrial converts agricultural and forestry biomass residues into bio-oil via fast pyrolysis, and then injects the bio-oil into EPA-permitted injection wells to achieve storage of carbon on geological timescales.","Charm Industrial converts biomass residues (for example, corn stover, forestry residues) into bio-oil by heating the biomass quickly to very high temperatures. Charm uses woody or cellulosic residues in their pyrolysis and ensures that any emissions associated with growth or harvesting of this biomass are accounted for. This means waste biomass that would have otherwise decomposed is a preferred feedstock. The resulting bio-oil is low in energy content, but high in carbon content, and can be injected underground into geological storage reservoirs such as depleted oil & gas reservoirs, saline aquifers and salt caverns regulated by the US EPA. It is a highly viscous liquid which is denser than the surrounding formation fluid, and so will sink in the reservoir and risk of buoyancy/upward migration is low. The bio-oil polymerizes (solidifies) on an expected timescale between 2–20 years, rendering it effectively immobile within the subsurface and therefore durable on geological timescales.",org_1H31MW3MD1S04HBP,Charm Industrial,charmindustrial.com,,51.25,51250,3.449,3449,1.033,1033,0.0,0,USA,United States of America,37.966,-97.941,,,USA,United States of America,37.77,-122.42, +prj_1K2YPGE781S0A3Q0,Cocoa Biochar Carboneers,under_validation,CPC1,https://to.isometric.com/prj_1K2YPGE781S0A3Q0,distributed-biochar-process,biomass_carbon_removal_and_storage,biochar,GHA,,Carbon Check,2025-11-01,2030-11-01,spl_1JEXX4F1D1S0TN3V,Carboneers TF develops biochar projects and models in remote areas in the Global South.,"Carboneers and Terrafront Ventures collaboratively develop biochar projects by processing agricultural residues into biochar and heat. In the project the biochar will be charged with both compost and manure, and given back for free to the same farmer. The aggregation of biomass and distribution of biochar is a 360 degree model. The project will be with rice, cotton and maize farmers in the regions of Odisha, Assam, Nagaland.",org_1JEXWN3PM1S0KBCH,Carboneers,Carboneers.earth,,0.0,0,0.0,0,0.0,0,0.0,0,GHA,Ghana,7.9465,-1.0232,Ghana,,NLD,Netherlands,52.377956,4.89707,"Amsterdam, Netherlands" +prj_1K051N4HQ1S02170,Corigin-1: BioChar Q3-25,under_validation,CH3M,https://to.isometric.com/prj_1K051N4HQ1S02170,biochar-process,biomass_carbon_removal_and_storage,biochar,USA,,350Solutions,2023-03-01,2030-07-01,spl_1JZ01TQT51S00PB6,Corigin operates a biorefinery that converts biomass into biochars for soil applications and bio-oils for underground injection from long term storage.,"Corigin is a carbon removal business that uses a proprietary biorefinery technology to continuous convert biomass wastes into biochars that increase soil fertility and bio-oils for permanent deep geologic storage. We've been operating a pilot plant in California's Central Valley for over 4-years. Key technology advantages are 80% product yield on biomass (1,000 KG converts into 830 Kg of product), continuous production, scalable to multiple tons/hour throughput, and feedstock agnostic - can process virtually any plant or manure-based waste.",org_1JZ01JGWZ1S0YE0X,Corigin,corigin.co,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,36.7783,-119.4179,California,,,,,, +prj_1JYCV03BW1S0RTE5,Darjeeling Revival: Alt x MOL,validated,E3D1,https://to.isometric.com/prj_1JYCV03BW1S0RTE5,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,IND,350Solutions,350Solutions,2024-10-01,2029-10-01,spl_1J6EQFMYF1S00KDE,Alt Carbon removes carbon dioxide from the atmosphere by accelerating earth’s natural carbon dioxide regulating mechanism - weathering.,"Alt Carbon is a deeptech science and data company, building agri-infrastructure for Planetary Intelligence. They aim to make South Asia a hub for Carbon Dioxide Removal (CDR) through technology pathways like Enhanced Rock Weathering. They work with farmers and scientists in the Global South, to turn underutilized land into carbon sinks and aim to unite climate action with cultural and ecological restoration — by reviving degraded soils, restoring livelihoods, and rebuilding ecosystems. Alt Carbon are rooted in science, powered by community, and driven by the belief that revivals require ambitious people and audacious bets.",org_1J6EQBDPF1S0S9P4,Alt Carbon,alt-carbon.com,,2986.72,2986720,0.0,0,59.735,59735,0.0,0,IND,India,20.5937,78.9629,"Terai region, India",,,,,, +prj_1JZJY8NY61S0RH07,Darjeeling Revival: Monsoon Harvest,validated,SD0E,https://to.isometric.com/prj_1JZJY8NY61S0RH07,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,IND,350Solutions,350Solutions,2024-10-01,2029-10-01,spl_1J6EQFMYF1S00KDE,Alt Carbon removes carbon dioxide from the atmosphere by accelerating earth’s natural carbon dioxide regulating mechanism - weathering.,"Alt Carbon is a deeptech science and data company, building agri-infrastructure for Planetary Intelligence. They aim to make South Asia a hub for Carbon Dioxide Removal (CDR) through technology pathways like Enhanced Rock Weathering. They work with farmers and scientists in the Global South, to turn underutilized land into carbon sinks and aim to unite climate action with cultural and ecological restoration — by reviving degraded soils, restoring livelihoods, and rebuilding ecosystems. Alt Carbon are rooted in science, powered by community, and driven by the belief that revivals require ambitious people and audacious bets.",org_1J6EQBDPF1S0S9P4,Alt Carbon,alt-carbon.com,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,20.5937,78.9629,"Terai region, India",,,,,, +prj_1JCZCRW2S1S06KN0,Darjeeling Revival Project,validation_unsuccessful,2A0D,https://to.isometric.com/prj_1JCZCRW2S1S06KN0,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,IND,Earthood,Earthood,,,spl_1J6EQFMYF1S00KDE,Alt Carbon removes carbon dioxide from the atmosphere by accelerating earth’s natural carbon dioxide regulating mechanism - weathering.,"Alt Carbon is a deeptech science and data company, building agri-infrastructure for Planetary Intelligence. They aim to make South Asia a hub for Carbon Dioxide Removal (CDR) through technology pathways like Enhanced Rock Weathering. They work with farmers and scientists in the Global South, to turn underutilized land into carbon sinks and aim to unite climate action with cultural and ecological restoration — by reviving degraded soils, restoring livelihoods, and rebuilding ecosystems. Alt Carbon are rooted in science, powered by community, and driven by the belief that revivals require ambitious people and audacious bets.",org_1J6EQBDPF1S0S9P4,Alt Carbon,alt-carbon.com,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,27.036007,88.262672,,,,,,, +prj_1HCHT9G2H1S05MYP,Deep Sky Alpha,validated,CCTF,https://to.isometric.com/prj_1HCHT9G2H1S05MYP,electrochemical-direct-air-capture,direct_air_capture,direct-air-capture,CAN,350Solutions,350Solutions,2025-08-02,2030-08-02,spl_1HCHMQ59A1S0YB7C,Deep Sky removes CO₂ through Direct Air Capture and sequesters it underground for durable storage.,"Deep Sky Alpha is a testing facility that evaluates the energy consumption, operability, and reliability of various direct air capture technologies under real-world conditions. The project encompasses the capture, liquefaction, transport, and sequestration of CO₂. CO₂ captured at Alpha is transported by road and sequestered off-site.",org_1HCHK0R5Y1S0APBQ,Deep Sky,deepskyclimate.com,,0.0,0,0.0,0,0.0,0,0.0,0,CAN,Canada,52.030589,-113.947993,"Innisfail, Alberta",,CAN,Canada,57.87731034400191,-101.53945144731158, +prj_1KFDNVSDZ1S0QA39,DMS Georgia,under_validation,J1AM,https://to.isometric.com/prj_1KFDNVSDZ1S0QA39,biomass-storage-subsurface-mines,biomass_carbon_removal_and_storage,subsurface-biomass,GEO,,Normec Verifavia,2025-03-01,2030-03-01,spl_1HXGZ55MM1S0XRBC,"Rewind leverages the natural ability of plants to capture CO₂, and the Black Sea to store it for thousands of years.","Rewind cleans CO₂ from the atmosphere by relocating residual plants to the deep Black Sea. This is a nature-based approach, as all rivers wash organic carbon out to sea, and the Black Sea is the world’s largest anoxic basin, naturally preserving carbon for thousands of years. Rewind is developing the science, certification, licensing policy, and MRV technology, to allow existing supply chains to transport and lock away gigaton-scale carbon within this decade.",org_1HW3AGK471S0WG6M,Rewind,rewind.earth,,0.0,0,0.0,0,0.0,0,0.0,0,GEO,Georgia,42.3154,43.3569,,,,,,, +prj_1K9W3ZCY71S0NRMS,Drobonso Carbon,under_validation,FZ80,https://to.isometric.com/prj_1K9W3ZCY71S0NRMS,biochar-process,biomass_carbon_removal_and_storage,biochar,GHA,,,2026-05-01,2042-05-01,spl_1JVPR1JK41S0DQ8S,"Nordic Carbons integrated biochar model makes a lasting impact on local communities, carbon sequestration and livelihoods across the world.","Nordic Carbon was founded on a mission to turn waste into value, both for the local communities and the global environment. They source biomass residues and establish strong local partnerships to ensure long-term viability. They tailor-make, efficient biochar systems to meet the technical cultural and environmental context locally; and build, install and operate complete carbon removal facilities optimized for performance, durability and transparency. + +With 20+ years of experience in the biomass industry from top management and operations, the team behind Nordic Carbon brings extensive expertise in sourcing, production, logistics, sustainability and commercialisation. ",org_1JVPR1JK41S0JRNT,Nordic Carbon Partners,nordiccarbon.dk,,0.0,0,0.0,0,0.0,0,0.0,0,GHA,Ghana,7.0642,1.124,,,,,,, +prj_1HHYZFVGW1S044ZY,Great Plains Organic Waste Sequestration,validated,01P4,https://to.isometric.com/prj_1HHYZFVGW1S044ZY,liquid-biomass-injection-process,biomass_carbon_removal_and_storage,biomass-geological-storage,USA,350Solutions,350Solutions,2023-08-21,2028-08-20,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,49439.85,49439850,12786.616,12786616,992.076,992076,0.0,0,USA,United States of America,37.96676121453887,-97.94108576138514,,,USA,United States of America,29.728229835733384,-95.56960726715872, +prj_1KCNW12WM1S0AY3D,Green Carbon - Kapadvanj Industrial Biochar,under_validation,A1JE,https://to.isometric.com/prj_1KCNW12WM1S0AY3D,biochar-process,biomass_carbon_removal_and_storage,biochar,IND,,,2026-05-30,2031-05-30,spl_1KBMWD70R1S0VMYW,Green Carbon Inc looks to optimize biomass removal through scaled up and efficient biochar production and carbon removal as well as environmental additionality.,"Our projects use a high-efficiency pyrolysis processes to heat leftover biomass—an agricultural residue that is normally burned or left to decompose. This process converts the biomass into biochar, a stable, solid form of charcoal that resists decomposition and functions as long-term carbon storage. The resulting biochar is then composted into a ""Biofertilizer"" and applied back to the soil, which helps improve soil health.",org_1KBMVR0BE1S0BTPX,Green Carbon,green-carbon.co.jp,,0.0,0,0.0,0,0.0,0,0.0,0,,,,,,,,,,, +prj_1K3S0527T1S0KYXT,Hampton Roads WAE Project,validated,ZTF7,https://to.isometric.com/prj_1K3S0527T1S0KYXT,wastewater-alkalinity-enhancement-process,marine,wastewater-alkalinity-enhancement,USA,350Solutions,350Solutions,2025-07-01,2030-06-30,spl_1JFA2B4TV1S0B6R3,"CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems.","CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems. Onsite, the feedstock is transferred into CREW’s dosing systems, and is dosed into the wastewater treatment reactors as a slurry. CREW’s system controls the rate of dosing to optimize process benefits and CDR.",org_1JC30RXHE1S0VQHE,CREW Carbon,crewcarbon.com,,49.53,49530,0.0,0,0.991,991,0.0,0,USA,United States of America,37.4316,-78.6569,"Virginia, USA",,,,,, +prj_1K4SN1CT61S0NZ7N,Helix,validated,B42M,https://to.isometric.com/prj_1K4SN1CT61S0NZ7N,wastewater-alkalinity-enhancement-planeteers-process,marine,biogenic-capture-and-storage,DEU,Normec Verifavia,Normec Verifavia,2026-01-01,2030-12-31,spl_1JSQEE2D51S0GJ1K,"Planeteers captures CO₂, converts it into mineralised water, and stores it safely in the ocean.","Planeteers captures CO₂ in water and unleashes the potential of the oceans as the largest carbon sink on our planet. The lab-proven, fully-measurable, scalable, and multi-CO₂-source technology to capture and store CO₂ leverages the natural process of limestone weathering and accelerates it from thousands of years in nature to a few minutes with our reactor technology. The result of this chemical reaction is hydrogen carbonate which is stored in the ocean for a very long period (10,000+ years) and has a positive “healing”-effect to work against ocean acidification.",org_1JSQE725G1S07000,Planeteers,planeteers.de,,0.0,0,0.0,0,0.0,0,0.0,0,DEU,Germany,53.6082,9.6342,Wastewater Treatment Plant,,,,,, +prj_1JXCRW5ST1S0EEKH,Humboldt Sawmill Company (HSC),validated,HD88,https://to.isometric.com/prj_1JXCRW5ST1S0EEKH,biochar-boiler-forestry-process,biomass_carbon_removal_and_storage,biochar,USA,350Solutions,350Solutions,2025-06-01,2030-05-31,spl_1JWTY1R161S033FC,"Pacific Biochar modifies biomass power plants for biochar production, thus leveraging existing infrastructure, trained staff, and hard earned utility and procurement contracts.","Pacific Biochar is a pioneering company leading the charge in durable carbon removal through our innovative biochar production model. Committed to mitigating climate change while leaving a legacy of fertile soil, Pacific Biochar specializes in the production and distribution of high-quality biochar products designed to sequester carbon while enhancing agricultural and industrial productivity. Our unique model utilizes existing biomass power plant infrastructure to produce biochar, enabling rapid scaling potential with low capital investments. The partnerships we make with these bioenergy facilities result in cascading community benefits including wildfire risk reduction, rural job growth, and improved food security.",org_1JWTXAK4S1S0XWSY,Pacific Biochar,pacificbiochar.com,,4924.65,4924650,2221.0,2221000,98.495,98495,0.0,0,USA,United States of America,40.4837,-124.1028,"Scotia, CA",,,,,, +prj_1JVC6T3VR1S0AJ5P,INTERCARBO,under_validation,3VAJ,https://to.isometric.com/prj_1JVC6T3VR1S0AJ5P,biochar-forest-road-process,biomass_carbon_removal_and_storage,biochar,COG,,,2026-01-02,2031-01-02,spl_1JSEKMWXZ1S0R19Z,"Leading the large-scale, high-tech pyrolysis transformation of sawmill residues into enduring climate-positive biochar.","INTERCARBO is a carbon removal process that utilizes wood residues from sawmill operations to produce biochar through a pyrolysis process. This approach reduces carbon emissions and contributes to climate change mitigation. The resulting biochar not only sequesters carbon for extended periods but also improves soil health when applied to degraded or abandoned forest roads. By efficiently managing sawmill waste and integrating biochar production into sustainable forestry practices, the project supports carbon capture, soil restoration, and community resilience. As a BiCRS solution, the INTERCARBO aligns with global efforts to reduce atmospheric CO₂ and contributes to achieving net-zero emissions.",org_1JSEKJFWN1S0X2Q0,Interholco,interholco.com,,0.0,0,0.0,0,0.0,0,0.0,0,COG,Congo,1.428585,16.174901,Republic of Congo,,,,,, +prj_1JPMVNV6K1S0WWRZ,KARBOTECH one,under_validation,18FF,https://to.isometric.com/prj_1JPMVNV6K1S0WWRZ,biochar-process,biomass_carbon_removal_and_storage,biochar,CZE,,,2026-01-01,2031-12-31,spl_1JPMVGPBE1S097XA,"agriCARBON brings revolutionary innovation to agriculture, powered by biochar.","agriCARBON produces biochar from biomass residues left over after biogas production in agricultural biogas plants. Agricultural businesses use biochar as a soil amendment for soil regeneration and transition to sustainable farming. Thanks to our solution, the circularity of efficient use of primary resources in the renewable energy production cycle is closed.",org_1JPMVGPBE1S0E9AB,agriCARBON,a-carbon.eu,,0.0,0,0.0,0,0.0,0,0.0,0,CZE,Czechia,49.8175,15.473,Czechia,,,,,, +prj_1K39D0N8S1S0TMKX,Kvina River CDR Project,validated,XJ4Y,https://to.isometric.com/prj_1K39D0N8S1S0TMKX,river-alkalinity-enhancement-process,marine,river-alkalinity-enhancement,NOR,350Solutions,350Solutions,2025-05-15,2030-05-15,spl_1JFW0WS9H1S0GKKN,"CarbonRun is the first in the world to use a safe, proven river restoration approach to decrease river acidity in a way that also naturally delivers carbon to the ocean, preventing it from returning to the atmosphere. Rivers as a force for change.","Through river alkalinity enhancement (RAE), site-specific amounts of safe alkalinity material is added to rivers where it dissolves rapidly, converting the CO2 in the rivers into stable, beneficial bicarbonate as well as minerals like calcium and magnesium. Our process absorbs CO₂ from both the soil and atmosphere and re-establishes key ecological building blocks. The rivers naturally transport the bicarbonate to the ocean, and the permanence of the CDR is currently estimated to be in the 10,000s of years. The drawdown of carbon can be directly measured in the river in real time.",org_1JCZX8EZR1S0B49J,CarbonRun,carbonrun.io,,76.69,76690,22.0,22000,1.534,1534,0.0,0,NOR,Norway,58.3212,6.9668,Kvinesdal,,,,,, +prj_1K3MGXD4A1S0S3H8,La Perla,under_validation,RGQX,https://to.isometric.com/prj_1K3MGXD4A1S0S3H8,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,MEX,,Verifit,2025-03-12,2030-01-31,spl_1JPJSK7EV1S0JZTD,"Silica partners with Latin American farmers to apply volcanic rockdust on agricultural farmland, permanently removing atmospheric CO₂ while improving soil health and crop yields.","Silica removes atmospheric CO₂ by accelerating the Earth’s natural rock weathering cycle. We partner with farmers in Latin America to apply highly reactive volcanic rockdust to agricultural fields, permanently removing CO₂ while improving crop yields and building climate resilience. We are first focusing on tropical regions of Mexico, where conditions are naturally favorable for faster CO₂ removal and outsized agronomic benefits. ",org_1HF7TP2C41S024VT,Silica,silica.earth,,0.0,0,0.0,0,0.0,0,0.0,0,MEX,Mexico,18.7,-95.6333,"Veracruz, Mexico",,,,,, +prj_1J4P33N6W1S0RKE2,Loblolly Project,validated,V093,https://to.isometric.com/prj_1J4P33N6W1S0RKE2,biomass-burial,biomass_carbon_removal_and_storage,subsurface-biomass,USA,350Solutions,350Solutions,2024-08-18,2029-08-17,spl_1J30PJXHY1S09VH2,"Graphyte uses residual biomass to deliver carbon removal that is permanent, affordable, and immediately scalable.","Graphyte’s Carbon Casting approach leverages waste biomass to permanently remove carbon dioxide from the atmosphere. Graphyte processes biomass into stable carbon blocks that are encased in an impermeable, long-lasting polymer material. These carbon blocks are then stored in a purpose-built storage site with a robust MRV system. Carbon Casting prevents the carbon blocks from decomposing over a 1000+ year timescale, which ensures that the carbon stored in the biomass will not be released back into the atmosphere in the form of CO2 or methane.",org_1HH2PAT741S0AYY1,Graphyte,graphyte.com,,16605.5,16605500,5824.0,5824000,1162.633,1162633,0.0,0,USA,United States of America,34.29,-92.4257,,,,,,, +prj_1K9A90ZPH1S0ZJ9S,Miombo Renewal,under_validation,GG0F,https://to.isometric.com/prj_1K9A90ZPH1S0ZJ9S,reforestation-process,reforestation,reforestation,COD,,Ampere,2021-01-01,2070-12-31,spl_1K99QE48S1S0R1JG,Carbon Ventures Africa partners with local communities across the continent to restore native forests on deforested and degraded land.,"Carbon Ventures Africa is a nature-based carbon removal company working with local communities to restore degraded forest landscapes. Through native tree planting, assisted natural regeneration, and long-term forest protection, CVA converts degraded forest land into stable, biodiverse forests. These restored ecosystems capture and store atmospheric CO₂ in living biomass and soils for verified, durable carbon removal, monitored through field measurement and remote-sensing technologies.",org_1K99QE48S1S0X2ZH,Carbon Ventures Africa,carbonventures.africa,,0.0,0,0.0,0,0.0,0,0.0,0,COD,Democratic Republic of the Congo,-11.05,28.01,Miombo Woodlands,,,,,, +prj_1K09XZV1B1S023XT,Moser River,under_validation,7FPK,https://to.isometric.com/prj_1K09XZV1B1S023XT,river-alkalinity-enhancement-process,marine,river-alkalinity-enhancement,CAN,,350Solutions,,,spl_1JFW0WS9H1S0GKKN,"CarbonRun is the first in the world to use a safe, proven river restoration approach to decrease river acidity in a way that also naturally delivers carbon to the ocean, preventing it from returning to the atmosphere. Rivers as a force for change.","Through river alkalinity enhancement (RAE), site-specific amounts of safe alkalinity material is added to rivers where it dissolves rapidly, converting the CO2 in the rivers into stable, beneficial bicarbonate as well as minerals like calcium and magnesium. Our process absorbs CO₂ from both the soil and atmosphere and re-establishes key ecological building blocks. The rivers naturally transport the bicarbonate to the ocean, and the permanence of the CDR is currently estimated to be in the 10,000s of years. The drawdown of carbon can be directly measured in the river in real time.",org_1JCZX8EZR1S0B49J,CarbonRun,carbonrun.io,,0.0,0,0.0,0,0.0,0,0.0,0,CAN,Canada,45.0778,-63.5467,"Nova Scotia, Canada",,,,,, +prj_1K1T6SHXE1S0F3H4,MVC Biochar,under_validation,AYT7,https://to.isometric.com/prj_1K1T6SHXE1S0F3H4,biochar-process,biomass_carbon_removal_and_storage,biochar,CHL,,SGS India,2025-08-08,2030-08-08,spl_1K1T6MQR51S0VENF,"Carbono Capital transforms waste biomass into biochar, enriching soils, storing carbon, restoring ecosystems, and supporting rural livelihoods.","Carbono Capital provides a Carbon Removal (BiCRS) solution that transforms waste biomass into biochar through biogenic-fueled pyrolysis. Using off-grid kilns, the process produces a soil-enhancing material that, when blended with compost and applied to agricultural land, improves soil fertility, protects crop biodiversity, and strengthens food security for rural communities.",org_1K1T658DK1S0PY0X,Carbono Capital,carbono.capital,,0.0,0,0.0,0,0.0,0,0.0,0,CHL,Chile,-35.6751,-71.543,Chile,,,,,, +prj_1JFA3YY9P1S0YVKR,New England WAE Project,validated,X8KC,https://to.isometric.com/prj_1JFA3YY9P1S0YVKR,wastewater-alkalinity-enhancement-process,marine,wastewater-alkalinity-enhancement,USA,350Solutions,350Solutions,2023-07-11,2028-07-10,spl_1JFA2B4TV1S0B6R3,"CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems.","CREW removes carbon dioxide from the atmosphere via wastewater treatment systems, deploying fine-grained natural minerals like calcium carbonate in wastewater treatment systems. Onsite, the feedstock is transferred into CREW’s dosing systems, and is dosed into the wastewater treatment reactors as a slurry. CREW’s system controls the rate of dosing to optimize process benefits and CDR.",org_1JC30RXHE1S0VQHE,CREW Carbon,crewcarbon.com,,476.92,476920,166.0,166000,9.543,9543,0.0,0,USA,United States of America,41.28892135620117,-72.90184020996094,,,,,,, +prj_1H502CZZH1S0VMYW,Nova Scotia Mineral OAE Project,validated,F5X7,https://to.isometric.com/prj_1H502CZZH1S0VMYW,oae-planetary-process,marine,ocean-alkalinity-enhancement,CAN,350Solutions,350Solutions,2024-02-01,2029-01-31,spl_1H4RJ0NBR1S0JKNR,"Planetary Technologies add alkaline compounds to seawater to enhance the natural ability of seawater to absorb atmospheric carbon dioxide, storing the carbon in dissolved carbon-containing ions in the oceans.",Planetary removes carbon by adding finely ground alkaline feedstock to industrial outfalls that discharge into the ocean. This reduces ocean acidity and allows the ocean to naturally absorb more CO₂ from the atmosphere through air-sea gas exchange.,org_1H4RJ0NBR1S0YYT3,Planetary,planetarytech.com,,4853.6,4853600,1891.0,1891000,97.075,97075,0.0,0,CAN,Canada,45.0,-63.0,,,CAN,Canada,44.666,-63.5676, +prj_1JQEQKCF91S06HAJ,Ontario Avenue Bio-Oil Sequestration,validated,GHYZ,https://to.isometric.com/prj_1JQEQKCF91S06HAJ,bio-oil-process-nulife,biomass_carbon_removal_and_storage,bio-oil-geological-storage,CAN,Normec Verifavia,Normec Verifavia,2025-06-01,2030-06-01,spl_1JPQG0XPF1S01KTD,NULIFE GreenTech utilizes patented Hydrothermal Liquefaction (HTL) technology to convert waste biomass into bio-oil. The bio-oil is injected underground for durable storage.,"NULIFE GreenTech is a scalable, decentralized BiCRS solution that not only enables permanent carbon removal but also directly addresses real waste management challenges. By converting waste biomass—which would otherwise decompose and release emissions—into carbon-rich bio-oil, NULIFE provides a sustainable alternative to traditional disposal methods. NULIFE’s modular HTL technology is highly flexible, processing a variety of engineered slurries containing both wet and dry organic wastes. The resulting bio-oil is transported for geological sequestration, ensuring permanent carbon removal. Additionally, NULIFE generates valuable co-products, including CO₂ gas and biochar, which can be leveraged for further carbon dioxide removal or to offset fossil fuels. The effluent water from the process can be recycled into the HTL system or repurposed to support regional water supply, enhancing sustainability.",org_1JPQFP4VR1S0R1RT,NULIFE GreenTech,nulifegreentech.com,,626.29,626290,145.219,145219,12.529,12529,0.0,0,CAN,Canada,52.15301779641782,-106.66656492670393,HTL Conversion Site,,,,,, +prj_1JQ775W7D1S0WYSA,Project Araçari,validated,H2QE,https://to.isometric.com/prj_1JQ775W7D1S0WYSA,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,BRA,350Solutions,350Solutions,2024-08-01,2029-08-01,spl_1HW7TJTRT1S0QM20,InPlanet enables farmers in the tropics to remove atmospheric CO₂ and move toward more sustainable agricultural practices.,"InPlanet works closely with farmers in the tropics to restore their soils and help them to transition to a low carbon, sustainable and nature-based agriculture. InPlanet do this through the deployment and scaling of Enhanced Weathering using locally sourced rocks that are optimal for CDR and regenerating nutrient-depleted soils.",org_1HF7TMNVX1S0768V,InPlanet,inplanet.earth,,319.97,319970,0.0,0,6.4,6400,0.0,0,BRA,Brazil,-23.5558,-46.6396,"Sao Paolo, Brazil",,DEU,Germany,48.1351,11.582, +prj_1JZ0ZD3JN1S0SHW9,Project Cajueiro,validated,68X8,https://to.isometric.com/prj_1JZ0ZD3JN1S0SHW9,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,BRA,350Solutions,350Solutions,2024-07-19,2027-08-31,spl_1JWY4JWJK1S05RE6,Mombak removes carbon at scale in Brazil across two complementary pathways: reforesting the Amazon and spreading finely ground rock on agricultural soils.,"Mombak is a multi-pathway carbon removal company operating large-scale Reforestation and Enhanced Rock Weathering (ERW) projects in Brazil. Our reforestation program transforms degraded pasturelands into biodiverse carbon sinks through native species planting and assisted natural regeneration. We actively neutralize leakage from our project areas and guarantee 100-year durability through continuous satellite monitoring of our forests. Our ERW projects spread finely ground rock on agricultural soils, where it captures atmospheric CO₂ as stable bicarbonates stored in the ocean on geological timescales — while improving soil health and crop yields for farmers. Across both pathways, we apply rigorous MRV protocols to deliver transparent, science-based carbon removal at scale.",org_1JWY4JWJK1S0ASV7,Mombak,mombak.com,,46.94,46940,0.0,0,0.939,939,0.0,0,BRA,Brazil,-14.235,-51.9253,Maranhão,,,,,, +prj_1K10D531D1S0DEV9,Project Carcará,validated,E8NE,https://to.isometric.com/prj_1K10D531D1S0DEV9,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,BRA,350Solutions,350Solutions,2024-04-29,2029-04-29,spl_1JWGBNCEC1S0PNGQ,"Terradot accelerates the natural process of rock weathering by spreading crushed silicate rock on farmland, permanently removing atmospheric CO₂ while enhancing soil health.","Terradot accelerates the natural process of rock weathering by applying finely ground silicate rock to tropical agricultural soils. Once applied, the rock dissolves in the presence of moisture and acidity, releasing base cations like calcium and magnesium that react with carbon dioxide in the soil to form bicarbonate, a stable form of carbon that is then safely transported through water systems to the ocean. This process ultimately shifts atmospheric CO₂ into the ocean’s long-term carbon cycle, where it remains sequestered for hundreds of thousands of years.",org_1JWGBGQ291S0D3F4,Terradot,terradot.earth,,204.95,204950,0.0,0,4.099,4099,0.0,0,BRA,Brazil,-23.988161,-51.389236,,,,,,, +prj_1K21RKWYX1S0NWN6,Project Dourado,validated,D74G,https://to.isometric.com/prj_1K21RKWYX1S0NWN6,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,BRA,350Solutions,350Solutions,2025-02-10,2030-02-10,spl_1HW7TJTRT1S0QM20,InPlanet enables farmers in the tropics to remove atmospheric CO₂ and move toward more sustainable agricultural practices.,"InPlanet works closely with farmers in the tropics to restore their soils and help them to transition to a low carbon, sustainable and nature-based agriculture. InPlanet do this through the deployment and scaling of Enhanced Weathering using locally sourced rocks that are optimal for CDR and regenerating nutrient-depleted soils.",org_1HF7TMNVX1S0768V,InPlanet,inplanet.earth,,0.0,0,0.0,0,0.0,0,0.0,0,BRA,Brazil,-20.4649,-54.6218,The State of Mato Grosso do Sul,,DEU,Germany,48.1351,11.582, +prj_1JQCK4WZX1S0ANXP,Project Juniper,cancelled,E9MP,https://to.isometric.com/prj_1JQCK4WZX1S0ANXP,electrochemical-direct-air-capture-with-mineralization,direct_air_capture,direct-air-capture,USA,,350Solutions,,,spl_1JJXVJ35P1S0P0BS,"Clairity captures atmospheric CO₂ using a low-cost and abundant sorbent, enabling sequestration or utilization of captured CO₂.","Clairity develops DAC technology which use low-cost and abundant alkali salts to remove CO₂ from the atmosphere. Atmospheric air is blown over a composite sorbent material that removes both CO₂ and H₂O, resulting in a process that is not only carbon negative but also water positive. Once saturated, the composite sorbent is heated to a low-temperature, regenerating the sorbent and releasing CO₂ and H₂O. The output CO₂ stream from Clairtiy's process can be sequestered or utilized across a range of pathways, enabling flexibility on storage to increase project deployments.",org_1JJXVE1RA1S07CX5,Clairity,clairitytech.com,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,36.2137,-115.1771,,,,,,, +prj_1JWX91R5E1S00PN0,Project Nandani,under_validation,PZDR,https://to.isometric.com/prj_1JWX91R5E1S00PN0,biochar-process,biomass_carbon_removal_and_storage,biochar,IND,,Enviance,2026-03-08,2031-03-08,spl_1JSHTPPG11S0ZR1Z,Ground Up is revolutionising Indian agriculture through industrial hubs of biochar production that restore soil health and deliver durable carbon removal.,"Ground Up is building industrial-scale biochar production hubs across India. By leveraging organised agricultural networks, like sugar cultivation, Ground Up creates scalable supply chains for biomass acquisition and biochar distribution, alongside streamlined MRV processes that ensure traceability and impact. The company uses indigenous pyrolysis technology—designed and manufactured in India—making this an India-first solution to carbon removal at scale. Ground Up works with hundreds of thousands of farmers and employs proprietary application protocols to maximise the agronomic benefits of its biochar-based products. ",org_1JSHT5XRT1S0P60C,Ground Up,ground-up.in,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,19.7515,75.7139,Maharashtra,,,,,, +prj_1J7NQMR9V1S04P0D,Project Serra da Mantiqueira,validated,EN4R,https://to.isometric.com/prj_1J7NQMR9V1S04P0D,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,BRA,EcoEngineers,350Solutions,2023-05-30,2028-05-29,spl_1HW7TJTRT1S0QM20,InPlanet enables farmers in the tropics to remove atmospheric CO₂ and move toward more sustainable agricultural practices.,"InPlanet works closely with farmers in the tropics to restore their soils and help them to transition to a low carbon, sustainable and nature-based agriculture. InPlanet do this through the deployment and scaling of Enhanced Weathering using locally sourced rocks that are optimal for CDR and regenerating nutrient-depleted soils.",org_1HF7TMNVX1S0768V,InPlanet,inplanet.earth,,389.42,389420,81.025,81025,7.789,7789,0.0,0,BRA,Brazil,-22.4149,-47.5651,,,DEU,Germany,48.1351,11.582, +prj_1K1GX4BDK1S0FZVC,Project Tapir,under_validation,6E5N,https://to.isometric.com/prj_1K1GX4BDK1S0FZVC,biochar-process,biomass_carbon_removal_and_storage,biochar,CRI,,EPIC Sustainability,2025-09-01,2030-09-01,spl_1K096RJAD1S0AVNC,"Gigafex helps palm oil mills turn waste biomass into biochar and high-quality, scientifically verifiable carbon removal credits. They design and operate proprietary, patent-pending pyrolysis reactors that are purpose-built for EFB biomass.","Gigafex captures carbon by converting agricultural waste, specifically pressed empty fruit bunches from palm oil production, into stable biochar using proprietary pyrolysis reactors located onsite. Their key partner, Coopeagropal, supplies a steady, traceable stream of this biomass, minimizing transport emissions. The biochar is then applied to nearby plantations to improve soil health and store carbon safely. The project aims to remove over 6,000 tonnes of CO₂ annually, with rigorous monitoring to ensure transparency and durability.",org_1JZJ6QD0P1S04E9V,Gigafex,gigafex.com,,0.0,0,0.0,0,0.0,0,0.0,0,CRI,Costa Rica,9.7489,-83.7534,Costa Rica,,,,,, +prj_1JQ76PQZX1S04S93,Reforesting Degraded Appalachian Mine and Agricultural Lands,under_validation,XDVS,https://to.isometric.com/prj_1JQ76PQZX1S04S93,reforestation-process,reforestation,reforestation,USA,,,2026-12-31,2064-12-31,spl_1JKG9W7P11S0BJZ8,"Living Carbon revitalizes Appalachia by transforming severely degraded mine lands and marginal farmland into thriving, biodiverse forests.","Living Carbon revitalizes Appalachia by transforming severely degraded mine lands and marginal farmland into thriving, biodiverse forests. Combining cutting-edge science and innovative reforestation, Living Carbon turn scarred landscapes into high-value environmental assets — restoring ecosystems, and supporting local communities in a historically underserved region of the United States.",org_1JKDVWB9H1S0944K,Living Carbon,livingcarbon.com,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,39.0,-83.0,,,USA,United States of America,37.7749,-122.4194, +prj_1KA95092G1S093EM,Reforesting the Brazilian Amazon Project 1,under_validation,84R7,https://to.isometric.com/prj_1KA95092G1S093EM,reforestation-process,reforestation,reforestation,BRA,,SCS Global Services,2023-03-31,2073-03-30,spl_1JWY4JWJK1S05RE6,Mombak removes carbon at scale in Brazil across two complementary pathways: reforesting the Amazon and spreading finely ground rock on agricultural soils.,"Mombak is a multi-pathway carbon removal company operating large-scale Reforestation and Enhanced Rock Weathering (ERW) projects in Brazil. Our reforestation program transforms degraded pasturelands into biodiverse carbon sinks through native species planting and assisted natural regeneration. We actively neutralize leakage from our project areas and guarantee 100-year durability through continuous satellite monitoring of our forests. Our ERW projects spread finely ground rock on agricultural soils, where it captures atmospheric CO₂ as stable bicarbonates stored in the ocean on geological timescales — while improving soil health and crop yields for farmers. Across both pathways, we apply rigorous MRV protocols to deliver transparent, science-based carbon removal at scale.",org_1JWY4JWJK1S0ASV7,Mombak,mombak.com,,0.0,0,0.0,0,0.0,0,0.0,0,BRA,Brazil,-2.07597,-47.473073,Pará,,,,,, +prj_1JKR5RQG81S0Y2CZ,Seoni Enhanced Rock Weathering Project,under_validation,ZGXN,https://to.isometric.com/prj_1JKR5RQG81S0Y2CZ,enhanced-weathering-process,enhanced_weathering,enhanced-weathering-agriculture,IND,,Earthood,2024-03-01,2029-03-01,spl_1J82BZ1QF1S02XC1,Mati durably removes carbon using enhanced rock weathering in smallholder farmer fields across global south countries delivering co-benefits and climate adaptation support to these farmers.,"Mati Carbon is an enhanced rock weathering (ERW) solution, that uses mafic rocks like Basalt to make rock dust that is spread in smallholder farmer fields. This rock dust reacts with CO₂ and water in agricultural fields converting to bicarbonates, and durably removing CO₂ from the atmosphere in the process. During the ERW reaction, the dissolution process releases micronutrients like Ca, Mg, Si, Zn into the soil. These micronutrients, rejuvenate the soil, improving crop health and productivity. + +Mati Carbon collects soil and liquid samples from crop fields to run advanced analytical techniques for determining the carbon removal that has occurred in the fields from a particular deployment",org_1HF7TNMD01S0EG05,Mati,mati.earth,,0.0,0,0.0,0,0.0,0,0.0,0,IND,India,22.05505,79.33347,India,,,,,, +prj_1K6G4S1PJ1S0TR4Z,Sifuri Halisi TZ001-B,under_validation,KMK9,https://to.isometric.com/prj_1K6G4S1PJ1S0TR4Z,biochar-process,biomass_carbon_removal_and_storage,biochar,TZA,,Ampere,2025-12-15,2030-12-14,spl_1K5F2E7HP1S0BYJ2,Dark Earth Carbon is an East Africa-based carbon removal company focused on high-quality biochar production.,"Dark Earth Carbon is an East Africa–based carbon removal company deploying high-temperature pyrolysis systems to transform low-value biomass residues into durable biochar. Their continuous rotary kilns are engineered for tropical conditions, achieving high throughput and stable carbon yields with minimal energy loss. Each facility integrates advanced digital MRV for real-time carbon accounting and traceable registry issuance, ensuring transparent, verifiable removals. Dark Earth Carbon’s technology delivers reliable, low-cost carbon sequestration with strong agronomic and environmental co-benefits, enhancing soils, supporting regenerative agriculture, and advancing climate resilience in emerging markets.",org_1K5F2E7HP1S0GZZ3,Dark Earth Carbon,darkearthcarbon.com,,0.0,0,0.0,0,0.0,0,0.0,0,TZA,United Republic of Tanzania,6.369,34.8888,,,,,,, +prj_1K7HK8Q4S1S0D4W4,TIRE Project,under_validation,B9B1,https://to.isometric.com/prj_1K7HK8Q4S1S0D4W4,liquid-biomass-injection-process,biomass_carbon_removal_and_storage,biomass-geological-storage,USA,,350Solutions,2026-01-09,2031-01-09,spl_1H43SYY631S0Z8YR,Vaulted takes biomass and with minimal processing is able to inject it underground for durable storage.,"Vaulted is a BiCRS solution, taking end-of-life organic waste that otherwise would have decomposed, and geologically sequestering the waste for storage. Vaulted secures a range of end-of-life organic wastes (including biosolids, livestock and agricultural waste, paper sludge, and others) through sustainable sourcing practices, and deploys slurry injection technology to geologically sequester these wastes for the purpose of permanent carbon removal.",org_1H43SYY631S0BM33,Vaulted Deep,vaulteddeep.com,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,33.744635,-118.262743,Wastewater Treatment Plant,,USA,United States of America,29.728229835733384,-95.56960726715872, +prj_1JQEW95GA1S0D2FD,Treehouse Plant 1,under_validation,QVP9,https://to.isometric.com/prj_1JQEW95GA1S0D2FD,biochar-process,biomass_carbon_removal_and_storage,biochar,USA,,OmnexFuturepast,2026-04-01,2031-04-01,spl_1JPQD8EW91S0KESK,"Sitos turns biomass into highly durable biochar—made by growers, used by growers—to store carbon, enrich soils, and build a more regenerative future. ","Sitos Group is a BiCRS solution, converting biomass into high-quality biochar through advanced slow pyrolysis technology. This process thermally decomposes biomass in a low-oxygen environment, stabilizing carbon that would have otherwise returned to the atmosphere. The resulting biochar is used by farmers to enhance soil health, improve water retention, and boost crop yields—all while ensuring durable carbon removal. Made by growers, used by growers, Sitos Group closes the loop on agricultural waste, transforming it into a long-term climate and soil solution.",org_1JPQCTQKC1S09WR0,Sitos Group,sitos.earth,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,35.7688,-119.2471,"Delano, CA",,,,,, +prj_1JYDZZ4MS1S0MF77,U.S. Agroforestry & Reforestation using Long-term Leases,under_validation,1R8P,https://to.isometric.com/prj_1JYDZZ4MS1S0MF77,reforestation-process,reforestation,reforestation,USA,,EcoEngineers,2022-03-27,2062-03-27,spl_1JV57MBN81S09WQB,Propagate is an agroforestry and reforestation developer that partners with farmers and landowners across the eastern United States to grow trees on agricultural land.,"Propagate is an agroforestry and reforestation developer that partners with farmers and landowners across the eastern United States to grow trees on agricultural land. Propagate’s technical service staff has over 40 years of collective experience advising on agroforestry projects across over 30,000 acres across pre-planning, planning, design, site-leasing, site preparation, planting, and monitoring. ",org_1JV57FRSR1S0EY4C,Propagate,propagateag.com,,0.0,0,0.0,0,0.0,0,0.0,0,USA,United States of America,38.3749,-83.4905,,,,,,, diff --git a/tests/data/isometric/retirements.csv b/tests/data/isometric/retirements.csv new file mode 100644 index 0000000..49e85c4 --- /dev/null +++ b/tests/data/isometric/retirements.csv @@ -0,0 +1,101 @@ +retirement_id,retired_at,purposes,url,notes,beneficiary.id,beneficiary.name,beneficiary.domain,owner.id,owner.name,owner.domain,credit_batch_size_total.credits,credit_batch_size_total.credit_kgs,project_id,sequestered_on +ret_1KNSQMD6Z1S0TB50,2026-04-09T18:21:22.047712Z,['public_environmental_claims'],https://to.isometric.com/ret_1KNSQMD6Z1S0TB50,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,531.0,531000,prj_1HHYZFVGW1S044ZY,2026-01-22 +ret_1KNQPB6541S05H5K,2026-04-08T23:20:22.583953Z,['corporate_targets'],https://to.isometric.com/ret_1KNQPB6541S05H5K,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,220.0,220000,prj_1HHYZFVGW1S044ZY,2026-01-10 +ret_1KNHJ2ENB1S0KHVB,2026-04-06T14:10:15.365352Z,['corporate_targets'],https://to.isometric.com/ret_1KNHJ2ENB1S0KHVB,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,36.0,36000,prj_1JQEQKCF91S06HAJ,2026-01-22 +ret_1KNHHZQMP1S0C841,2026-04-06T14:08:46.247894Z,['corporate_targets'],https://to.isometric.com/ret_1KNHHZQMP1S0C841,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,5.0,5000,prj_1H502CZZH1S0VMYW,2026-03-15 +ret_1KN2VK6KR1S0YTXH,2026-03-31T21:08:04.878824Z,['corporate_targets'],https://to.isometric.com/ret_1KN2VK6KR1S0YTXH,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,700.0,700000,prj_1HHYZFVGW1S044ZY,2025-11-19 +ret_1KN2VFPNZ1S0B61W,2026-03-31T21:06:10.253964Z,['corporate_targets'],https://to.isometric.com/ret_1KN2VFPNZ1S0B61W,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,23.0,23000,prj_1JQEQKCF91S06HAJ,2026-03-03 +ret_1KN2V3KA61S0QH67,2026-03-31T20:59:33.601549Z,['corporate_targets'],https://to.isometric.com/ret_1KN2V3KA61S0QH67,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,9.0,9000,prj_1K39D0N8S1S0TMKX,2025-09-15 +ret_1KN2TXNA41S03WAJ,2026-03-31T20:56:19.029070Z,['corporate_targets'],https://to.isometric.com/ret_1KN2TXNA41S03WAJ,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,182.0,182000,prj_1H502CZZH1S0VMYW,2025-12-11 +ret_1KN2AVTBN1S0WYXB,2026-03-31T16:15:41.450315Z,['public_environmental_claims'],https://to.isometric.com/ret_1KN2AVTBN1S0WYXB,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,50.0,50000,prj_1H502CZZH1S0VMYW,2026-03-15 +ret_1KMZP3TAK1S0SBJ9,2026-03-30T15:34:34.687870Z,[],https://to.isometric.com/ret_1KMZP3TAK1S0SBJ9,,org_1KGN8G1S31S02KQY,Kieran Lewko,,org_1KGN8G1S31S02KQY,Kieran Lewko,,0.019,19,prj_1JQEQKCF91S06HAJ,2025-11-07 +ret_1KMNNWDKE1S0XAYH,2026-03-26T18:18:07.926033Z,['other'],https://to.isometric.com/ret_1KMNNWDKE1S0XAYH,https://stripe.com/climate/orders (climorder_0PzbwXh6OxB7c9ARoDn9myJr),org_1KKMGR1791S02W5G,"Convert Insights, Inc.",convert.com,org_1H31N48RD1S0BFFG,Stripe,stripe.com,1.131,1131,prj_1HZSSWBQM1S08H83,2025-09-30 +ret_1KMKF4H8J1S066T1,2026-03-25T21:41:44.919132Z,['corporate_targets'],https://to.isometric.com/ret_1KMKF4H8J1S066T1,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,0.004,4,prj_1HZSSWBQM1S08H83,2026-03-02 +ret_1KMK2Q8Q21S0F6QR,2026-03-25T18:04:47.301265Z,['other'],https://to.isometric.com/ret_1KMK2Q8Q21S0F6QR,https://stripe.com/climate/orders (climorder_1Pt4aS00V51Cn46fh30u8qYa),org_1J7GCR0V31S0SCD0,CaptureNow,capturenow.ai,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.015,15,prj_1HHYZFVGW1S044ZY,2024-06-06 +ret_1KMK2Q0FV1S0M84S,2026-03-25T18:04:38.823251Z,['other'],https://to.isometric.com/ret_1KMK2Q0FV1S0M84S,https://stripe.com/climate/orders (climorder_0QJvmoh6OxB7c9ARgGNZXaY7),org_1KKMGR1791S02W5G,"Convert Insights, Inc.",convert.com,org_1H31N48RD1S0BFFG,Stripe,stripe.com,1.125,1125,prj_1HZSSWBQM1S08H83,2025-08-25 +ret_1KMK2PY3W1S0S9HT,2026-03-25T18:04:36.383561Z,['other'],https://to.isometric.com/ret_1KMK2PY3W1S0S9HT,https://stripe.com/climate/orders (climorder_1Pt4YL00V51Cn46fDyRre39I),org_1J7GCR0V31S0SCD0,CaptureNow,capturenow.ai,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.01,10,prj_1HZSSWBQM1S08H83,2025-08-25 +ret_1KMK2PMSA1S0FQG7,2026-03-25T18:04:26.850639Z,['other'],https://to.isometric.com/ret_1KMK2PMSA1S0FQG7,https://stripe.com/climate/orders (climorder_1QVej0LmBySdFHuowBR0joif),org_1KMEAKQAC1S03EPF,Say Yup B.V.,sayyup.nl,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.317,317,prj_1HZSSWBQM1S08H83,2025-08-25 +ret_1KMGRSA0V1S0486F,2026-03-24T20:32:39.474699Z,['public_environmental_claims'],https://to.isometric.com/ret_1KMGRSA0V1S0486F,"Retired on behalf of DocuSign, Inc. for fiscal year 2026 emissions.",org_1KMGRPG4V1S01ZW6,"DocuSign, Inc.",docusign.com,org_1JJBWK9H71S0GKTS,Patch,patch.io,224.0,224000,prj_1HHYZFVGW1S044ZY,2024-06-06 +ret_1KMGD1K7D1S06XZA,2026-03-24T17:07:28.177134Z,['other'],https://to.isometric.com/ret_1KMGD1K7D1S06XZA,https://stripe.com/climate/orders (climorder_1PGBFrJNwp5zbN4vV1tuMWVK),org_1KMEAKCRE1S0MV7V,Edwin Rodgers,,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.016,16,prj_1HZSSWBQM1S08H83,2025-08-25 +ret_1KMEARTFG1S0F92B,2026-03-23T21:49:14.663577Z,['other'],https://to.isometric.com/ret_1KMEARTFG1S0F92B,https://stripe.com/climate/orders (climorder_1RNbhgHH9qbe5diw4dwxeEfv),org_1KMEAKBDY1S0SWMW,Sara Deneault Levesque,,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.006,6,prj_1HHYZFVGW1S044ZY,2026-01-05 +ret_1KMDR1DZ41S09PQM,2026-03-23T16:21:53.865688Z,['corporate_targets'],https://to.isometric.com/ret_1KMDR1DZ41S09PQM,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,698.7,698700,prj_1HZSSWBQM1S08H83,2026-02-25 +ret_1KMDMSCDZ1S0T7ZQ,2026-03-23T15:25:04.344459Z,['public_environmental_claims'],https://to.isometric.com/ret_1KMDMSCDZ1S0T7ZQ,,org_1JB984Q9X1S02YY3,MaRS,marsdd.com,org_1JB984Q9X1S02YY3,MaRS,marsdd.com,21.2,21200,prj_1JQEQKCF91S06HAJ,2025-09-05 +ret_1KMDMQFRV1S06K42,2026-03-23T15:24:02.229986Z,['public_environmental_claims'],https://to.isometric.com/ret_1KMDMQFRV1S06K42,,org_1JB984Q9X1S02YY3,MaRS,marsdd.com,org_1JB984Q9X1S02YY3,MaRS,marsdd.com,5.0,5000,prj_1H502CZZH1S0VMYW,2025-08-26 +ret_1KM6K9PE21S0BNY7,2026-03-20T21:44:20.754404Z,['other'],https://to.isometric.com/ret_1KM6K9PE21S0BNY7,https://stripe.com/climate/orders (climorder_0S2uDZh6OxB7c9ARySvIr226),org_1KKMGR1791S02W5G,"Convert Insights, Inc.",convert.com,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.928,928,prj_1HHYZFVGW1S044ZY,2026-01-05 +ret_1KM3S3D5V1S085JM,2026-03-19T19:28:02.774866Z,['corporate_targets'],https://to.isometric.com/ret_1KM3S3D5V1S085JM,To address unabated operational emissions for JPMorganChase’s global footprint for 2025-2026,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1H4ZWSABJ1S0Q4AA,Carbon Direct,carbon-direct.com,1250.0,1250000,prj_1J4P33N6W1S0RKE2,2025-11-13 +ret_1KKMGTV841S054FS,2026-03-13T21:14:57.251138Z,['other'],https://to.isometric.com/ret_1KKMGTV841S054FS,https://stripe.com/climate/orders (climorder_0QAUXsh6OxB7c9ARG1xsSAxN),org_1KKMGR1791S02W5G,"Convert Insights, Inc.",convert.com,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.892,892,prj_1HHYZFVGW1S044ZY,2026-01-05 +ret_1KKKSFQ9A1S0JEXV,2026-03-13T14:26:55.443898Z,['other'],https://to.isometric.com/ret_1KKKSFQ9A1S0JEXV,On behalf of McKinsey & Company's 2025 GHG emissions,org_1HGGCN1ZR1S0CWQG,McKinsey & Company,mckinsey.com,org_1HGGCN1ZR1S0CWQG,McKinsey & Company,mckinsey.com,1109.0,1109000,prj_1HHYZFVGW1S044ZY,2025-11-14 +ret_1KJQGXZE51S038RS,2026-03-02T14:58:41.251872Z,['corporate_targets'],https://to.isometric.com/ret_1KJQGXZE51S038RS,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,21.0,21000,prj_1HHYZFVGW1S044ZY,2026-01-02 +ret_1KJJDKSRF1S0P0FK,2026-02-28T15:24:29.906455Z,['corporate_targets'],https://to.isometric.com/ret_1KJJDKSRF1S0P0FK,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,41.296,41296,prj_1HZSSWBQM1S08H83,2025-11-07 +ret_1KJG6C72Y1S0KFE8,2026-02-27T18:39:32.470873Z,['public_environmental_claims'],https://to.isometric.com/ret_1KJG6C72Y1S0KFE8,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,52.0,52000,prj_1HHYZFVGW1S044ZY,2026-01-08 +ret_1KJG3WQS01S0ZVHV,2026-02-27T17:56:08.174487Z,['corporate_targets'],https://to.isometric.com/ret_1KJG3WQS01S0ZVHV,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,160.0,160000,prj_1HHYZFVGW1S044ZY,2026-01-02 +ret_1KHW75WF91S0W69G,2026-02-20T00:28:44.996400Z,['public_environmental_claims'],https://to.isometric.com/ret_1KHW75WF91S0W69G,"Retirement of environmental credits on behalf of Figma, Inc.",org_1K97Y6RQT1S0PC8P,Figma,figma.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,75.0,75000,prj_1HHYZFVGW1S044ZY,2025-12-09 +ret_1KHK2BXBZ1S0PA2B,2026-02-16T11:11:29.788739Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KHK2BXBZ1S0PA2B,Retirement of environmental credits on behalf of Samsara Inc.,org_1JGMDA6021S0MB9K,Samsara Inc.,samsara.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,300.0,300000,prj_1HHYZFVGW1S044ZY,2025-09-30 +ret_1KGTNBGE01S0EMV6,2026-02-06T23:42:18.641088Z,"['corporate_targets', 'public_environmental_claims']",https://to.isometric.com/ret_1KGTNBGE01S0EMV6,Retirement of environmental credits on behalf of Samsara Inc.,org_1JGMDA6021S0MB9K,Samsara Inc.,samsara.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,86.0,86000,prj_1JXCRW5ST1S0EEKH,2025-09-30 +ret_1KGN57ZZC1S0YEKE,2026-02-04T20:24:34.087819Z,['public_environmental_claims'],https://to.isometric.com/ret_1KGN57ZZC1S0YEKE,Union Square Ventures 2025 emissions,org_1KGN539SJ1S03G0F,Union Square Ventures,usv.com,org_1HSZXW3C41S0FT03,Wren,wren.co,58.0,58000,prj_1JXCRW5ST1S0EEKH,2025-09-30 +ret_1KGFM7CZS1S0W53Y,2026-02-02T16:50:56.680338Z,['public_environmental_claims'],https://to.isometric.com/ret_1KGFM7CZS1S0W53Y,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,28.0,28000,prj_1HHYZFVGW1S044ZY,2025-12-27 +ret_1KGFBVZE71S0EQ38,2026-02-02T14:24:53.778363Z,['corporate_targets'],https://to.isometric.com/ret_1KGFBVZE71S0EQ38,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,11.0,11000,prj_1HHYZFVGW1S044ZY,2025-12-12 +ret_1KGAE05XH1S0TA30,2026-01-31T16:25:56.580334Z,['corporate_targets'],https://to.isometric.com/ret_1KGAE05XH1S0TA30,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,86.0,86000,prj_1HHYZFVGW1S044ZY,2025-12-12 +ret_1KG0Q1BRH1S0HZ8J,2026-01-27T21:51:29.409818Z,['other'],https://to.isometric.com/ret_1KG0Q1BRH1S0HZ8J,https://stripe.com/climate/orders,org_1K6K2HREN1S0TECF,Coatue,coatue.com,org_1H31N48RD1S0BFFG,Stripe,stripe.com,30.0,30000,prj_1HHYZFVGW1S044ZY,2023-11-02 +ret_1KFY4XAAR1S0BBTF,2026-01-26T21:56:12.333084Z,"['corporate_targets', 'public_environmental_claims']",https://to.isometric.com/ret_1KFY4XAAR1S0BBTF,"Retirement of environmental credits on behalf of Dayforce US, Inc.",org_1KFY4SQ101S0NEMH,"Dayforce US, Inc.",dayforce.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,75.0,75000,prj_1HHYZFVGW1S044ZY,2025-09-09 +ret_1KFPJYVEJ1S0H5MR,2026-01-23T23:27:47.194334Z,['public_environmental_claims'],https://to.isometric.com/ret_1KFPJYVEJ1S0H5MR,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,3.0,3000,prj_1K39D0N8S1S0TMKX,2025-09-15 +ret_1KFP28NV31S00W6N,2026-01-23T18:36:03.410237Z,['corporate_targets'],https://to.isometric.com/ret_1KFP28NV31S00W6N,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,9.0,9000,prj_1K39D0N8S1S0TMKX,2025-09-15 +ret_1KFM4XP2S1S0NXY3,2026-01-23T00:44:00.023877Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4XP2S1S0NXY3,"Retirement of environmental credits on behalf of Match Group Holdings I, LLC",org_1KF4HEZZ11S09ZTA,"Match Group Holdings I, LLC",match.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,30.0,30000,prj_1HHYZFVGW1S044ZY,2025-09-05 +ret_1KFM4VCAK1S0TZB4,2026-01-23T00:42:44.561187Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4VCAK1S0TZB4,Retirement of environmental credits on behalf of Samsara Inc.,org_1JGMDA6021S0MB9K,Samsara Inc.,samsara.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,31.0,31000,prj_1HHYZFVGW1S044ZY,2025-09-05 +ret_1KFM4RYJ01S000R5,2026-01-23T00:41:24.862312Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4RYJ01S000R5,Retirement of environmental credits on behalf of Wise Payments Ltd,org_1K06XBK2P1S0KCS4,Wise Payments Ltd,wise.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,31.0,31000,prj_1HHYZFVGW1S044ZY,2025-09-04 +ret_1KFM4P7S41S05256,2026-01-23T00:39:56.017006Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4P7S41S05256,"Retirement of environmental credits on behalf of Zendesk, Inc.",org_1JFDXFTP31S0K25K,"Zendesk, Inc.",zendesk.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,65.0,65000,prj_1HHYZFVGW1S044ZY,2025-08-04 +ret_1KFM4M33Y1S0A3J7,2026-01-23T00:38:45.726271Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4M33Y1S0A3J7,"Retirement of environmental credits on behalf of Skims Body, Inc.",org_1JES6QEVZ1S0RR9M,"Skims Body, Inc.",skims.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,39.0,39000,prj_1HHYZFVGW1S044ZY,2025-07-09 +ret_1KFM4HNAH1S0F4Z8,2026-01-23T00:37:26.059898Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4HNAH1S0F4Z8,Retirement of environmental credits on behalf of Canva Pty Ltd,org_1KF4GYRYY1S0JB2J,Canva Pty Ltd,canva.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,32.0,32000,prj_1HHYZFVGW1S044ZY,2025-07-09 +ret_1KFM4FGGH1S0M6C9,2026-01-23T00:36:15.583619Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4FGGH1S0M6C9,"Retirement of environmental credits on behalf of Aledade, Inc.",org_1KF4GPJ551S0WYN3,"Aledade, Inc.",aledade.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,75.0,75000,prj_1HHYZFVGW1S044ZY,2025-07-08 +ret_1KFM4A3E61S0S7SA,2026-01-23T00:33:18.359071Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KFM4A3E61S0S7SA,Retirement of environmental credits on behalf of Skyscanner Limited,org_1JGYRMJ681S0VT9A,Skyscanner Limited,skyscanner.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,31.0,31000,prj_1HHYZFVGW1S044ZY,2025-04-17 +ret_1KFJZYDGV1S0EMSW,2026-01-22T13:57:46.689111Z,['corporate_targets'],https://to.isometric.com/ret_1KFJZYDGV1S0EMSW,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,1.0,1000,prj_1K39D0N8S1S0TMKX,2025-09-15 +ret_1KF4HG0CX1S04YD9,2026-01-16T23:15:52.382299Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4HG0CX1S04YD9,"Retirement of environmental credits on behalf of Match Group Holdings I, LLC",org_1KF4HEZZ11S09ZTA,"Match Group Holdings I, LLC",match.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,1.0,1000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KF4HCTG41S0PAYN,2026-01-16T23:14:08.073528Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4HCTG41S0PAYN,Retirement of environmental credits on behalf of Samsara Inc.,org_1JGMDA6021S0MB9K,Samsara Inc.,samsara.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,1.0,1000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KF4HB25D1S0CRX2,2026-01-16T23:13:10.379572Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4HB25D1S0CRX2,Retirement of environmental credits on behalf of Wise Payments Ltd,org_1K06XBK2P1S0KCS4,Wise Payments Ltd,wise.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,1.0,1000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KF4H8RP11S0HTA3,2026-01-16T23:11:55.134217Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4H8RP11S0HTA3,"Retirement of environmental credits on behalf of Zendesk, Inc.",org_1JFDXFTP31S0K25K,"Zendesk, Inc.",zendesk.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,3.0,3000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KF4H67K11S0PVQ4,2026-01-16T23:10:32.095363Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4H67K11S0PVQ4,"Retirement of environmental credits on behalf of Skims Body, Inc.",org_1JES6QEVZ1S0RR9M,"Skims Body, Inc.",skims.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,2.0,2000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KF4H0MWM1S0MKCV,2026-01-16T23:07:29.114916Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4H0MWM1S0MKCV,Retirement of environmental credits on behalf of Canva Pty Ltd,org_1KF4GYRYY1S0JB2J,Canva Pty Ltd,canva.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,1.0,1000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KF4GRSEE1S0Z6ZC,2026-01-16T23:03:11.634176Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4GRSEE1S0Z6ZC,"Retirement of environmental credits on behalf of Aledade, Inc.",org_1KF4GPJ551S0WYN3,"Aledade, Inc.",aledade.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,5.0,5000,prj_1JFA3YY9P1S0YVKR,2025-03-31 +ret_1KF4GJ9QH1S099SE,2026-01-16T22:59:38.941632Z,"['public_environmental_claims', 'corporate_targets']",https://to.isometric.com/ret_1KF4GJ9QH1S099SE,Retirement of environmental credits on behalf of Skyscanner Limited.,org_1JGYRMJ681S0VT9A,Skyscanner Limited,skyscanner.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,1.0,1000,prj_1JFA3YY9P1S0YVKR,2025-03-31 +ret_1KEW9ARTC1S07CJ8,2026-01-13T18:19:16.724295Z,['corporate_targets'],https://to.isometric.com/ret_1KEW9ARTC1S07CJ8,Retired on behalf of Marsh,org_1KEW92PD11S0547Z,Marsh,marsh.com,org_1JJBWK9H71S0GKTS,Patch,patch.io,385.0,385000,prj_1J4P33N6W1S0RKE2,2025-07-09 +ret_1KED8DW0M1S0ADGD,2026-01-07T22:14:53.246278Z,['other'],https://to.isometric.com/ret_1KED8DW0M1S0ADGD,"Voluntary, campaign-specific compensation of marketing emissions, undertaken as a discretionary sustainability action rather than to meet regulatory, insetting, or formal corporate climate target requirements.",org_1JGYRMJ681S0VT9A,Skyscanner Limited,skyscanner.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,2.0,2000,prj_1JQEQKCF91S06HAJ,2025-10-30 +ret_1KECX793H1S0PMBK,2026-01-07T18:59:02.972315Z,['corporate_targets'],https://to.isometric.com/ret_1KECX793H1S0PMBK,Retirement of environmental credits on behalf of Yelp Inc.,org_1KECX0MSR1S0D2A0,Yelp Inc.,yelp.com,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,77.0,77000,prj_1JXCRW5ST1S0EEKH,2025-09-30 +ret_1KE7NQBPC1S0V49J,2026-01-05T18:11:49.117105Z,['public_environmental_claims'],https://to.isometric.com/ret_1KE7NQBPC1S0V49J,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,120.0,120000,prj_1HHYZFVGW1S044ZY,2025-12-10 +ret_1KE7J0T391S0MX2E,2026-01-05T17:07:04.463500Z,['corporate_targets'],https://to.isometric.com/ret_1KE7J0T391S0MX2E,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,67.0,67000,prj_1HHYZFVGW1S044ZY,2025-11-12 +ret_1KE7HYJNB1S0186S,2026-01-05T17:05:51.319221Z,['corporate_targets'],https://to.isometric.com/ret_1KE7HYJNB1S0186S,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,0.711,711,prj_1HZSSWBQM1S08H83,2025-10-27 +ret_1KE7G7T9Q1S0AAF5,2026-01-05T16:35:57.412783Z,['corporate_targets'],https://to.isometric.com/ret_1KE7G7T9Q1S0AAF5,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,363.0,363000,prj_1HHYZFVGW1S044ZY,2025-11-13 +ret_1KDZR4Z7R1S0JNYB,2026-01-02T16:20:16.798097Z,['corporate_targets'],https://to.isometric.com/ret_1KDZR4Z7R1S0JNYB,,org_1J73CY0FE1S0APG7,Harvard Management Company,harvard.edu,org_1J73CY0FE1S0APG7,Harvard Management Company,harvard.edu,600.0,600000,prj_1J4P33N6W1S0RKE2,2025-07-20 +ret_1KDR9F7DA1S0THMA,2025-12-30T18:49:03.190878Z,['corporate_targets'],https://to.isometric.com/ret_1KDR9F7DA1S0THMA,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,12.0,12000,prj_1JQEQKCF91S06HAJ,2025-11-07 +ret_1KD6K0KEC1S03CJ9,2025-12-23T21:49:30.045792Z,['corporate_targets'],https://to.isometric.com/ret_1KD6K0KEC1S03CJ9,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,460.0,460000,prj_1HZSSWBQM1S08H83,2025-10-15 +ret_1KD64DF4N1S0B1SN,2025-12-23T17:34:22.942964Z,['corporate_targets'],https://to.isometric.com/ret_1KD64DF4N1S0B1SN,Retired on behalf of Cisco's Scope 1 and 2 operational emissions.,org_1KD646NBT1S0T60R,"Cisco Systems, Inc.",cisco.com,org_1HGDWAQSC1S023WJ,Rubicon Carbon,rubiconcarbon.com,258.0,258000,prj_1HHYZFVGW1S044ZY,2023-10-09 +ret_1KD406TT91S01249,2025-12-22T21:42:22.351671Z,['corporate_targets'],https://to.isometric.com/ret_1KD406TT91S01249,"Retirement of environmental credits on behalf of Block, Inc.",org_1K97SSV471S01HJY,Block,block.xyz,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,0.002,2,prj_1HZSSWBQM1S08H83,2025-05-20 +ret_1KCYPXS1E1S0QDJT,2025-12-20T20:23:56.242996Z,['corporate_targets'],https://to.isometric.com/ret_1KCYPXS1E1S0QDJT,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,1424.0,1424000,prj_1H502CZZH1S0VMYW,2025-08-26 +ret_1KCYPMDAV1S03RQ5,2025-12-20T20:18:49.350224Z,['corporate_targets'],https://to.isometric.com/ret_1KCYPMDAV1S03RQ5,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,49.0,49000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KCYG4W8M1S01GCW,2025-12-20T18:25:28.903198Z,['public_environmental_claims'],https://to.isometric.com/ret_1KCYG4W8M1S01GCW,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,1.242,1242,prj_1HZSSWBQM1S08H83,2025-11-05 +ret_1KCSZMWVH1S09ZG9,2025-12-19T00:20:10.310139Z,['corporate_targets'],https://to.isometric.com/ret_1KCSZMWVH1S09ZG9,"Retirement of environmental credits on behalf of Block, Inc.",org_1K97SSV471S01HJY,Block,block.xyz,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,2000.0,2000000,prj_1JXCRW5ST1S0EEKH,2025-07-31 +ret_1KCSW2Y2P1S01FYW,2025-12-18T23:17:55.973266Z,['public_environmental_claims'],https://to.isometric.com/ret_1KCSW2Y2P1S01FYW,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,16.0,16000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KCSTYVKT1S0AWR2,2025-12-18T22:58:13.795155Z,['corporate_targets'],https://to.isometric.com/ret_1KCSTYVKT1S0AWR2,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,7.0,7000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KCSSJ60K1S0JCQ1,2025-12-18T22:33:49.945361Z,['corporate_targets'],https://to.isometric.com/ret_1KCSSJ60K1S0JCQ1,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,49.0,49000,prj_1JFA3YY9P1S0YVKR,2025-11-30 +ret_1KCSCYJAH1S0AJTB,2025-12-18T18:53:24.214560Z,['other'],https://to.isometric.com/ret_1KCSCYJAH1S0AJTB,Shopify Planet App,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,24.0,24000,prj_1H502CZZH1S0VMYW,2025-08-26 +ret_1KCSCSDBQ1S0PXYP,2025-12-18T18:50:35.313196Z,['corporate_targets'],https://to.isometric.com/ret_1KCSCSDBQ1S0PXYP,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,603.0,603000,prj_1HHYZFVGW1S044ZY,2025-09-29 +ret_1KCSCMM8W1S03931,2025-12-18T18:47:58.534083Z,['corporate_targets'],https://to.isometric.com/ret_1KCSCMM8W1S03931,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,51.0,51000,prj_1JQEQKCF91S06HAJ,2025-09-05 +ret_1KCSCHV3R1S0JDA4,2025-12-18T18:46:27.251238Z,['corporate_targets'],https://to.isometric.com/ret_1KCSCHV3R1S0JDA4,,org_1H31N46E91S06YTY,Shopify,shopify.com,org_1H31N46E91S06YTY,Shopify,shopify.com,5.0,5000,prj_1HZSSWBQM1S08H83,2025-09-19 +ret_1KCQEGRVG1S04NBQ,2025-12-18T00:42:20.467475Z,['corporate_targets'],https://to.isometric.com/ret_1KCQEGRVG1S04NBQ,"Retirement of environmental credits on behalf of Block, Inc.",org_1K97SSV471S01HJY,Block,block.xyz,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,199.0,199000,prj_1JN6XNWDQ1S0BSN7,2025-04-15 +ret_1KCQDZ73G1S09PRR,2025-12-18T00:32:45.251156Z,['corporate_targets'],https://to.isometric.com/ret_1KCQDZ73G1S09PRR,"Retirement of environmental credits on behalf of Block, Inc.",org_1K97SSV471S01HJY,Block,block.xyz,org_1HYG3DJYK1S0NQKY,Watershed,watershedclimate.com,450.0,450000,prj_1HHYZFVGW1S044ZY,2023-10-16 +ret_1KCHY01Z81S014J6,2025-12-15T21:17:23.424821Z,['other'],https://to.isometric.com/ret_1KCHY01Z81S014J6,https://stripe.com/climate/orders,org_1KCHXYSNJ1S0YW7X,Raritan Valley Community College,raritanval.edu,org_1H31N48RD1S0BFFG,Stripe,stripe.com,5.0,5000,prj_1HHYZFVGW1S044ZY,2023-10-24 +ret_1KCHJPHFR1S0D1FN,2025-12-15T17:59:57.232972Z,['other'],https://to.isometric.com/ret_1KCHJPHFR1S0D1FN,https://stripe.com/climate/orders,org_1KCHJ8AAT1S0638D,Shams Hanna,,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.002,2,prj_1HHYZFVGW1S044ZY,2023-10-24 +ret_1KCHJJB8S1S01QW8,2025-12-15T17:57:39.810337Z,['other'],https://to.isometric.com/ret_1KCHJJB8S1S01QW8,https://stripe.com/climate/orders,org_1KCHJAZTR1S0FNA0,Quang Nguyen,,org_1H31N48RD1S0BFFG,Stripe,stripe.com,24.421,24421,prj_1HHYZFVGW1S044ZY,2023-10-23 +ret_1KC7MDWB61S0CCXM,2025-12-11T21:17:46.292371Z,['other'],https://to.isometric.com/ret_1KC7MDWB61S0CCXM,https://stripe.com/climate/orders,org_1KC55NQTR1S0YVTW,Own Your Beliefs Inc.,ownyourbeliefs.org,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.481,481,prj_1HHYZFVGW1S044ZY,2023-10-23 +ret_1KC7MB9TS1S0HEAN,2025-12-11T21:16:21.776882Z,['other'],https://to.isometric.com/ret_1KC7MB9TS1S0HEAN,https://stripe.com/climate/orders,org_1KC55CVZD1S06PAN,DeliverOne,deliverone.de,org_1H31N48RD1S0BFFG,Stripe,stripe.com,0.871,871,prj_1HHYZFVGW1S044ZY,2023-10-23 +ret_1KC7M5QAA1S0PFQP,2025-12-11T21:13:18.980761Z,['other'],https://to.isometric.com/ret_1KC7M5QAA1S0PFQP,https://stripe.com/climate/orders,org_1J7GCR0V31S0SCD0,CaptureNow,capturenow.ai,org_1H31N48RD1S0BFFG,Stripe,stripe.com,1.0,1000,prj_1HHYZFVGW1S044ZY,2023-10-23 +ret_1KC7M18271S0M7DD,2025-12-11T21:10:52.304730Z,['other'],https://to.isometric.com/ret_1KC7M18271S0M7DD,https://stripe.com/climate/orders,org_1KC7M0GRJ1S0HZ34,Stanford University,stanford.edu,org_1H31N48RD1S0BFFG,Stripe,stripe.com,1.0,1000,prj_1HHYZFVGW1S044ZY,2023-10-23 +ret_1KC7KPZS61S0Q0G5,2025-12-11T21:05:16.187365Z,['other'],https://to.isometric.com/ret_1KC7KPZS61S0Q0G5,https://stripe.com/climate/orders,org_1KC556YRP1S025P3,Tomorro,tomorro.co,org_1H31N48RD1S0BFFG,Stripe,stripe.com,4.0,4000,prj_1HHYZFVGW1S044ZY,2023-10-23 +ret_1KBR0BRAH1S0MB9D,2025-12-05T19:38:28.594560Z,['corporate_targets'],https://to.isometric.com/ret_1KBR0BRAH1S0MB9D,,org_1J73CY0FE1S0APG7,Harvard Management Company,harvard.edu,org_1J73CY0FE1S0APG7,Harvard Management Company,harvard.edu,2.0,2000,prj_1HZSSWBQM1S08H83,2025-08-16 +ret_1KBG9X4HR1S0XPCA,2025-12-02T19:51:19.901920Z,['corporate_targets'],https://to.isometric.com/ret_1KBG9X4HR1S0XPCA,Retired on behalf of Patch’s customers and/or their end users,org_1JJBWK9H71S0GKTS,Patch,patch.io,org_1JJBWK9H71S0GKTS,Patch,patch.io,1.0,1000,prj_1HZSSWBQM1S08H83,2025-09-19 +ret_1KBG9EZ9T1S0107H,2025-12-02T19:43:35.824246Z,['corporate_targets'],https://to.isometric.com/ret_1KBG9EZ9T1S0107H,Retired on behalf of Typeform S.L.,org_1KBG9D2BK1S0YQX8,Typeform S.L.,typeform.com,org_1JJBWK9H71S0GKTS,Patch,patch.io,12.0,12000,prj_1HZSSWBQM1S08H83,2025-08-15 +ret_1KBDMBWXP1S0ZH2R,2025-12-01T18:56:26.079043Z,['corporate_targets'],https://to.isometric.com/ret_1KBDMBWXP1S0ZH2R,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,0.541,541,prj_1HZSSWBQM1S08H83,2025-09-30 +ret_1KBDM8EV71S04JFS,2025-12-01T18:54:33.377660Z,['corporate_targets'],https://to.isometric.com/ret_1KBDM8EV71S04JFS,,org_1HYG2QS8H1S0EDWM,Workday,workday.com,org_1HYG2QS8H1S0EDWM,Workday,workday.com,88.0,88000,prj_1HHYZFVGW1S044ZY,2025-11-10 +ret_1KBDDYAFF1S0EAS1,2025-12-01T17:04:09.746769Z,['corporate_targets'],https://to.isometric.com/ret_1KBDDYAFF1S0EAS1,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,49.0,49000,prj_1HHYZFVGW1S044ZY,2025-10-21 +ret_1KBDDTZJ01S0TNXC,2025-12-01T17:02:20.255647Z,['corporate_targets'],https://to.isometric.com/ret_1KBDDTZJ01S0TNXC,,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,org_1HYZ70ENR1S0R56M,Autodesk,autodesk.co.uk,0.18,180,prj_1HZSSWBQM1S08H83,2025-09-09 +ret_1KBB20ZMH1S02H1Z,2025-11-30T18:57:25.247339Z,['corporate_targets'],https://to.isometric.com/ret_1KBB20ZMH1S02H1Z,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,268.0,268000,prj_1HHYZFVGW1S044ZY,2025-10-22 +ret_1KBAPHNME1S043BC,2025-11-30T15:36:49.129650Z,['corporate_targets'],https://to.isometric.com/ret_1KBAPHNME1S043BC,,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,org_1HGZ5BGYF1S0GH3H,JPMorganChase,jpmorganchase.com,232.0,232000,prj_1HZSSWBQM1S08H83,2025-09-05 diff --git a/tests/scripts/refresh_sample_data.py b/tests/scripts/refresh_sample_data.py index 669b7e5..7d21318 100644 --- a/tests/scripts/refresh_sample_data.py +++ b/tests/scripts/refresh_sample_data.py @@ -7,6 +7,10 @@ The script downloads small slices of each registry's raw files and writes them as plain CSV into tests/data/. Requires S3 read access. + +Note: Isometric data lives in the scratch bucket + (s3://carbonplan-scratch/offsets-db-test/raw/) until promoted + to the production bucket (s3://carbonplan-offsets-db/raw/). """ import argparse @@ -17,12 +21,14 @@ import s3fs BASE_S3 = 's3://carbonplan-offsets-db/raw' +SCRATCH_S3 = 's3://carbonplan-scratch/offsets-db-test/raw' OUT_DIR = Path(__file__).parent.parent / 'data' def main(date: str) -> None: fs = s3fs.S3FileSystem(anon=False) base = f'{BASE_S3}/{date}' + scratch_base = f'{SCRATCH_S3}/{date}' print(f'Refreshing sample data from {base}') # ── Verra ───────────────────────────────────────────────────────────────── @@ -75,6 +81,14 @@ def main(date: str) -> None: df.to_csv(out, index=False) print(f' {out.relative_to(OUT_DIR.parent)} ({len(df)} rows)') + # ── Isometric (scratch bucket) ───────────────────────────────────────────── + print(f'Refreshing Isometric from {scratch_base}') + for key in ('projects', 'issuances', 'retirements'): + _csv( + f'{scratch_base}/isometric/{key}.csv.gz', + OUT_DIR / 'isometric' / f'{key}.csv', + ) + print('Done.') diff --git a/tests/test_integration.py b/tests/test_integration.py index 967a532..13a58e0 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -4,10 +4,11 @@ from offsets_db_data.apx import * # noqa: F403 from offsets_db_data.arb import * # noqa: F403 from offsets_db_data.gld import * # noqa: F403 +from offsets_db_data.isometric import * # noqa: F403 from offsets_db_data.models import credit_without_id_schema, project_schema from offsets_db_data.vcs import * # noqa: F403 -# `date` and `bucket` fixtures are provided by conftest.py +# `date`, `bucket`, and `scratch_bucket` fixtures are provided by conftest.py # `arb` fixture is provided by conftest.py (processes raw_arb from local sample) @@ -15,7 +16,7 @@ 'harmonize_beneficiary_info', [True, False], ) -def test_verra(date, bucket, arb, harmonize_beneficiary_info): +def test_verra(subtests, date, bucket, arb, harmonize_beneficiary_info): prefix = 'VCS' projects = pd.read_csv(f'{bucket}/{date}/verra/projects.csv.gz') credits = pd.read_csv(f'{bucket}/{date}/verra/transactions.csv.gz') @@ -23,13 +24,18 @@ def test_verra(date, bucket, arb, harmonize_beneficiary_info): arb=arb[arb.project_id.str.startswith(prefix)], harmonize_beneficiary_info=harmonize_beneficiary_info, ) - assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) df_projects = projects.process_vcs_projects(credits=df_credits) - project_schema.validate(df_projects) - credit_without_id_schema.validate(df_credits) - assert df_projects['project_id'].str.startswith(prefix).all() - assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('credits_schema'): + credit_without_id_schema.validate(df_credits) + with subtests.test('credits_columns'): + assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) + with subtests.test('credits_project_id_prefix'): + assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('projects_schema'): + project_schema.validate(df_projects) + with subtests.test('projects_project_id_prefix'): + assert df_projects['project_id'].str.startswith(prefix).all() @pytest.mark.parametrize( @@ -40,7 +46,7 @@ def test_verra(date, bucket, arb, harmonize_beneficiary_info): ('climate-action-reserve', ['issuances', 'retirements', 'cancellations'], 'CAR'), ], ) -def test_apx(date, bucket, arb, registry, download_types, prefix): +def test_apx(subtests, date, bucket, arb, registry, download_types, prefix): dfs = [] for key in download_types: credits = pd.read_csv(f'{bucket}/{date}/{registry}/{key}.csv.gz') @@ -50,46 +56,52 @@ def test_apx(date, bucket, arb, registry, download_types, prefix): dfs.append(p) df_credits = pd.concat(dfs).merge_with_arb(arb=arb[arb.project_id.str.startswith(prefix)]) - credit_without_id_schema.validate(df_credits) - - assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) - projects = pd.read_csv(f'{bucket}/{date}/{registry}/projects.csv.gz') df_projects = projects.process_apx_projects(credits=df_credits, registry_name=registry) - project_schema.validate(df_projects) - assert df_projects['project_id'].str.startswith(prefix).all() - assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('credits_schema'): + credit_without_id_schema.validate(df_credits) + with subtests.test('credits_columns'): + assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) + with subtests.test('credits_project_id_prefix'): + assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('projects_schema'): + project_schema.validate(df_projects) + with subtests.test('projects_project_id_prefix'): + assert df_projects['project_id'].str.startswith(prefix).all() @pytest.mark.parametrize( 'harmonize_beneficiary_info', [True, False], ) -def test_gld(date, bucket, harmonize_beneficiary_info): +def test_gld(subtests, date, bucket, harmonize_beneficiary_info): registry = 'gold-standard' - download_types = ['issuances', 'retirements'] prefix = 'GLD' dfs = [] - for key in download_types: + for key in ('issuances', 'retirements'): credits = pd.read_csv(f'{bucket}/{date}/{registry}/{key}.csv.gz') - p = credits.process_gld_credits( - download_type=key, harmonize_beneficiary_info=harmonize_beneficiary_info + dfs.append( + credits.process_gld_credits( + download_type=key, harmonize_beneficiary_info=harmonize_beneficiary_info + ) ) - dfs.append(p) df_credits = pd.concat(dfs) - credit_without_id_schema.validate(df_credits) - - assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) - projects = pd.read_csv(f'{bucket}/{date}/{registry}/projects.csv.gz') df_projects = projects.process_gld_projects(credits=df_credits) - project_schema.validate(df_projects) - assert df_projects['project_id'].str.startswith(prefix).all() - assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('credits_schema'): + credit_without_id_schema.validate(df_credits) + with subtests.test('credits_columns'): + assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) + with subtests.test('credits_project_id_prefix'): + assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('projects_schema'): + project_schema.validate(df_projects) + with subtests.test('projects_project_id_prefix'): + assert df_projects['project_id'].str.startswith(prefix).all() @pytest.mark.parametrize( @@ -104,14 +116,57 @@ def test_gld(date, bucket, harmonize_beneficiary_info): 'projects', [pd.DataFrame()], ) -def test_gld_empty(df_credits, projects): +def test_gld_empty(subtests, df_credits, projects): prefix = 'GLD' - credit_without_id_schema.validate(df_credits) - assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) - df_projects = projects.process_gld_projects(credits=df_credits) - project_schema.validate(df_projects) - assert df_projects['project_id'].str.startswith(prefix).all() - assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('credits_schema'): + credit_without_id_schema.validate(df_credits) + with subtests.test('credits_columns'): + assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) + with subtests.test('credits_project_id_prefix'): + assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('projects_schema'): + project_schema.validate(df_projects) + with subtests.test('projects_project_id_prefix'): + assert df_projects['project_id'].str.startswith(prefix).all() + + +@pytest.mark.parametrize('harmonize_beneficiary_info', [True, False]) +def test_isometric( + subtests, + scratch_date, + scratch_bucket, + isometric_prj_id_to_short_code, + harmonize_beneficiary_info, +): + registry = 'isometric' + prefix = 'ISO' + + projects = pd.read_csv(f'{scratch_bucket}/{scratch_date}/{registry}/projects.csv.gz') + + dfs = [] + for key in ('issuances', 'retirements'): + credits = pd.read_csv(f'{scratch_bucket}/{scratch_date}/{registry}/{key}.csv.gz') + dfs.append( + credits.process_isometric_credits( + download_type=key, + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=harmonize_beneficiary_info, + ) + ) + + df_credits = pd.concat(dfs) + df_projects = projects.process_isometric_projects(credits=df_credits) + + with subtests.test('credits_schema'): + credit_without_id_schema.validate(df_credits) + with subtests.test('credits_columns'): + assert set(df_credits.columns) == set(credit_without_id_schema.columns.keys()) + with subtests.test('credits_project_id_prefix'): + assert df_credits['project_id'].str.startswith(prefix).all() + with subtests.test('projects_schema'): + project_schema.validate(df_projects) + with subtests.test('projects_project_id_prefix'): + assert df_projects['project_id'].str.startswith(prefix).all() diff --git a/tests/test_isometric.py b/tests/test_isometric.py new file mode 100644 index 0000000..5429793 --- /dev/null +++ b/tests/test_isometric.py @@ -0,0 +1,131 @@ +"""Unit tests for Isometric transformation functions. + +All tests use real sample data from tests/data/ via conftest fixtures. +""" + +from unittest.mock import patch + +import pandas as pd + +from offsets_db_data.isometric import ( + add_isometric_project_id, + add_isometric_project_url, + process_isometric_credits, + process_isometric_projects, +) +from offsets_db_data.models import credit_without_id_schema, project_schema + +# ── add_isometric_project_id ─────────────────────────────────────────────────── + + +def test_add_isometric_project_id(subtests, raw_isometric_projects): + # Mirror pipeline state: rename 'short_code' -> 'project_id' before this runs + df = raw_isometric_projects.rename(columns={'short_code': 'project_id'}).copy() + result = add_isometric_project_id(df, prefix='ISO') + + with subtests.test('prefix_added'): + assert result['project_id'].str.startswith('ISO').all() + with subtests.test('original_codes_preserved'): + original = raw_isometric_projects['short_code'].astype(str) + assert (result['project_id'].str[3:] == original).all() + + +# ── add_isometric_project_url ────────────────────────────────────────────────── + + +def test_add_isometric_project_url(subtests, raw_isometric_projects): + result = add_isometric_project_url(raw_isometric_projects) + + with subtests.test('url_column_exists'): + assert 'project_url' in result.columns + with subtests.test('url_matches_source'): + assert (result['project_url'] == raw_isometric_projects['url']).all() + + +# ── process_isometric_credits ────────────────────────────────────────────────── + + +def test_process_isometric_credits( + subtests, raw_isometric_issuances, raw_isometric_retirements, isometric_prj_id_to_short_code +): + cases = [ + (raw_isometric_issuances, 'issuances', 'issuance'), + (raw_isometric_retirements, 'retirements', 'retirement'), + ] + for df, download_type, expected_type in cases: + with subtests.test(download_type=download_type): + result = process_isometric_credits( + df, + download_type=download_type, + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=False, + ) + credit_without_id_schema.validate(result) + assert result['project_id'].str.startswith('ISO').all() + assert (result['transaction_type'] == expected_type).all() + assert (result['quantity'] >= 0).all() + assert pd.api.types.is_datetime64_any_dtype(result['transaction_date']) + + +def test_process_isometric_credits_empty_input(): + result = process_isometric_credits( + pd.DataFrame(), download_type='issuances', harmonize_beneficiary_info=False + ) + credit_without_id_schema.validate(result) + assert result.empty + + +# ── process_isometric_projects ───────────────────────────────────────────────── + + +def test_process_isometric_projects( + subtests, + raw_isometric_projects, + raw_isometric_issuances, + raw_isometric_retirements, + isometric_prj_id_to_short_code, +): + credits = pd.concat( + [ + process_isometric_credits( + raw_isometric_issuances, + download_type='issuances', + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=False, + ), + process_isometric_credits( + raw_isometric_retirements, + download_type='retirements', + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=False, + ), + ] + ) + result = process_isometric_projects(raw_isometric_projects, credits=credits) + + with subtests.test('schema'): + project_schema.validate(result) + with subtests.test('project_id_prefix'): + assert result['project_id'].str.startswith('ISO').all() + with subtests.test('registry'): + assert (result['registry'] == 'isometric').all() + with subtests.test('project_url_format'): + assert result['project_url'].str.startswith('https://').all() + + +# ── harmonize_beneficiary_data mock ─────────────────────────────────────────── + + +@patch('offsets_db_data.isometric.harmonize_beneficiary_data') +def test_process_isometric_credits_harmonize_beneficiary( + mock_harmonize, raw_isometric_retirements, isometric_prj_id_to_short_code +): + """harmonize_beneficiary_info=True invokes harmonize_beneficiary_data.""" + mock_harmonize.side_effect = lambda df, **_: df + process_isometric_credits( + raw_isometric_retirements, + download_type='retirements', + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=True, + ) + mock_harmonize.assert_called_once() diff --git a/tests/test_smoke.py b/tests/test_smoke.py index 4f46f77..bd0535d 100644 --- a/tests/test_smoke.py +++ b/tests/test_smoke.py @@ -11,6 +11,7 @@ from offsets_db_data.apx import * # noqa: F403 from offsets_db_data.arb import * # noqa: F403 from offsets_db_data.gld import * # noqa: F403 +from offsets_db_data.isometric import * # noqa: F403 from offsets_db_data.models import credit_without_id_schema, project_schema from offsets_db_data.vcs import * # noqa: F403 @@ -158,3 +159,40 @@ def test_arb_pipeline(subtests, arb): with subtests.test('transaction_types'): types = set(arb['transaction_type'].unique()) assert {'issuance', 'retirement'} <= types + + +def test_isometric_pipeline( + subtests, + raw_isometric_projects, + raw_isometric_issuances, + raw_isometric_retirements, + isometric_prj_id_to_short_code, +): + credits = pd.concat( + [ + raw_isometric_issuances.process_isometric_credits( + download_type='issuances', + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=False, + ), + raw_isometric_retirements.process_isometric_credits( + download_type='retirements', + prj_id_to_short_code=isometric_prj_id_to_short_code, + harmonize_beneficiary_info=False, + ), + ] + ) + + with subtests.test('credits_schema'): + credit_without_id_schema.validate(credits) + assert set(credits.columns) == set(credit_without_id_schema.columns.keys()) + assert credits['project_id'].str.startswith('ISO').all() + + with subtests.test('credits_transaction_types'): + types = set(credits['transaction_type'].unique()) + assert {'issuance', 'retirement'} <= types + + with subtests.test('projects_schema'): + projects = raw_isometric_projects.process_isometric_projects(credits=credits) + project_schema.validate(projects) + assert projects['project_id'].str.startswith('ISO').all() diff --git a/tests/test_vcs.py b/tests/test_vcs.py index 1ee85ed..8ded26f 100644 --- a/tests/test_vcs.py +++ b/tests/test_vcs.py @@ -395,9 +395,7 @@ def test_add_vcs_compliance_projects(subtests, vcs_projects): def test_process_vcs_projects(subtests, vcs_projects, vcs_transactions): credits = process_vcs_credits(vcs_transactions, harmonize_beneficiary_info=False) - df = process_vcs_projects( - vcs_projects, credits=credits, registry_name='verra', download_type='projects' - ) + df = process_vcs_projects(vcs_projects, credits=credits, registry_name='verra') with subtests.test('listed_at_column'): assert 'listed_at' in df.columns @@ -425,9 +423,7 @@ def test_process_vcs_projects(subtests, vcs_projects, vcs_transactions): def test_process_vcs_projects_totals(subtests, vcs_projects, vcs_transactions): credits = process_vcs_credits(vcs_transactions, harmonize_beneficiary_info=False) - df = process_vcs_projects( - vcs_projects, credits=credits, registry_name='verra', download_type='projects' - ) + df = process_vcs_projects(vcs_projects, credits=credits, registry_name='verra') row = df[df['project_id'] == 'VCS2498'].iloc[0] with subtests.test('total_issued'):