> For the complete documentation index, see [llms.txt](https://docs.zingg.ai/zingg/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zingg.ai/zingg/running-zingg/step-by-step-guide.md).

# Step-by-Step Overview

The complete Zingg workflow from setup to match output is your mental model for the entire Zingg docs site.

Zingg works in phases. Each phase performs a specific task and produces an output that the next phase depends on. You do not need to run all phases every time. Once the model is trained, you run `match`, `link`, or `runIncremental` directly.

The steps below represent the complete workflow from first setup to production matching. This page describes the workflow you follow once Zingg is installed.

{% hint style="success" icon="right-long" %}
This page describes the workflow you follow once Zingg is installed.\
For installing Zingg on your platform → [Install Zingg](/zingg/running-zingg/install-zingg.md).

New to entity resolution or want to understand the problem space before diving in? → [Entity Resolution](/zingg/entity-resolution.md)
{% endhint %}

{% stepper %}
{% step %}

### Configure

<details>

<summary>Define your data and output</summary>

{% hint style="success" icon="right-long" %}
**Read more**: [Configure your Data](/zingg/connect-your-data/pipes-and-data-connections.md)
{% endhint %}

Configure input and output pipes to tell Zingg where your source data lives and where to write results. Zingg connects to the data where it lives - it does not move it.

</details>

<details>

<summary>Configure fields</summary>

{% hint style="success" icon="right-long" %}
**Read more**: [Configure your Data](/zingg/connect-your-data/pipes-and-data-connections.md)
{% endhint %}

Define your field definitions, match types, relevant Enterprise features (deterministic matching, primary key, pass through, standardization). The configuration drives every downstream phase.

</details>

<details>

<summary>Configure model id and performance settings<br></summary>

Separate different models through model ids, define number of partitions and labelDataSampleSize for faster running jobs.

</details>
{% endstep %}

{% step %}

### Find and Label Training Pairs

Run `findTrainingData` to generate candidate pairs, then label each pair as Match, No Match, or Uncertain. Zingg selects the most informative pairs, not random samples. Repeat the find-and-label cycle until all field types and data variation patterns in your schema are represented in your labeled data.

{% hint style="success" icon="right-long" %}
**Read more**:

* [Create Training Data](/zingg/running-zingg/create-training-data.md)
* [Label Training Pairs](/zingg/running-zingg/create-training-data/label-training-pairs.md)
  {% endhint %}
  {% endstep %}

{% step %}

### Verify Blocking (Enterprise Only)

Run `verifyBlocking` to check what percentage of your known matching pairs are being blocked together correctly. Run after labelling and before committing to a full training run. If coverage is low, return to labelling.

{% hint style="success" icon="right-long" %}
**Read more**: [Verify Blocking](/zingg/running-zingg/create-training-data/verify-blocking.md)
{% endhint %}
{% endstep %}

{% step %}

### Verify Model (Optional)

Run `generateDocs` to produce a human-readable HTML report of your training data, including pairs labeled as matches and non-matches. Useful for sharing with subject-matter experts for feedback before training. Run `updateLabel` if needed to incorporate SME comments.

{% hint style="success" icon="right-long" %}
**Read more**: [Generate Model Documentation](/zingg/running-zingg/generate-model-documentation.md)
{% endhint %}
{% endstep %}

{% step %}

### Build and Save the Model

Run `train` to build and save the blocking and similarity models from your labelled training data. Models are written to `zinggDir/modelId` and can be reused on new data without retraining.

{% hint style="success" icon="right-long" %}
**Read more**: [Build and Save the Model](/zingg/running-zingg/build-and-save-the-model.md)
{% endhint %}
{% endstep %}

{% step %}

### Match or Link across Datasets

Apply the trained model to your data:

* Run `match` to find duplicates within a single dataset
* Run `link` to match records across two or more separate datasets

`match` and `link` are two equal operations using the same trained model. As long as your input columns and field types are not changing, you do not need to rebuild the model.

{% hint style="success" icon="right-long" %}
**Read more**:

* [Run the Match Phase](/zingg/running-zingg/run-the-match-phase.md)
* [Link across Datasets](/zingg/running-zingg/link-across-datasets.md)
  {% endhint %}
  {% endstep %}

{% step %}

### Interpret Output

Review output scores to understand match quality. Use `Z_MINSCORE` and `Z_MAXSCORE` to set confidence thresholds for automated vs human-reviewed clusters.

Run `explain` to understand cluster formation and check the output statistics (Enterprise Only) to understand and explain matches.

{% hint style="success" icon="right-long" %}
**Read more**: [Interpret Output Scores](/zingg/interpreting-results/interpret-output-scores.md)
{% endhint %}
{% endstep %}

{% step %}

### Tune (if needed)

If match results need improvement, return to find-and-label with focused training data for the patterns being missed, then retrain. Remove stopwords from fields like addresses and company names to improve blocking.

If the Zingg job is slow, add more labels. The blocking model learns from the labels and adding more matches will help it branch better.

{% hint style="success" icon="right-long" %}
**Read more**: [Improve Accuracy](/zingg/tuning/improve-accuracy.md)
{% endhint %}
{% endstep %}
{% endstepper %}

{% hint style="warning" icon="right-long" %}
Enterprise: 7 production-grade notebooks, one per phase, with step-isolated execution and\
full Python API support. [Talk to us about Enterprise](https://www.zingg.ai/company/contact/contact)
{% endhint %}

{% hint style="success" icon="right-long" %}
**Read more**:

* Understanding the concepts behind each phase - [Overview section](/zingg/readme.md) | [Concepts glossary](/zingg/frequently-asked-questions/concept-glossary.md)
* [Configure Zingg](/zingg/running-zingg/configure-zingg.md) - full configuration reference
* [Interpret Output Scores](/zingg/interpreting-results/interpret-output-scores.md) - every output column and how to read scores
* [Zingg\_ID and Z\_Cluster](/zingg/zingg-concepts/z-cluster-and-zingg-id.md) - Community vs Enterprise identifiers in your output
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.zingg.ai/zingg/running-zingg/step-by-step-guide.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
