Chapter 9: Project Design Document (PDD) Schema Development
This chapter teaches you how to build Guardian schemas step-by-step for PDD implementation. You'll learn the exact field-by-field process used for VM0033, translating methodology analysis from Part II into working Guardian schema structures.
By the end of this chapter, you'll know how to create the VM0033 PDD schema like structure yourself, understanding each Guardian field type, conditional logic implementation, and how methodology parameters become functional data collection forms.
Guardian Schema Development Process
Complex Guardian schemas can be built using Excel templates that define the data structure, and then imported into Guardian. The schema template shows all available field types and their configuration options.
Alternative Schema Building Methods:
Excel-first approach (recommended for complex methodologies): Design in Excel, then import - covered in this chapter
Guardian UI approach: Build directly in Guardian interface - see Creating Schemas Using UI

Schema Template Structure
Every Guardian schema follows this Excel structure:
Yes/No
String/Number/Enum/etc
Reference to enum
TRUE/FALSE/hidden
User-facing question
Yes/No
Default value
Field Configuration Meaning:
Required Field: Whether users must complete this field before submission
Field Type: Data type (String, Number, Date, Enum, Boolean, Sub-Schema, etc.)
Parameter: Reference to enum options or calculation parameters
Visibility: Field display conditions (TRUE=always visible, FALSE=hidden unless condition met)
Question: Text that users see as the field label
Allow Multiple Answers: Whether field accepts multiple values
Answer: Default value or example shown to users
Building the Primary Schema Structure
Let's build a PDD schema step-by-step, starting with the main schema definition like VM0033's "Project Description (Auto)" tab.

