Documentation / Build

Join parallel résumé checks

A root phase starts independent analysis branches. The final phase waits for both parents.

Simulated business logic; no AWS or AI calls. From the runner checkout. Download the displayed JSON into the checkout root. The local runner reads JSON.

Run the recipe

shell
cargo run --locked --bin rippflow-local -- \
  resume.workflow.json \
  --handler "python3 examples/python/handler.py"

Expected: analysis and issue-review branches complete, followed by finalize-resume-analysis. No résumé or model credentials are needed.

Workflow definition

JSON

json
{
  "name": "resume-analysis",
  "version": "2.0.0",
  "default_group": "python-standard",
  "phases": {
    "resume-analysis": {
      "requires": [],
      "service": "resume-analysis",
      "scope": "root",
      "mode": "sync_lambda",
      "inputs": {
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "resume-scope-runner": {
      "requires": [
        "resume-analysis"
      ],
      "service": "resume-scope",
      "scope": "root",
      "inputs": {
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "resume-compensation-runner": {
      "requires": [
        "resume-scope-runner"
      ],
      "service": "resume-compensation",
      "scope": "root",
      "inputs": {
        "from": "resume-scope-runner",
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "resume-role-modeling-runner": {
      "requires": [
        "resume-compensation-runner"
      ],
      "service": "resume-role-modeling",
      "scope": "root",
      "inputs": {
        "from": "resume-compensation-runner",
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "resume-editor-runner": {
      "requires": [
        "resume-role-modeling-runner"
      ],
      "service": "resume-editor",
      "scope": "root",
      "inputs": {
        "from": "resume-role-modeling-runner",
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "resume-talking-points-runner": {
      "requires": [
        "resume-editor-runner"
      ],
      "service": "resume-talking-points",
      "scope": "root",
      "inputs": {
        "from": "resume-editor-runner",
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "resume-issue-review-runner": {
      "requires": [
        "resume-scope-runner"
      ],
      "service": "resume-issue-review",
      "scope": "root",
      "inputs": {
        "from": "resume-scope-runner",
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis",
        "documentKind": "resume"
      }
    },
    "finalize-resume-analysis": {
      "requires": [
        "resume-talking-points-runner",
        "resume-issue-review-runner"
      ],
      "service": "finalize",
      "scope": "root",
      "mode": "sync_lambda",
      "terminal": true,
      "inputs": {
        "serviceType": "resume-analysis",
        "workflowType": "resume_analysis"
      }
    }
  }
}

YAML

yaml
name: resume-analysis
version: 2.0.0
default_group: python-standard
phases:
  resume-analysis:
    requires: []
    service: resume-analysis
    scope: root
    mode: sync_lambda
    inputs:
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  resume-scope-runner:
    requires:
      - resume-analysis
    service: resume-scope
    scope: root
    inputs:
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  resume-compensation-runner:
    requires:
      - resume-scope-runner
    service: resume-compensation
    scope: root
    inputs:
      from: resume-scope-runner
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  resume-role-modeling-runner:
    requires:
      - resume-compensation-runner
    service: resume-role-modeling
    scope: root
    inputs:
      from: resume-compensation-runner
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  resume-editor-runner:
    requires:
      - resume-role-modeling-runner
    service: resume-editor
    scope: root
    inputs:
      from: resume-role-modeling-runner
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  resume-talking-points-runner:
    requires:
      - resume-editor-runner
    service: resume-talking-points
    scope: root
    inputs:
      from: resume-editor-runner
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  resume-issue-review-runner:
    requires:
      - resume-scope-runner
    service: resume-issue-review
    scope: root
    inputs:
      from: resume-scope-runner
      serviceType: resume-analysis
      workflowType: resume_analysis
      documentKind: resume
  finalize-resume-analysis:
    requires:
      - resume-talking-points-runner
      - resume-issue-review-runner
    service: finalize
    scope: root
    mode: sync_lambda
    terminal: true
    inputs:
      serviceType: resume-analysis
      workflowType: resume_analysis

Download: JSON · YAML

Verified sources

Checked 2026-11-05.

Let's talk

Contact Rippflow

Tell us about your workflows, deployment or pricing.

We'll reply to your email.

Search docs

Search workflows, handlers and operations.