The AI Schedule Generation feature uses artificial intelligence to automatically fill open shifts on your schedule. Instead of manually assigning each employee to each shift, AI analyzes your team's availability, hours preferences, roles, and your optimization priorities to generate a complete schedule in under a minute.

![AI Schedule Generation Overview](/images/support/articles/ai_schedule_overview.png)

*The AI Schedule Generation button appears in your schedule calendar header.*

---

## Who Can Use AI Scheduling?

AI Schedule Generation is available to stores on a **Premium** or **Premium+** subscription. Users need the `Generate AI Schedules` permission enabled by their store admin.

---

## How It Works

AI scheduling follows a simple three-step flow: **Configure, Generate, Review & Apply**.

1. You tell the AI what matters most (cost, fairness, coverage, seniority)
2. The AI analyzes all open shifts, employee availability, hours targets, and role qualifications
3. You review every suggestion before anything is applied to your schedule

> **Tip:** AI will never overwrite shifts you've already assigned manually. It only fills open (unassigned) shifts.

---

## Step 1: Open the AI Configuration

1. Navigate to the **Schedule Calendar** and select the week you want to schedule
2. Click the `Generate with AI` button in the calendar header (robot icon)

![Generate with AI Button](/images/support/articles/ai_schedule_button.png)

The configuration modal opens with your generation settings.

---

## Step 2: Configure Your Priorities

![AI Configuration Modal](/images/support/articles/ai_schedule_config.png)

The configuration modal has several sections:

### Usage Counter

At the top, you'll see how many AI runs you've used this pay period. The default limit is **5 runs per pay period**, which resets automatically.

### Schedule Week

This shows which week will be scheduled (matching your calendar selection) and how many open shifts need to be filled. This is informational and cannot be changed here — navigate to a different week on the calendar to change it.

### Optimization Priorities

This is the most important setting. **Drag and drop** the four priorities to rank them from most to least important:

| Priority | What It Does |
|----------|-------------|
| **Labor Cost** | Assigns lower-rate employees when possible to minimize payroll |
| **Hours Fairness** | Distributes hours evenly so everyone gets close to their requested hours |
| **Seniority** | Prefers employees with more tenure for shift assignments |
| **Position Coverage** | Ensures each shift is filled by someone qualified for that role |

The item at the top (rank 1) gets the highest weight. Drag the handle on the left side of each item to reorder.

> **Tip:** For most stores, keeping **Position Coverage** in the top two ensures you always have the right roles covered. Pair it with **Labor Cost** to optimize spending, or **Hours Fairness** to keep your team happy.

### Custom Instructions (Optional)

Add any special considerations in the text box (up to 500 characters). For example:
- "Sarah prefers morning shifts"
- "Need extra coverage on Saturday"
- "Don't schedule new hires for opening shifts"

The AI reads these instructions and factors them into its decisions.

### Owner Scheduling

By default, store owners are **excluded** from AI scheduling. Use the toggle switches to include specific owners. Each owner shows their availability status:

- **Available** — Has open capacity for the week
- **Partial** — Available some days but not others
- **Unavailable** — At max hours or no availability set
- **No Data** — No availability records exist

### Additional Options

- **Email me when schedule is ready** — Get notified when generation completes (useful if you navigate away)
- **Save these settings as defaults** — Your priorities, custom instructions, and owner preferences will be remembered for next time

---

## Step 3: Generate the Schedule

Click `Generate Schedule` to start. The modal closes and a status indicator appears in the calendar header showing **"AI is generating schedule..."**

![Generating Status](/images/support/articles/ai_schedule_generating.png)

Generation typically takes **30-60 seconds**. You can:

- Continue working on other tasks
- Navigate to other pages
- The schedule will be ready when you return

If you need to stop a generation in progress, click the **X** button next to the status indicator.

> **Tip:** If you already have AI-generated shifts for this week and generate again, you'll see a warning that existing AI assignments will be replaced. Manually-assigned shifts are never affected.

---

## Step 4: Review AI Suggestions

When generation completes, the **AI Schedule Suggestions** panel opens automatically. If you navigated away, return to the schedule calendar and the suggestions will load.

![AI Preview Panel](/images/support/articles/ai_schedule_preview.png)

### Summary Statistics

At the top, four metrics give you a quick overview:

| Metric | Description |
|--------|-------------|
| **Shifts Filled** | How many open shifts the AI successfully assigned |
| **Remaining Open** | Shifts the AI couldn't fill (no qualified/available employees) |
| **Total Hours** | Combined hours across all suggested assignments |
| **Est. Labor Cost** | Projected labor cost for the suggested assignments |

### AI Schedule Summary

Below the stats, the AI provides a **plain-English explanation** of its key decisions. This might include which priorities drove the assignments, why certain shifts couldn't be filled, and notable scheduling choices.

![AI Summary](/images/support/articles/ai_schedule_summary.png)

