> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VAV workflow library

> Reference for all VAV functional testing workflows including damper min/max, induced heating, airflow setpoint tracking, damper operation, heating operation, and induce heating/cooling checks.

Cloud BMS provides a library of pre-configured VAV (Variable Air Volume) functional testing workflows. Each workflow commands a damper or setpoint, reads airflow or temperature response, and scores pass or fail against thresholds.

Use this page as a parameter and point-requirements lookup. For the overall FTT model (workflow → project → task → score), see [What is Functional Testing?](/products/ftt/overview). For seasonal deployment, see the [Deployment guide](/products/ftt/deployment).

Select a tab to open the workflow you need.

***

<Tabs>
  <Tab title="Damper min/max" icon="gauge">
    *This workflow will test a VAV box for its airflow when the damper is at its min and max position.*

    1. First, we display the initial conditions of the equipment.
    2. Then we perform precondition checks to ensure the equipment is ready to be tested.
    3. Next we will close the damper.
    4. Finally we will open the damper comparing to max occ cooling flow.

    <Check>
      **Outcome:** This test will check a VAV box's ability to produce adequate min and max airflow.
    </Check>

    <Tip>
      **Recommended schedule:** Run weekly per floor. Run when there are comfort complaints in a space or floor. Run when new VAV boxes are installed and programmed.
    </Tip>

    <Info>
      **Point requirements:**

      | Device | Required points                                                               |
      | ------ | ----------------------------------------------------------------------------- |
      | VAV    | Discharge Airflow, Damper Command, Min Occ Cooling Flow, Max Occ Cooling Flow |
      | AHU    | Discharge Air Pressure                                                        |
    </Info>

    ### Preconditions

    1. *AHU Pressure* > `Min Pressure Threshold`

    ### Variations

    * There is a variant of this workflow that will work without the AHU requirement.
    * There is a variant that will work with "floating damper control" i.e. a boolean damper closed command and boolean damper open command, but in this case we cannot control to a specific close/open percent (i.e. close to 5%, open to 95%).

    ### Workflow overview

    FTT decides damper min/max performance by commanding the damper closed, then open, and comparing discharge airflow to a percentage of max occupied cooling flow.

    | Test step                 | Workflow                                                                                                      |
    | ------------------------- | ------------------------------------------------------------------------------------------------------------- |
    | **1 Pre-condition Check** | 1. *AHU Pressure* > `Min Pressure Threshold`                                                                  |
    | **2 Close Damper**        | 1. **Control:** Command *Damper* to `Closed` 2. **Success:** *Airflow* less than % of *Max Occ Cooling Flow*  |
    | **3 Open Damper**         | 1. **Control:** Command *Damper* to `Open` 2. **Success:** *Airflow* greater than % of *Max Occ Cooling Flow* |

    ### Tuning parameters

    | # | Parameter                        | Description                                                                                                         |
    | - | -------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
    | 1 | `AHU Min Pressure`               | If AHU Pressure is less than this number, the test automatically archives                                           |
    | 2 | `Damper Close Command`           | What % closed do you want to command the damper?                                                                    |
    | 3 | `Close Damper Airflow Threshold` | What % of the Max Occ Cooling Flow do you want to set as the airflow threshold when the damper is commanded closed? |
    | 4 | `Damper Open Command`            | What % open do you want to command the damper?                                                                      |
    | 5 | `Open Damper Airflow Threshold`  | What % of the Max Occ Cooling Flow do you want to set as the airflow threshold when the damper is commanded open?   |
    | 6 | `Max Sequence Duration`          | What is the maximum length of time in seconds that a sequence should take to execute?                               |
    | 7 | `Min Sequence Duration`          | What is the minimum length of time in seconds that a sequence should take to execute?                               |
    | 8 | `Stabilization Time`             | How long in seconds should the program wait when one sequence finishes, before moving onto the next?                |

    <Note>
      If you need assistance with interpreting your results, reach out to the support team at [support@kodelabs.com](mailto:support@kodelabs.com).
    </Note>

    ***
  </Tab>

  <Tab title="Induced heating" icon="flame">
    *This workflow will test a VAV box for its heating operation.*

    1. First, we display the initial conditions of the equipment.
    2. Then KODE performs precondition checks to ensure the equipment is ready to be tested.
    3. Next we will lower the setpoint to stop heating.
    4. Finally we will raise the setpoint to start heating.

    <Check>
      **Outcome:** This test will check a VAV box's ability to deliver heat when its setpoint is raised.
    </Check>

    <Tip>
      **Recommended schedule:** Run weekly per floor. Run when there are comfort complaints in a space or floor. Run when new VAV boxes are installed and programmed.
    </Tip>

    <Info>
      **Point requirements:**

      | Device | Required points                                                                       |
      | ------ | ------------------------------------------------------------------------------------- |
      | VAV    | Occupied Mode, Discharge Air Temperature, Zone Temperature, Zone Temperature Setpoint |
      | AHU    | Discharge Air Pressure                                                                |
    </Info>

    ### Required preconditions

    1. *AHU Pressure* > `Min Pressure Threshold`

    ### Variations

    * There is a variant of this workflow which works with occupied heating and cooling setpoints.
    * There is a variant of this workflow which works with network setpoint.

    ### Workflow overview

    | Test step                 | Workflow                                                                                                   |
    | ------------------------- | ---------------------------------------------------------------------------------------------------------- |
    | **1 Pre-condition Check** | 1. VAV is `Occupied` 2. *AHU Pressure* > `Min Pressure Threshold`                                          |
    | **2 Stop Heating**        | 1. **Control:** Lower *VAV Zone Temp Setpoint* 2. **Success:** *VAV DAT* near *AHU DAT* or *VAV Zone Temp* |
    | **3 Start Heating**       | 1. **Control:** Raise *VAV Zone Temp Setpoint* 2. **Success:** *VAV DAT* greater than *AHU DAT*            |

    ### Tuning parameters

    | # | Parameter                           | Description                                                                                                                                                        |
    | - | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | 1 | `AHU Min Pressure`                  | If AHU Pressure is less than this number, the test automatically archives                                                                                          |
    | 2 | `VAV Zone Temp Setpoint Adjustment` | How far below zone temp should the setpoint be set to stop heating? How far above zone temp should the setpoint be set to start heating?                           |
    | 3 | `VAV Stop Heating`                  | After lowering the VAV setpoint, the VAV DAT should approach the zone temperature. How close does the VAV DAT need to be to verify that heating has stopped?       |
    | 4 | `AHU Stop Heating`                  | After lowering the VAV setpoint, the VAV DAT should approach the AHU DAT. How close does the VAV DAT need to be to verify that heating has stopped?                |
    | 5 | `AHU Start Heating Temp`            | After raising the VAV setpoint, the VAV DAT should rise above the AHU DAT. How much greater should the VAV DAT be than AHU DAT to verify that heating has started? |
    | 6 | `Max Sequence Duration`             | What is the maximum length of time in seconds that a sequence should take to execute?                                                                              |
    | 7 | `Min Sequence Duration`             | What is the minimum length of time in seconds that a sequence should take to execute?                                                                              |
    | 8 | `Stabilization Time`                | How long in seconds should the program wait when one sequence finishes, before moving onto the next?                                                               |

    <Note>
      If you need assistance with interpreting your results, reach out to the support team at [support@kodelabs.com](mailto:support@kodelabs.com).
    </Note>

    ***
  </Tab>

  <Tab title="Airflow setpoint tracking" icon="wind">
    *This workflow will test a VAV box for its ability to follow the Discharge Airflow Setpoint.*

    1. First, you will see the equipment's preconditions.
    2. Then, KODE runs a precondition check (verification process) to confirm the equipment is ready for testing.
    3. Finally, KODE adjusts the setpoints and monitors discharge airflow to determine if the VAV achieves the intended setpoint.

    <Check>
      **Outcome:** This test will identify issues with a VAV's ability to follow airflow.
    </Check>

    <Tip>
      **Recommended schedule:** Run weekly per floor.
    </Tip>

    <Info>
      **Point requirements:**

      | Device | Required points                                                                                          |
      | ------ | -------------------------------------------------------------------------------------------------------- |
      | VAV    | Occupied Mode, Discharge Airflow, Discharge Airflow Setpoint, Min Occ Cooling Flow, Max Occ Cooling Flow |
      | AHU    | Discharge Air Pressure                                                                                   |
    </Info>

    ### Workflow overview

    | Test step                 | Workflow                                                                                                |
    | ------------------------- | ------------------------------------------------------------------------------------------------------- |
    | **1 Pre-condition Check** | 1. VAV is `Occupied` 2. *AHU Pressure* > `Min Pressure Threshold`                                       |
    | **2 Airflow SP - 1**      | 1. **Control:** Command *Airflow Setpoint* 2. **Success:** *Airflow* in range of setpoint +/- tolerance |
    | **3 Airflow SP - 2**      | 1. **Control:** Command *Airflow Setpoint* 2. **Success:** *Airflow* in range of setpoint +/- tolerance |
    | **4 Airflow SP - 3**      | 1. **Control:** Command *Airflow Setpoint* 2. **Success:** *Airflow* in range of setpoint +/- tolerance |
    | **5 Airflow SP - 4**      | 1. **Control:** Command *Airflow Setpoint* 2. **Success:** *Airflow* in range of setpoint +/- tolerance |

    **Variations:** There is a variant of this workflow that will work without the AHU requirement.

    ### Tuning parameters

    | # | Parameter               | Description                                                                                          |
    | - | ----------------------- | ---------------------------------------------------------------------------------------------------- |
    | 1 | `AHU Min Pressure`      | If AHU Pressure is less than this number, the test automatically archives                            |
    | 2 | `Airflow SP - 1`        | What % of the Max Occ Cooling Flow do you want to set as the first target?                           |
    | 3 | `Airflow SP - 2`        | What % of the Max Occ Cooling Flow do you want to set as the second target?                          |
    | 4 | `Airflow SP - 3`        | What % of the Max Occ Cooling Flow do you want to set as the third target?                           |
    | 5 | `Airflow SP - 4`        | What % of the Max Occ Cooling Flow do you want to set as the fourth target?                          |
    | 6 | `SP Tolerance %`        | How close should the airflow be to the airflow setpoint to pass?                                     |
    | 7 | `Max Sequence Duration` | What is the maximum length of time in seconds that a sequence should take to execute?                |
    | 8 | `Min Sequence Duration` | What is the minimum length of time in seconds that a sequence should take to execute?                |
    | 9 | `Stabilization Time`    | How long in seconds should the program wait when one sequence finishes, before moving onto the next? |

    ### Common reasons for unsuccessful tests

    | # | Reason                                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
    | - | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | 1 | **Check and Adjust Calibration**               | Begin by verifying the calibration of all sensors involved in the test, especially the discharge airflow sensors and pressure transducers in the AHU. Calibration issues can lead to inaccurate readings that cause the system to deviate from the setpoint. If any sensors are found to be out of calibration, recalibrate them according to the manufacturer's specifications before rerunning the test.                                                           |
    | 2 | **Inspect VAV and AHU Components**             | Examine the physical condition of the VAV box and associated AHU components. Check for any signs of damage or wear that could affect performance, such as stuck dampers, leaks in the ducts, or malfunctioning actuators. If any issues are found, perform the necessary repairs or replacements. Ensure all components are clean and free from obstructions that could impair airflow.                                                                              |
    | 3 | **Review System Configuration and Sequencing** | Evaluate the VAV box programming and configuration settings. Confirm that the airflow setpoints, sequence durations, and stabilization times are correctly set according to the operational requirements. Adjust the control sequences if needed to ensure they align with the current operational strategy and performance expectations. It may also be helpful to consult with a control specialist to optimize the sequence of operations for better performance. |

    <Note>
      If you need assistance with interpreting your results, reach out to the support team at [support@kodelabs.com](mailto:support@kodelabs.com).
    </Note>

    ***
  </Tab>

  <Tab title="Damper operation" icon="sliders-horizontal">
    ### Testing procedure

    ### Pre-conditions check

    *Before testing is started, it must be verified that the VAV is in operation.*

    **Verify that VAV is `Occupied`.**

    **Verify that its parent AHU is `Occupied`.**

    **Verify fan is running** by checking that *duct pressure* is more than `0.4psi` \[Pressure Min Threshold]

    <Warning>
      If any of these conditions are not met, STOP the workflow and ARCHIVE.
    </Warning>

    ### Setup testing conditions

    *In order to ensure that testing is accurate, sources of heating must be eliminated or minimized. If this condition is applicable and not verified, then the testing will be aborted.*

    **Stop Active Heating**

    * Verify that *discharge temp* drops to `10△°F` \[Heating AHU - Delta] below original *discharge temp* AND
    * Verify that *zone temp* is less than `5△°F` \[Heating - Delta] above *discharge temp*

    ### Damper testing

    **Close the Damper**

    * Command *Damper* to `CLOSED`
    * Pass if *VAV discharge flow* is less than `30cfm` \[Max Allowed Flow]

    **Open the Damper**

    * Command *Damper* to `OPEN`
    * Pass if *discharge airflow* is greater than `100cfm` \[Min Flow Indication] OR
    * Pass if *discharge airflow* is `20%` \[Relative Flow Tolerance] greater than *discharge airflow setpoint*

    ### Parameters

    | Display                            | Hint                                                                                                                  |
    | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
    | `Damper Close Command` \[%]        | To what percentage do we want to test the closing operation                                                           |
    | `Close Damper Weight` \[2]         | Weight on the overall test assigned to this sequence                                                                  |
    | `Damper Open Command` \[100%]      | To what percentage do we want to test the opening operation                                                           |
    | `Open Damper Weight` \[2]          | Weight on the overall test assigned to this sequence                                                                  |
    | `Heating Stop Command` \[%]        | To what percentage do we want to test the closing operation                                                           |
    | `Stop Heating Weight` \[1]         | Weight on the overall test assigned to this sequence                                                                  |
    | `Pressure Min Threshold` \[0.4psi] | How much should the duct pressure be minimally                                                                        |
    | `Heating AHU Delta` \[10△°F]       | The threshold tolerance for heating. Delta (DAT VAV - DAT AHU).                                                       |
    | `Heating Delta` \[5△°F]            | The threshold tolerance for heating. Delta between ZT and DAT.                                                        |
    | `Max Allowed Flow` \[30cfm]        | Max allowed Flow when fully closed damper                                                                             |
    | `Min Flow Indication` \[100cfm]    | Minimum Flow to indicate open damper                                                                                  |
    | `Relative Flow Tolerance` \[20%]   | How much below the setpoint in % do we allow the flow to be when we have a fully open damper                          |
    | `Reaction Time` \[300sec]          | How long to wait for the actuators to fully do their job                                                              |
    | `Stabilization Time` \[60sec]      | How long to wait for the system to come to stability after an actuator command and the conditions have been fulfilled |
    | `Measure After` \[60sec]           | How long to wait in seconds to start checking the feedback readings                                                   |
    | `AHU Fan Min Threshold` \[5%]      | How much should the AHU discharge fan be minimally in percentage                                                      |

    ***
  </Tab>

  <Tab title="Heating operation" icon="thermometer">
    ### Testing procedure

    ### Pre-conditions check

    *Before testing is started, it must be verified that the VAV is in operation.*

    **Verify that VAV is `Occupied`.**

    **Verify that its parent AHU is `Occupied`.**

    **Verify fan is running** by checking that *duct pressure* is more than `0.4psi` \[Pressure Min Threshold]

    <Warning>
      If any of these conditions are not met, STOP the workflow and ARCHIVE.
    </Warning>

    ### Setup testing conditions

    *In order to ensure that testing is accurate, sources of heating must be eliminated or minimized. If this condition is applicable and not verified, then the testing will be aborted.*

    **Stop Active Heating**

    * Verify that *discharge temp* drops to `10△°F` \[Heating AHU - Delta] below original *discharge temp* AND
    * Verify that *zone temp* is less than `5△°F` \[Heating - Delta] above *discharge temp*

    ### Damper testing

    **Close the Damper**

    * Command *Damper* to `CLOSED`
    * Pass if *VAV discharge flow* is less than `30cfm` \[Max Allowed Flow]

    **Open the Damper**

    * Command *Damper* to `OPEN`
    * Pass if *discharge airflow* is greater than `100cfm` \[Min Flow Indication] OR
    * Pass if *discharge airflow* is `20%` \[Relative Flow Tolerance] greater than *discharge airflow setpoint*

    ### Test Heating

    **Start Heating**

    * Verify that *discharge temp* rises to `10△°F` \[Heating AHU - Delta] above original *discharge temp* AND
    * Verify that *zone temp* is greater than `5△°F` \[Heating - Delta] above *discharge temp*

    ### Parameters

    | Display                            | Hint                                                                                                                  |
    | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
    | `Damper Close Command` \[%]        | To what percentage do we want to test the closing operation                                                           |
    | `Close Damper Weight` \[2]         | Weight on the overall test assigned to this sequence                                                                  |
    | `Damper Open Command` \[100%]      | To what percentage do we want to test the opening operation                                                           |
    | `Open Damper Weight` \[2]          | Weight on the overall test assigned to this sequence                                                                  |
    | `Heating Stop Command` \[%]        | To what percentage do we want to test the closing operation                                                           |
    | `Stop Heating Weight` \[4]         | Weight on the overall test assigned to this sequence                                                                  |
    | `Pressure Min Threshold` \[0.4psi] | How much should the duct pressure be minimally                                                                        |
    | `Heating AHU Delta` \[10△°F]       | The threshold tolerance for heating. Delta (DAT VAV - DAT AHU).                                                       |
    | `Heating Delta` \[5△°F]            | The threshold tolerance for heating. Delta between ZT and DAT.                                                        |
    | `Max Allowed Flow` \[30cfm]        | Max allowed Flow when fully closed damper                                                                             |
    | `Min Flow Indication` \[100cfm]    | Minimum Flow to indicate open damper                                                                                  |
    | `Relative Flow Tolerance` \[20%]   | How much below the setpoint in % do we allow the flow to be when we have a fully open damper                          |
    | `Reaction Time` \[300sec]          | How long to wait for the actuators to fully do their job                                                              |
    | `Stabilization Time` \[60sec]      | How long to wait for the system to come to stability after an actuator command and the conditions have been fulfilled |
    | `Measure After` \[60sec]           | How long to wait in seconds to start checking the feedback readings                                                   |
    | `AHU Fan Min Threshold` \[5%]      | How much should the AHU discharge fan be minimally in percentage                                                      |
    | `DAT Heating Threshold` \[70°F]    | How much should the DAT maximally be for our VAV to be able to provide reheat                                         |
    | `Sec Loop Valve Req` \[10%]        | How much should the Valve minimally be in (%) to run the heating test                                                 |
    | `Heating Start Command` \[100%]    | To what percentage do we want to test the opening operation                                                           |
    | `Start Heating Weight` \[4]        | Weight on the overall test assigned to this sequence                                                                  |

    ***
  </Tab>

  <Tab title="Induce heat/cool feedback" icon="activity">
    ### Testing procedure

    ### Pre-conditions check

    *Before testing is started, it must be verified that the unit is in operation.*

    **Verify that device is `Occupied`.**

    <Warning>
      If this condition is not met, STOP the workflow and ARCHIVE.
    </Warning>

    ### Test the Fan

    **Test 1: Stop the Fan** *Weight: 1/10*

    * Command the fan to `OFF`
    * Pass if *Fan Speed* is reports to be less than `5%` \[Fan Max Threshold]

    **Test 2: Start the Fan** *Weight: 1/10*

    * Command the fan to `ON`
    * Pass: *Fan Percentage* >= `10%` \[Fan Min Threshold]

    <Warning>
      If Test 1 or Test 2 FAIL, STOP the workflow.
    </Warning>

    ### Test Heating

    *There are two methods available to verify successful heating operation. You can use a static setpoint (`DAT Heating Arb Threshold`) that the discharge temperature must reach, or you can set a minimum change in temperature (`Heating - Delta`) to validate heating had occurred.*

    *Use the boolean parameter, `Arb Setpoint`, to choose the method, with the default (False) indicating the use of the delta for verification.*

    **Test 3: Start Heating Operation** *Weight: 4/10*

    If `Arb Setpoint` \[False]:

    * Command *zone temp setpoint* to `5△°F` \[Delta Setpoint] above the *zone temp* sensor reading
    * Pass if *Discharge Air* is `5△°F` \[Heating - Delta] greater than the *zone temperature* sensor reading

    Otherwise if `Arb Setpoint` is True:

    * Command *zone temp setpoint* to `80°F` \[Arb Heating Setpoint]
    * Pass if *Discharge Air* is less than `28°F` \[DAT Heating Arb Threshold]

    ### Test Cooling

    **Test 4: Start Cooling Operation** *Weight: 4/10*

    If `Arb Setpoint` \[False]:

    * Command *Zone Temp Setpoint* to `5△°F` \[Delta Setpoint] less than *Zone Temp*
    * Pass if *Discharge Air* is `5△°F` \[Cooling - Delta] less than *Zone Temp*

    Otherwise if `Arb Setpoint` is True:

    * Command *Zone Temp Setpoint* to `65°F` \[Arb Cooling Setpoint]
    * Pass if *Discharge Air* is less than `18°F` \[DAT Cooling Arb Threshold]

    ### Parameters

    | Display                             | Hint                                                                                                                  |
    | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
    | `Stop Fan Weight` \[1]              | Weight on the overall test assigned to this sequence                                                                  |
    | `Heating Operation Weight` \[4]     | Weight on the overall test assigned to this sequence                                                                  |
    | `Cooling Delta` \[5△°F]             | The threshold tolerance for cooling. Delta between ZT and DAT.                                                        |
    | `Fan Max Threshold` \[5%]           | The maximum threshold (%) for a fan off status                                                                        |
    | `Fan Min Threshold` \[10%]          | The minimum threshold (%) for a fan on status                                                                         |
    | `Reaction Time` \[240sec]           | How long to wait for the actuators to fully do their job                                                              |
    | `Stabilization Time` \[60sec]       | How long to wait for the system to come to stability after an actuator command and the conditions have been fulfilled |
    | `Measure After` \[60sec]            | How long to wait in seconds to start checking the feedback readings                                                   |
    | `Heating Delta` \[5△°F]             | The threshold tolerance for heating. Delta between ZT and DAT.                                                        |
    | `DAT Cooling Arb Threshold` \[18°F] | The DAT below which there would be indication of cooling                                                              |
    | `DAT Heating Arb Threshold` \[28°F] | The DAT above which there would be indication of heating                                                              |
    | `Arb Setpoint` \[False]             | If true, will use "Arbitrary Setpoint" for the new Temp Setpoint                                                      |
    | `Arb Cooling Setpoint` \[65°F]      | Setpoint to induce cooling mode                                                                                       |
    | `Arb Heating Setpoint` \[80°F]      | Setpoint to induce heating mode                                                                                       |
    | `Delta Setpoint` \[5△°F]            | Delta above which we want to induce cooling/heating mode                                                              |
    | `Start Fan Weight` \[1]             | Weight on the overall test assigned to this sequence                                                                  |
    | `Cooling Operation Weight` \[4]     | Weight on the overall test assigned to this sequence                                                                  |

    ### Related workflows

    <Info>
      **VAV/FCU - Induce heating and check for feedback:** Tests heating only (no cooling sequence). Uses the same parameters and verification methods. Weight distribution: Stop Fan 1/6, Start Fan 1/6, Heating Operation 4/6.
    </Info>

    <Info>
      **VAV/FCU - Induce cooling and check for feedback:** Tests cooling only (no heating sequence). Fan is checked but not commanded. Weight distribution: Stop Fan 1/5, Cooling Operation 4/5.
    </Info>
  </Tab>
</Tabs>

## Next steps

<CardGroup cols={2}>
  <Card title="Deployment guide" icon="rocket" href="/products/ftt/deployment" arrow={true}>
    Calibrate parameters and schedule seasonal VAV testing.
  </Card>

  <Card title="FCU workflows" icon="thermometer" href="/products/ftt/fcu-workflows" arrow={true}>
    Explore the FCU workflow library for fan, heating, and cooling tests.
  </Card>

  <Card title="AHU workflows" icon="wind" href="/products/ftt/ahu-workflows" arrow={true}>
    Explore the AHU workflow library for damper, heating, cooling, and VFD tests.
  </Card>

  <Card title="FTT projects" icon="folder-kanban" href="/products/ftt/projects" arrow={true}>
    Assign workflows to devices and schedule automated testing.
  </Card>
</CardGroup>
