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

# Customer Due Diligence (CDD) Flow

> Overview of how a CDD case progresses through the workflow

The Customer Due Diligence (CDD) process runs through two high-level workflows. One workflow collects data about the customer and the second performs the checks and creates the final report.

## Workflows

1. **Data collection** – gathers registry information, online screening results and optional catalog data or reviews. When complete, the case moves on to the checks workflow.
2. **Checks** – performs risk and compliance checks using the gathered information and generates the CDD report.

## Case States

A CDD case moves through several high level states which are returned by the API:

| State            | Description                                                                   |
| ---------------- | ----------------------------------------------------------------------------- |
| `INITIATED`      | The case was created and is waiting to start processing.                      |
| `IN_PROGRESS`    | The system is gathering data such as registry records and online information. |
| `RUNNING_CHECKS` | Risk an Compliance checks are running and a report is being produced.         |
| `COMPLETED`      | Checks finished successfully and the final report is available.               |
| `INCONCLUSIVE`   | Processing finished but did not collect enough structured data.               |
| `FAILED`         | An unrecoverable error occurred during processing.                            |

## Transitions

The diagram below illustrates the typical flow between states:

```mermaid theme={null}
stateDiagram
    INITIATED --> IN_PROGRESS
    IN_PROGRESS --> RUNNING_CHECKS
    IN_PROGRESS --> FAILED
    RUNNING_CHECKS --> COMPLETED
    COMPLETED --> RUNNING_CHECKS
    RUNNING_CHECKS --> INCONCLUSIVE
    RUNNING_CHECKS --> FAILED
```

The data collection workflow moves the case from `INITIATED` to `IN_PROGRESS` and then hands it off to the checks workflow, which brings the case into the `RUNNING_CHECKS` state. Failures in either workflow transition the case to `FAILED`.
