# Building Conditional Workflow

Now you'll create a workflow that uses conditional branching to route content through two different processing paths.

## Creating the Conditional Workflow

Add this workflow to your file:

```typescript
export const conditionalWorkflow = createWorkflow({
  id: 'conditional-workflow',
  description: 'Content processing with conditional branching',
  inputSchema: z.object({
    content: z.string(),
    type: z.enum(['article', 'blog', 'social']).default('article'),
  }),
  outputSchema: z.object({
    processedContent: z.string(),
    processingType: z.string(),
    recommendations: z.array(z.string()),
  }),
})
  .then(assessContentStep)
  .branch([
    // Branch 1: Short and simple content
    [async ({ inputData }) => inputData.category === 'short' && inputData.complexity === 'simple', quickProcessingStep],
    // Branch 2: Everything else
    [
      async ({ inputData }) => !(inputData.category === 'short' && inputData.complexity === 'simple'),
      generalProcessingStep,
    ],
  ])
  .commit()
```

## Understanding the Conditions

1. **Short + Simple**: Quick processing with minimal recommendations
2. **Everything Else**: General processing with more suggestions

## Multiple Conditions

You can combine conditions using logical operators:

- **`&&`**: AND - both conditions must be true
- **`||`**: OR - either condition can be true
- **`!`**: NOT - condition must be false

## Condition Evaluation

- Conditions are checked in order
- Multiple conditions can be true (steps run in parallel)
- If no conditions match, the branch is skipped

Next, you'll test this conditional workflow with different types of content!