Step 1: Create Main Schema Header
Start your Excel file with these header rows:
Row 1: Project Description (Auto)
Row 2: Description
Row 3: Schema Type | Verifiable Credentials
Row 4: Required Field | Field Type | Parameter | Visibility | Question | Allow Multiple Answers | Answer
This establishes your schema as a Verifiable Credentials type that Guardian will process into on-chain records.
Step 2: Add Certification Pathway Selection
The first functional field should be your primary conditional logic driver. For VM0033, this is certification type selection:
Row 5: Yes | Enum | Choose project certific (enum) | | Choose project certification type | No | VCS v4.4
This creates an enum field that determines which additional requirements appear. The parameter reference "Choose project certific (enum)" points to a separate enum tab defining the options.
Create the Enum Tab: Add a new worksheet named "Choose project certific (enum)" with(sheet names might be trimmed to accomodate excel's limitations):
Schema name | Project Description (Auto)
Field name | Choose project certification type
Loaded to IPFS | No
VCS v4.4 |
CCB v3.0 & VCS v4.4 |
Step 3: Add Conditional Sub-Schemas
Based on the certification selection, different sub-schemas should appear. Add conditional schema references:
Row 6: No | VCS Project Description v4.4 | | TRUE | VCS Project Description | No |
Row 7: No | CCB | | FALSE | CCB & VCS Project Description | No |
The VCS sub-schema always appears (TRUE visibility), while CCB appears only when CCB certification is selected (FALSE = conditional visibility based on enum selection).
Step 4: Create Sub-Schema Structures
VCS Project Description Sub-Schema
Create a new worksheet "VCS Project Description v4.4" with basic project information:
VCS Project Description v4.4
Description
Schema Type | Sub-Schema
Required Field | Field Type | Parameter | Visibility | Question | Allow Multiple Answers | Answer
Yes | String | | | Project title | No | example
Yes | String | | | Project ID | No | example
Yes | URL | | | Project Website | No | https://example.com
Yes | Date | | | Start Date | No | 2000-01-01
Yes | Date | | | End Date | No | 2000-01-01
CCB Sub-Schema (Conditional)
Create "CCB" worksheet for additional community/biodiversity requirements:
CCB
Description
Schema Type | Sub-Schema
Required Field | Field Type | Parameter | Visibility | Question | Allow Multiple Answers | Answer
Yes | String | | | CCB Standard | No | example
Yes | String | | | CCB Project Type | No | example
Yes | Date | | | Auditor Site Visit Start Date | No | 2000-01-01
Implementing Project Information Fields
Geographic Data Capture
Add geographic information fields to your main schema or sub-schema:
Yes | Number | | | Latitude (Decimal Degrees) | No | 1
Yes | Number | | | Longitude (Decimal Degrees) | No | 1
Yes | Number | | | Acres/Hectares | No | 1
Yes | Enum | AcresHectares (enum) | | Acres/Hectares | No | Acres
Create the unit selection enum tab "AcresHectares (enum)":
Schema name | Project Description (Auto)
Field name | Acres/Hectares
Loaded to IPFS | No
Acres |
Hectares |
Project Timeline Fields
Yes | Date | | | Project Start Date | No | 2000-01-01
Yes | Date | | | Project End Date | No | 2000-01-01
Yes | Number | | | Crediting Period Length (years) | No | 10
Adding Methodology-Specific Parameters
Now translate your Part II parameter analysis into Guardian fields. For VM0033's biomass parameters:
Step 1: Add Parameter Collection Fields
Yes | String | | | Stratum number | No | example
Yes | Number | | | Area of stratum (ha) – Ai,t | No | 1
Yes | Number | | | Biomass density (t d.m. ha-1) | No | 1
Yes | String | | | Data source for biomass density | No | example
Yes | String | | | Justification for parameter selection | No | example
Step 2: Add Calculation Method Selection
Yes | Enum | Which method did you us (enum) | | Which method did you use for estimating change in carbon stock in trees? | No | Between two points of time
Create the method enum tab:
Schema name | Project Description (Auto)
Field name | Which method did you use for estimating change in carbon stock in trees?
Loaded to IPFS | No
Between two points of time |
Difference of two independent stock estimations |
Step 3: Add Method-Specific Parameter Fields
Add conditional fields that appear based on method selection:
No | Number | | FALSE | Mean annual change in carbon stock (t CO2e yr-1) | No | 1
No | Number | | FALSE | Carbon fraction of tree biomass (CF_TREE) | No | 1
No | Number | | FALSE | Default mean annual increment (Δb_FOREST) | No | 1
These fields have FALSE visibility, meaning they appear conditionally based on the method selection enum.
Integrating AR Tools and External Modules
Adding AR Tool Integration
VM0033 uses AR Tool 14 for biomass calculations. Add tool integration:
Yes | AR Tool 14 | | | AR Tool 14 | No |
Create AR Tool Sub-Schema
Create "AR Tool 14" worksheet for tool-specific parameters:
AR Tool 14
Description | Biomass estimation using AR Tool 14
Schema Type | Tool-integration
Tool | AR Tool 14
Tool Id | [tool message id if available]
Required Field | Field Type | Parameter | Visibility | Question | Allow Multiple Answers | Answer
Yes | Number | | | Tree height (m) | No | 1
Yes | Number | | | Diameter at breast height (cm) | No | 1
Yes | Number | | | Wood density (g cm-3) | No | 1
Implementing Baseline and Project Calculations
Baseline Scenario Fields
Create a sub-schema for baseline emissions:
Yes | (New) Final Baseline Emissions | | | Baseline Emissions | No |
Create "(New) Final Baseline Emissions" worksheet:
(New) Final Baseline Emissions
Description
Schema Type | Sub-Schema
Required Field | Field Type | Parameter | Visibility | Question | Allow Multiple Answers | Answer
Yes | Number | | | Year t | No | 1
Yes | String | | | Stratum number | No | example
Yes | Enum | It's a baseline scenari (enum) | | It's a baseline scenario or project scenario? | No | Baseline scenario
Yes | Number | | | Mean annual change in carbon stock in trees (t CO2e yr-1) | No | 1
Project Emissions Structure
Similarly create project emissions calculation fields:
Yes | (New) Project Emissions | | | Project Emissions | No |
Advanced Field Types and Features
Auto-Calculate Fields
For calculated results that update automatically:
No | Auto-Calculate | | | Total Emission Reductions (t CO2e) | No | 2
File Upload Fields
For evidence documentation:
Yes | Image | | | Site photograph | No | ipfs://05566a658a44c6f747b5f82a2de1e0bf
No | String | | | Document description | No | example
Help Text Fields
Add contextual guidance:
No | Help Text | {"color":"#FF0000","size":"14px"} | | Parameter Help | No | This parameter represents...
Hidden Fields for System Use
No | String | | Hidden | Internal project ID | No | example
Conditional Logic Implementation
Simple Conditional Visibility
Use TRUE/FALSE in the Visibility column:
TRUE: Always visible
FALSE: Visible only when referenced condition is met
Hidden: Never visible to users (system fields)
Complex Conditional Logic
For multiple conditions, Guardian evaluates enum selections to determine field visibility. The FALSE visibility fields become visible when their referenced enum is selected appropriately.
Quality Control and Validation
Required Field Validation
Use "Yes" in Required Field column to enforce completion:
Yes | String | | | Project Developer Name | No | example
Data Type Validation
Guardian automatically validates based on Field Type:
Number: Only accepts numeric values
Date: Validates date format (2000-01-01)
Email: Validates email format
URL: Validates URL format
Pattern Validation
For custom validation patterns:
Yes | Pattern | [0-9]{4} | | Four-digit year | No | 2024
Testing Your Schema Structure
Validation Checklist
Before importing to Guardian, verify:
Import Testing and Schema Refinement
Save Excel file with proper structure
Import to Guardian
Test conditional logic with different selections
Validate auto-calculate fields
Review and rename field keys for meaningful calculation code
Update the schema ID in relevant policy workflow block

Important: Field Key Management
When Guardian imports Excel schemas, it generates default field keys that may not be meaningful for calculation code. For example:
Excel field "Biomass density (t d.m. ha⁻¹)" becomes field key "G5" as per excel cell it was found in
Default keys make calculation code harder to read and maintain
Best Practice: After import, open the schema in Guardian UI to rename field keys:
Navigate to schema management in Guardian
Open your imported schema for editing
Review each field's "Field Key" property
Rename keys to be calculation-friendly:
biomass_density_stratum_i
instead offield0
carbon_stock_baseline_t
instead ofcarbonStockBaselineT
emission_reduction_total
instead ofemissionReductionTotal

Why This Matters: Meaningful field keys make calculation code much easier to write and maintain:
// With good field keys
const totalEmissions = data.biomass_density_stratum_i * data.area_hectares;
// With default keys
const totalEmissions = data.field0 * data.field1; // What do these represent?
Connecting to Monitoring Schemas
Your PDD schema establishes the foundation that monitoring schemas build upon. Key connections:
Parameter Continuity
Ensure PDD parameters have corresponding monitoring equivalents:
PDD: Initial biomass density estimate
Monitoring: Annual biomass density measurements
Calculation Consistency
Use same parameter names and calculation approaches:
PDD parameter key:
biomass_density_initial
Monitoring parameter key:
biomass_density_year_t
Conditional Logic Alignment
Method selections in PDD should drive monitoring parameter requirements:
Direct method PDD → Direct measurement monitoring fields
Indirect method PDD → Indirect calculation monitoring fields
Best Practices Summary
Start Simple: Begin with basic project information, then add complexity systematically.
Test Incrementally: Validate each section before adding the next level of complexity.
Use Sub-Schemas: Break complex sections into manageable sub-schema components.
Plan Conditionals: Design conditional logic to reduce user interface complexity while maintaining requirement coverage.
Link to Analysis: Every parameter should trace back to specific methodology requirements from Part II analysis.
Validate with Stakeholders: Test schema workflows with actual Project Developers and VVBs before production deployment.
The next chapter builds on this PDD foundation to create monitoring schemas that handle time-series data collection and calculation updates over project lifetimes.
Last updated
Was this helpful?