Cross-Provider Workflow

Claude Lead Enrichment to Airtable and Slack

Version 1.0.0

Enrich a lead note with Claude, save it to Airtable, then notify Slack.

1 workflow 3 source APIs 3 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

claude airtable slack

Workflows

enrich-store-notify
Enrich a lead with Claude, store it in Airtable, then notify Slack.
Calls Claude to summarize a raw lead note, stores the summary in Airtable, and posts a Slack notification linking the stored record.
3 steps inputs: baseId, channel, leadNote, model, tableIdOrName outputs: messageTs, recordId, summary
1
enrich-lead
$sourceDescriptions.claudeApi.createMessage
Ask Claude to turn the raw lead note into a structured summary.
2
store-lead
$sourceDescriptions.airtableApi.createRecords
Store the enriched lead summary in an Airtable record.
3
notify-sales
$sourceDescriptions.slackApi.postChatPostmessage
Notify the sales team in Slack about the stored lead.

Source API Descriptions

Arazzo Workflow Specification

ai-claude-enrich-to-airtable-slack-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Claude Lead Enrichment to Airtable and Slack
  summary: Enrich a lead note with Claude, save it to Airtable, then notify Slack.
  description: >-
    A cross-provider AI enrichment chain that has Claude turn a raw lead note into
    a structured summary, stores it in Airtable, and notifies the sales team in
    Slack. Demonstrates an AI enrichment step fanning out to a record store and a
    chat channel across three providers in one Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: claudeApi
    url: https://raw.githubusercontent.com/api-evangelist/claude/refs/heads/main/openapi/claude-messages-api.yml
    type: openapi
  - name: airtableApi
    url: https://raw.githubusercontent.com/api-evangelist/airtable/refs/heads/main/openapi/airtable-airtable-api-openapi.yml
    type: openapi
  - name: slackApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: enrich-store-notify
    summary: Enrich a lead with Claude, store it in Airtable, then notify Slack.
    description: >-
      Calls Claude to summarize a raw lead note, stores the summary in Airtable,
      and posts a Slack notification linking the stored record.
    inputs:
      type: object
      properties:
        leadNote:
          type: string
        model:
          type: string
        baseId:
          type: string
        tableIdOrName:
          type: string
        channel:
          type: string
    steps:
      - stepId: enrich-lead
        description: Ask Claude to turn the raw lead note into a structured summary.
        operationId: $sourceDescriptions.claudeApi.createMessage
        requestBody:
          contentType: application/json
          payload:
            model: $inputs.model
            max_tokens: 300
            messages:
              - role: user
                content: "Summarize this lead note into company, need, and next step: $inputs.leadNote"
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          summary: $response.body#/content/0/text
      - stepId: store-lead
        description: Store the enriched lead summary in an Airtable record.
        operationId: $sourceDescriptions.airtableApi.createRecords
        requestBody:
          contentType: application/json
          payload:
            records:
              - fields:
                  Note: $inputs.leadNote
                  Summary: $steps.enrich-lead.outputs.summary
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          recordId: $response.body#/records/0/id
      - stepId: notify-sales
        description: Notify the sales team in Slack about the stored lead.
        operationId: $sourceDescriptions.slackApi.postChatPostmessage
        requestBody:
          contentType: application/x-www-form-urlencoded
          payload:
            channel: $inputs.channel
            text: "New enriched lead stored (record $steps.store-lead.outputs.recordId): $steps.enrich-lead.outputs.summary"
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageTs: $response.body#/ts
    outputs:
      summary: $steps.enrich-lead.outputs.summary
      recordId: $steps.store-lead.outputs.recordId
      messageTs: $steps.notify-sales.outputs.messageTs