← All workflows

Sales operations & small business owners

CRM import review

An import review package with duplicates, missing fields and malformed email syntax flagged.

The automation

  1. fingerprintfile.metadata@1

    Independent starting step

  2. parsecsv.clean@1

    Independent starting step

  3. reviewcontacts.review@1

    After: parse

Run through MCP

Workflow call
{
  "name": "piwi_workflow_crm_import_review",
  "arguments": {
    "input": {
      "csv": "name,email\nAda,[email protected]\nGrace,[email protected]\nRepeat,[email protected]\nMissing,\nWrong,not-email",
      "emailField": "email",
      "requiredFields": [
        "name",
        "email"
      ]
    }
  }
}

Verified execution

The result below was produced by executing the documented input through MCP and Docker. The input is authored demonstration data; it contains no customer records.

Returned business report
{
  "review": {
    "accepted": [
      {
        "name": "Ada",
        "email": "[email protected]"
      },
      {
        "name": "Grace",
        "email": "[email protected]"
      }
    ],
    "issues": [
      {
        "record": 4,
        "reasons": [
          "duplicate-email"
        ]
      },
      {
        "record": 5,
        "reasons": [
          "missing:email",
          "invalid-email"
        ]
      },
      {
        "record": 6,
        "reasons": [
          "invalid-email"
        ]
      }
    ],
    "structuralErrors": [],
    "summary": {
      "parsed": 5,
      "accepted": 2,
      "flagged": 3,
      "structuralErrors": 0
    },
    "readyForReview": false
  },
  "source": {
    "sha256": "fb10afd480909efb30a6ed78974aa85ce49fdde9513935a26e9036429bbef439",
    "bytes": 102,
    "encoding": "utf8"
  }
}
Inspect execution ID, timestamps and step statuses
Actual execution record
{
  "executionId": "run.0f782a60-2bbc-48fb-ab46-cec399c0506d",
  "workflow": "crm-import-review@1",
  "status": "succeeded",
  "startedAt": "2026-10-18T15:45:55.118Z",
  "completedAt": "2026-10-18T15:45:56.956Z",
  "steps": [
    {
      "id": "parse",
      "tool": "csv.clean@1",
      "status": "succeeded",
      "calls": 1
    },
    {
      "id": "fingerprint",
      "tool": "file.metadata@1",
      "status": "succeeded",
      "calls": 1
    },
    {
      "id": "review",
      "tool": "contacts.review@1",
      "status": "succeeded",
      "calls": 1
    }
  ],
  "output": {
    "review": {
      "accepted": [
        {
          "name": "Ada",
          "email": "[email protected]"
        },
        {
          "name": "Grace",
          "email": "[email protected]"
        }
      ],
      "issues": [
        {
          "record": 4,
          "reasons": [
            "duplicate-email"
          ]
        },
        {
          "record": 5,
          "reasons": [
            "missing:email",
            "invalid-email"
          ]
        },
        {
          "record": 6,
          "reasons": [
            "invalid-email"
          ]
        }
      ],
      "structuralErrors": [],
      "summary": {
        "parsed": 5,
        "accepted": 2,
        "flagged": 3,
        "structuralErrors": 0
      },
      "readyForReview": false
    },
    "source": {
      "sha256": "fb10afd480909efb30a6ed78974aa85ce49fdde9513935a26e9036429bbef439",
      "bytes": 102,
      "encoding": "utf8"
    }
  }
}