### Hours Distribution

Click the expand arrow to see a breakdown of hours per employee:

| Column | Description |
|--------|-------------|
| **Employee** | Team member name |
| **Existing Hours** | Hours already on the schedule from manual assignments |
| **+New Hours** | Additional hours from AI suggestions |
| **Total** | Combined hours for the week |
| **OT Hours** | Any overtime hours (highlighted if applicable) |

This helps you spot potential overtime issues before applying the schedule.

### Day-by-Day Assignments

Assignments are organized into **tabs for each day of the week** (Mon through Sun). Each tab shows a badge with the number of assignments for that day.

![Day Tabs](/images/support/articles/ai_schedule_day_tabs.png)

---

## Step 5: Review Individual Assignments

Each assignment card shows:

- **Employee name** and **role badge** (e.g., Cashier, Buyer, Shift Lead)
- **Shift time** and **duration**
- **Estimated labor cost** for that shift
- **Overtime badge** if the assignment would push the employee into overtime

![Assignment Card](/images/support/articles/ai_schedule_assignment_card.png)

### Why This Assignment?

Click the expandable section on any assignment to see the AI's reasoning. This explains *why* this specific employee was chosen — for example:

- "Lower hourly rate and full availability for this time slot"
- "Only qualified Shift Lead available during this window"
- "Closest to requested hours target without triggering overtime"

### Unfilled Shifts

If the AI couldn't fill a shift, it appears with an orange indicator and explains *why* — for example, no qualified employees available, everyone at max hours, or time-off conflicts.

### Locked Shifts

Manager and owner recurring shifts appear in a grayed-out section at the bottom. These are **not editable** by AI and are shown for reference only.

---

## Step 6: Select and Apply

Each assignment has a **checkbox** that is pre-checked by default. You can:

- **Uncheck** individual assignments you don't want to apply
- Use `Select All` or `Select None` for bulk control
- The selection counter shows "X of Y selected"

When you're satisfied with your selections:

1. Click `Apply Selected`
2. A confirmation dialog shows how many assignments will be applied
3. Click `Confirm` to commit the assignments to your schedule

![Apply Confirmation](/images/support/articles/ai_schedule_apply.png)

The schedule calendar updates immediately with the new assignments.

### Dismissing Suggestions

If you don't want to use any of the suggestions, click `Dismiss All`. This discards the entire suggestion set. You can generate again if you have runs remaining.

---

## Tips for Best Results

- **Set availability first** — AI can only schedule employees who have availability set for the week. Remind your team to update their availability.
- **Set hours preferences** — The more accurate each employee's requested/min/max hours are, the better the AI can distribute shifts fairly.
- **Use custom instructions** — The AI responds well to natural language preferences. Be specific about what you need.
- **Review overtime** — Always check the hours distribution before applying, especially near the end of a pay period.
- **Iterate if needed** — If the first result isn't quite right, adjust your priorities or instructions and generate again.

---

## Frequently Asked Questions

### Can AI scheduling overwrite my manual assignments?
No. AI only fills **open (unassigned) shifts**. Any shifts you've manually assigned are left untouched.

### What happens if I generate again for the same week?
You'll see a warning that existing AI assignments will be replaced with new suggestions. Manually-assigned shifts are never affected.

### How many times can I generate per week?
The default limit is **5 runs per pay period**. Your usage counter is shown in the configuration modal. This resets at the start of each pay period.

### Can I edit assignments after applying?
Yes. Once applied, AI assignments become regular shift assignments. You can edit, move, or delete them like any other shift.

### Why couldn't the AI fill some shifts?
Common reasons include: no qualified employees available during that time slot, all eligible employees at max hours, or time-off conflicts. Expand the unfilled shift to see the specific reason.

### Does the AI consider overtime?
Yes. The AI tracks both weekly overtime (40+ hours) and factors current pay period hours into its decisions. Assignments that would trigger overtime are flagged with an **OT** badge.

---

## Troubleshooting

### "You've reached the weekly generation limit"
You've used all 5 runs for the pay period. Wait until the next pay period for the counter to reset, or contact your admin.

### "A job is already pending for this week"
A previous generation is still processing. Wait for it to complete, or click `Cancel Job` to stop it and try again.

### AI suggestions appear stale (yellow warning)
The schedule was modified after suggestions were generated. Review carefully — some suggestions may no longer be valid. Consider dismissing and regenerating for updated results.

### Generation failed
This can happen if there are connectivity issues or no open shifts to fill. Check that you have open shifts for the selected week and try again.

---

## Related Articles

- [Schedule Calendar Overview](/support/articles/schedule-calendar)
- [Managing Employee Availability](/support/articles/employee-availability)
- [Setting Hours Preferences](/support/articles/hours-preferences)
- [Understanding Overtime Rules](/support/articles/overtime-rules)
- [Team Management](/support/articles/team-management)
