Back to All Guides
Premium AI Feature

AI Copilot Complete Guide

Master XShift AI Copilot: 13 conversational commands, voice-to-text, and intelligent automation. HEAD_MANAGER and MANAGER only.

15 min read
13 AI Commands
5 Feature Tabs

Accessing AI Copilot

How to access and who can use AI Copilot

Access Requirements

  • • Available to HEAD_MANAGER and MANAGER roles only
  • • EMPLOYEE role cannot access AI Copilot
  • • Navigate to: /{orgId}/ai-copilot
  • • Link in left sidebar navigation: "AI Copilot" with bot icon
  • • Page title: "🤖 AI Copilot - Your Intelligent Scheduling Assistant"
  • • Requires organization data: shifts, employees, clock entries
  • • Works best with 2+ weeks of historical data
  • • Default tab: "Ask AI" (chat interface)

Ask AI - Conversational Commands (23 Actions)

All 18 AI actions you can perform via natural language

1. Create Shift

  • Command: "Create a shift for [date] from [start time] to [end time] at [location]"
  • Function: create_shift
  • Parameters:
  • - date: YYYY-MM-DD format (e.g., "2025-12-25")
  • - startTime: HH:MM 24-hour format (e.g., "09:00", "14:30")
  • - endTime: HH:MM 24-hour format (e.g., "17:00", "22:00")
  • - locationName: Name of location
  • - required: Number of employees needed (default: 1)
  • Example: "Create a shift for 2025-12-25 from 09:00 to 17:00 at Downtown Store"
  • Response: "✓ Shift created successfully! It has been added to your schedule."
  • • Status: Draft if requirePublishApproval enabled, published otherwise
  • • Employees notified via email if published

2. Create Recurring Shifts

  • Command: "Create recurring shifts every [days of week] from [start time] to [end time] at [location] for the next [number] days"
  • Function: create_recurring_shift
  • Parameters:
  • - name: Pattern name (e.g., "Monday Morning Shift")
  • - startTime: HH:MM format
  • - endTime: HH:MM format
  • - locationName: Location name
  • - pattern: "daily", "weekly", "monthly", or "custom_frequency"
  • - durationDays: Number of days to generate (e.g., 30, 90)
  • - daysOfWeek: For weekly - [0-6] where 0=Sunday, 6=Saturday
  • - customFrequency: For custom - repeat every X days
  • - required: Employees needed per shift (default: 1)
  • Example: "Create recurring shifts every Monday and Wednesday from 09:00 to 17:00 at Main Office for the next 30 days"
  • Response: "✓ Recurring shift pattern created successfully! X shifts have been added to your schedule."
  • • Supports: Daily, weekly (specific days), monthly, custom intervals

3. Auto-Assign All Shifts

  • Command: "Auto-assign employees to all open shifts"
  • Function: auto_assign_all_shifts
  • Parameters:
  • - preserveExisting: Keep existing assignments (default: true)
  • How it works:
  • - Uses round-robin algorithm for fair distribution
  • - Only assigns to existing shifts (does not create new ones)
  • - Checks employee availability and conflicts
  • - Respects role requirements if enabled
  • - Distributes evenly across all employees
  • Example: "Auto-assign employees to all open shifts"
  • Response: "✓ Successfully assigned X employees to shifts! All affected employees and managers have been notified via email."
  • IMPORTANT: Must have existing shifts created first
  • • Use "create_shift" or "create_recurring_shift" if no shifts exist

4. Generate Schedule (Advanced)

  • Command: "Generate schedule from [start date] to [end date] with [FAIR or MAX] mode"
  • Function: generate_schedule
  • Parameters:
  • - cycleStart: Start date YYYY-MM-DD
  • - cycleEnd: End date YYYY-MM-DD
  • - mode: "FAIR" or "MAX"
  • FAIR Mode (Fair Rotation):
  • - Distributes shifts evenly among ALL employees
  • - Everyone gets similar hours
  • - Best for: Teams where equal distribution is priority
  • MAX Mode (Maximize Hours):
  • - Prioritizes employees who want more hours
  • - Fills schedules for high-availability employees first
  • - Best for: Part-time heavy teams, flexible workforce
  • Example: "Generate schedule from 2025-12-01 to 2025-12-07 with FAIR mode"
  • Response: "✓ Successfully generated schedule! Assigned X shift slots with a total of Y hours using [Fair Rotation/Maximize Hours] mode."
  • • Respects: Availability, role requirements, PTO, conflicts
  • IMPORTANT: Only assigns to existing shifts in date range

5. Assign Employees to Shift

  • Command: "Assign [employee name] to the [morning/afternoon/evening] shift on [date] at [location]"
  • Function: assign_employees_to_shift
  • Parameters:
  • - employeeNames: Array of names (e.g., ["Wanda Okoro", "Xavi Duarte"])
  • - targetDate: YYYY-MM-DD or "today"/"tomorrow"
  • - shiftStartTime: HH:MM or "morning shift"/"evening shift"
  • - locationName: Optional location to identify shift
  • • Time descriptions supported:
  • - "morning shift" = 6am-12pm range
  • - "afternoon shift" = 12pm-5pm range
  • - "evening shift" = 5pm-11pm range
  • Example: "Assign Wanda Okoro and Xavi to the morning shift on 2025-12-03 at Downtown"
  • Response: "✓ Successfully assigned [names] to the shift on [date] at [time]!"
  • • Smart matching: Fuzzy matches employee names
  • IMPORTANT: Shift must already exist

6. Create Announcement

  • Command: "Create an announcement titled '[title]' about [topic/message]"
  • Function: create_announcement
  • Parameters:
  • - title: Brief title (e.g., "Store Closing Early")
  • - message: Full announcement content
  • Example: "Create an announcement titled 'Holiday Hours' about store closing at 5pm on Christmas Eve"
  • Response: "✓ Announcement posted successfully! Employees will be notified via email (if enabled)."
  • • Posted to: All employees in organization
  • • Visible in: Employee dashboard announcements section
  • • Email notifications: Sent if "Announcements" is switched on in your email settings

7. Send Message

  • Command: "Send a direct message to [employee name]: [message]"
  • Function: send_message
  • Parameters:
  • - recipientName: Employee name (first, last, or full)
  • - message: Message content
  • Example: "Send a direct message to Yvette Marsh: Can you cover the evening shift tomorrow?"
  • Response: "✓ Message sent successfully to [First Last]!"
  • • Delivery: In-app messaging system
  • • Recipient sees: Message in their employee dashboard Messages tab
  • • Smart matching: Fuzzy matches employee names (first, last, or full)
  • Use case: Quick communication without leaving AI Copilot

8. Create Employee

  • Command: "Create an employee named [First] [Last] with email [email] as an [EMPLOYEE/MANAGER]"
  • Function: create_employee
  • Parameters:
  • - email: Employee email (used for login)
  • - firstName: First name
  • - lastName: Last name
  • - userRole: "EMPLOYEE" or "MANAGER"
  • - password: Temporary password (default: "Welcome2025!" if not provided)
  • Example: "Create an employee named Zeynep Arslan with email zeynep@example.com as an EMPLOYEE"
  • Response: "✓ Employee account created successfully for [First Last]! Login: [email] / Password: [password]"
  • IMPORTANT: Share login credentials with new employee
  • • Default password: "Welcome2025!" (minimum 8 characters)
  • • Employee receives: Welcome email with login instructions
  • • Next steps: Employee should log in and set up MFA (if HEAD_MANAGER)

9. Create Location

  • Command: "Create a location named '[name]' at [address]"
  • Function: create_location
  • Parameters:
  • - name: Location name (e.g., "Downtown Store", "West Branch")
  • - address: Physical address (optional)
  • - timezone: Timezone (optional, defaults to America/New_York)
  • Example: "Create a location named 'Downtown Store' at 123 Main St, New York, NY"
  • Response: "✓ Location '[name]' created successfully!"
  • • Timezone options: America/New_York, America/Chicago, America/Denver, America/Los_Angeles, etc.
  • Use case: Multi-location businesses
  • • After creation: Location available in shift creation dropdown
  • • Can set staffing requirements: /{orgId}/settings/staffing-rules

10. Manage PTO Requests

  • Command: "Approve all pending PTO requests" or "Show all pending PTO requests by type"
  • Function: manage_pto_requests
  • Parameters:
  • - action: "approve" or "deny"
  • - scope: "all", "filtered", or "single"
  • - requestId: For single request
  • - filters: For filtered scope
  • • Filtering options:
  • - employeeNames: Filter by names (e.g., ["Vanya Petrov"])
  • - excludeEmployees: Exclude names (e.g., ["Wilhelm"])
  • - startDateFrom: Requests starting after date
  • - startDateTo: Requests starting before date
  • - ptoType: "VACATION", "SICK", "PERSONAL", "OTHER"
  • - minDays: Minimum request length
  • - maxDays: Maximum request length
  • - reason: Optional approval/denial comment
  • Example 1: "Approve all pending PTO requests"
  • Example 2: "Approve all vacation requests for December"
  • Example 3: "Deny PTO requests from Yaw Mensah"
  • Response: "✓ [Action] complete! Processed X requests. ✉️ Employees will be notified via email."
  • • Bulk actions: Can approve/deny multiple requests at once
  • • Preview mode: Shows matched requests before confirming

11. List Schedule Templates

  • Command: "List all my saved schedule templates"
  • Function: list_schedule_templates
  • Parameters:
  • - searchTerm: Optional search filter
  • Example: "List all my saved schedule templates"
  • Response: Shows all saved templates with:
  • - Template name
  • - Description
  • - Total shifts captured
  • - Duration in days
  • - Created date
  • Use case: Review available templates before applying
  • Templates include: All shifts, assignments, times, locations from saved date range

12. Apply Schedule Template

  • Command: "Apply the '[template name]' template starting [YYYY-MM-DD]"
  • Function: apply_schedule_template
  • Parameters:
  • - templateName: Name of saved template (fuzzy matched)
  • - startDate: Date to begin applying template (YYYY-MM-DD)
  • - locationFilter: Optional - only apply for specific locations
  • - daysFilter: Optional - "weekdays only", "weekends only", etc.
  • Example: "Apply the 'Holiday Week' template starting 2025-12-20"
  • Response: "✓ Success! I created X shifts from the '[name]' template. The shifts are now [draft/published]."
  • How it works:
  • - Takes template pattern and creates shifts starting from target date
  • - Preserves shift times, locations, required counts
  • - Does NOT copy employee assignments (assigns fresh)
  • - Respects requirePublishApproval setting
  • Use case: Recurring weekly/monthly schedules, holiday patterns

13. Save Schedule Template

  • Command: "Save my schedule from [start date] to [end date] as a template named '[name]'"
  • Function: save_schedule_template
  • Parameters:
  • - name: Template name (e.g., "Holiday Week 2024")
  • - description: Optional description
  • - startDate: Start of date range (YYYY-MM-DD)
  • - endDate: End of date range (YYYY-MM-DD)
  • Example: "Save my schedule from 2025-12-01 to 2025-12-07 as a template named 'First Week December'"
  • Response: "✓ Template saved successfully! I captured X shifts over Y days as '[name]'. You can now apply this template to future dates."
  • What gets saved:
  • - All shifts in date range
  • - Shift times and locations
  • - Required employee counts
  • - Pattern duration
  • What does NOT get saved: Employee assignments (apply fresh each time)
  • Use case: Save busy weeks, holiday schedules, recurring patterns

14. Change an Existing Shift

  • • Say the change in plain words, the way you would say it out loud
  • Example: "Move Thursday's 2pm shift at Pier 9 to Friday"
  • Example: "Every Tuesday shift at the East Wing needs 3 people"
  • Example: "Make Saturday 7am to 3pm"
  • • It changes only what you named. Everything else about the shift stays as it was
  • • You can point at shifts the way you talk about them: a day, a week, a start time, a location, whose shifts they are, which role they need, or "all of them"
  • Response: a card showing each shift as it is now and as it will be
  • • If more than one shift fits your words, it asks which one before changing anything
  • • Reaches shifts from the past 7 days forward

15. Take Someone Off a Shift

  • Example: "Take Ulyana off Saturday's 6am shift"
  • Example: "Take everyone with the Supervisor role off Sunday at Summit"
  • • The person comes off. The shift stays, and the spot opens for someone else
  • Response: a card naming who comes off which shift. Confirm to apply

16. Put One Person On Instead of Another

  • Example: "Put Valentina on Wednesday's 3pm shift instead of Wanjiku"
  • Example: "Put Viggo on all of Yesenia's shifts next week"
  • • One person comes off and the other goes on the same shift, in one move
  • • Both halves happen together or neither does
  • Response: a card showing who comes off and who goes on. Confirm to apply

17. Delete Shifts

  • Example: "Delete the Monday morning shifts at Pier 9 for the rest of the month"
  • Example: "Delete next Sunday's shifts"
  • • Cannot be undone, and every assignment on the shift goes with it
  • Response: a card stating how many shifts and how many people are affected. Confirm to apply

18. Several Instructions in One Message

  • • Join them with "and," "then," a comma, or a new line
  • Example: "Make Monday 8am to 4pm, take Ula off Thursday, and put Vonda on Friday instead of Weston"
  • • The message is split into separate instructions and each one is carried out on its own
  • Response: one card listing every change. Confirm once
  • • If one change cannot be done, the others still go through and the card says which one did not
  • • It will not guess at a step that depends on something an earlier step is still creating. It asks instead

19. Add Time Off

  • Example: "Uri is off Mar 3 to Mar 5"
  • Example: "Vivian's on vacation next week"
  • • Adds approved time off, and the employee gets the same email as when a manager adds it on the Time Off page
  • • Takes the kind of time off from your words (sick, vacation), or Other when none is said
  • • It is one way among several: employees can still request time off themselves, and you can still approve or deny each request by hand
  • Response: a card titled "Add time off". Confirm to add it

20. Fix It in a Word

  • • After a card, reply short: "sick" turns vacation into sick leave, "and also the 22nd" adds a day, "i meant Host" swaps the job, "same for Walter" gives Walter the same target
  • • Only that part changes; everything else on the card stays
  • • Typos are fine: "i menat the 5th of januray" is read as 5 January

21. Say Who Can Work What

  • Example: "Zion can work every job except Opener, prefers Closer"
  • • Sets one main job and the extra jobs, from your real job list
  • • Understands "all roles", "all except X", "only X", "prefers X", "can also work X"

22. Hour and Shift Targets

  • Example: "Virgil needs 27 hours a week"
  • Example: "Vera works 13 shifts per month"
  • • Saves it as an Autopilot rule; every schedule fills shifts with the people under their number first
  • Response: a card naming the person and the number. Confirm to save

23. Import a Schedule

  • • Type "import my schedule" and drop photos or PDFs of your schedule on the message box
  • • Every location, person and shift on it is laid out on one screen
  • • Press "Create" and your whole schedule, every shift and who works it, is built in seconds, with anyone new added to your team
  • • "Undo this import" takes the imported shifts back out

Quick Action Buttons (15 Templates)

Pre-filled command templates for faster input

Quick Action Bar

  • Location: Above chat input field in Ask AI tab
  • • Layout: Horizontal scrollable row of colored buttons
  • Function: Clicking fills chat input with template text
  • • User must: Fill in bracketed placeholders before sending

  • • 1. Create Shift (Indigo button)
  • • Template: "Create a shift for [date] from [start time] to [end time] at [location]"
  • • Placeholders: [date], [start time], [end time], [location]

  • • 2. Create Recurring Shifts (Purple button)
  • • Template: "Create recurring shifts every [days of week] from [start time] to [end time] at [location] for the next [number] days"
  • • Placeholders: [days of week], [start time], [end time], [location], [number]

  • • 3. Send Message (Pink button)
  • • Template: "Send a direct message to [employee name]: [message]"
  • • Placeholders: [employee name], [message]

  • • 4. Create Employee (Cyan button)
  • • Template: "Create an employee named [First] [Last] with email [email] as an [EMPLOYEE/MANAGER]"
  • • Placeholders: [First], [Last], [email], [EMPLOYEE/MANAGER]

  • • 5. Create Location (Green button)
  • • Template: "Create a location named '[name]' at [address]"
  • • Placeholders: [name], [address]

  • • 6. Create Announcement (Blue button)
  • • Template: "Create an announcement titled '[title]' about [topic/message]"
  • • Placeholders: [title], [topic/message]

  • • 7. Auto-Assign All Shifts (Orange button)
  • • Template: "Auto-assign employees to all open shifts"
  • • No placeholders - ready to send

  • • 8. Generate Schedule (Teal button)
  • • Template: "Generate schedule from [start date YYYY-MM-DD] to [end date YYYY-MM-DD] with [FAIR or MAX] mode"
  • • Placeholders: [start date], [end date], [FAIR or MAX]

  • • 9. Assign to Shift (Amber button)
  • • Template: "Assign [employee name] to the [morning/afternoon/evening] shift on [date] at [location]"
  • • Placeholders: [employee name], [morning/afternoon/evening], [date], [location]

  • • 10. Approve All PTO (Emerald button)
  • • Template: "Approve all pending PTO requests"
  • • No placeholders - ready to send

  • • 11. Show PTO Requests (Purple button)
  • • Template: "Show all pending PTO requests by type"
  • • No placeholders - ready to send

  • • 12. List Templates (Violet button)
  • • Template: "List all my saved schedule templates"
  • • No placeholders - ready to send

  • • 13. Apply Template (Fuchsia button)
  • • Template: "Apply the '[template name]' template starting [YYYY-MM-DD]"
  • • Placeholders: [template name], [YYYY-MM-DD]

  • • 14. Save Template (Rose button)
  • • Template: "Save my schedule from [start date YYYY-MM-DD] to [end date YYYY-MM-DD] as a template named '[template name]'"
  • • Placeholders: [start date], [end date], [template name]

  • • 15. Clear Chat (Gray button - bottom left)
  • • Function: Clears all chat messages
  • • Text: "Clear"
  • • Starts fresh conversation

Voice-to-Text Input

Speak your commands instead of typing

Voice Input Feature

  • Technology: Web Speech API (browser-native)
  • • Supported browsers: Chrome, Edge (Chromium-based)
  • • Not supported: Firefox, Safari (shows unsupported message)
  • Location: Microphone button next to chat input field
  • Icon: Microphone icon (Heroicons)

  • • How to use:
  • • 1. Click microphone button
  • • 2. Browser requests microphone permission (popup)
  • • 3. Grant permission ("Allow")
  • • 4. Button changes to red (recording active)
  • • 5. Speak your command naturally
  • • 6. Live transcription shows in gray text (interim)
  • • 7. Stop speaking - auto-stops after pause
  • • 8. Final text appears in input field
  • • 9. Press Enter or Send button to submit

  • Recording states:
  • - Default: Gray microphone icon
  • - Recording: Red microphone icon
  • - Listening: Placeholder shows "Listening..."
  • - Transcribing: Shows interim gray text

  • Settings:
  • - Language: English (en-US)
  • - Continuous: No (stops after user finishes)
  • - Interim results: Yes (shows live transcription)
  • - Max alternatives: 1

  • Error handling:
  • - "not-allowed" → "Microphone permission denied. Please enable it in browser settings."
  • - "no-speech" → "No speech detected. Please try again."
  • - "audio-capture" → "No microphone found. Please connect a microphone."
  • - "network" → "Network error. Please check your connection."
  • - "aborted" → "Recording stopped."

  • Tips:
  • - Speak clearly at normal pace
  • - Pause between commands
  • - Review transcription before sending
  • - Can edit text after voice input
  • - Works with all 13 AI commands

Chat Interface & User Experience

How to interact with AI Copilot chat

Chat Features

  • Interface: ChatGPT-style conversational UI
  • Message history: Persists during session, clears on page reload
  • Input methods: Text typing, voice-to-text, quick action buttons

  • • Chat window:
  • - White background (light mode), gray (dark mode)
  • - Rounded corners with shadow
  • - Scrollable message history
  • - Auto-scrolls to latest message
  • - Max height: 500px

  • Message bubbles:
  • - User messages: Right-aligned, indigo background
  • - AI responses: Left-aligned, gray background
  • - AI icon: Robot emoji 🤖
  • - User icon: Your initials

  • Empty state (no messages):
  • - Chat bubble icon in center
  • - Text: "Ask me anything about your workforce!"
  • - Example prompts shown:
  • * "How many shifts do I have this week?"
  • * "Which employees have the most hours?"
  • * "Create a shift for tomorrow 9am-5pm"
  • * "Show me all pending PTO requests"
  • - Clicking example fills chat input

  • Input field features:
  • - Placeholder: "Ask about your employees, schedules, costs..."
  • - Changes to "Listening..." during voice input
  • - Press Enter to send
  • - Disabled while AI is processing
  • - Shows loading indicator: "AI is thinking..."

  • Buttons:
  • - Clear button (left): Clears all messages
  • - Microphone button (right): Voice input
  • - Send button (right): Submit message

  • Action confirmations:
  • - Some actions show preview before executing
  • - Example: PTO bulk approval shows matched requests
  • - "Confirm" and "Cancel" buttons appear

  • Response types:
  • - Success: ✓ checkmark with confirmation
  • - Error: ❌ with error message
  • - Info: 💡 with details
  • - Action needed: Shows preview + confirm buttons

Best Practices & Tips

How to get the most out of AI Copilot

Usage Tips

  • Command phrasing:
  • - Be specific with dates (use YYYY-MM-DD format)
  • - Include location names for multi-location orgs
  • - Use employee full names when possible
  • - Specify shift times clearly (24-hour format preferred)

  • Quick wins:
  • - Use quick action buttons instead of typing from scratch
  • - Use voice input for complex commands
  • - Review AI insights weekly for trends
  • - Check cost opportunities monthly

  • Scheduling workflows:
  • • 1. Create shifts first (single or recurring)
  • • 2. Then use auto-assign or generate schedule
  • • 3. Review assignments in schedule page
  • • 4. Publish when ready

  • Template workflow:
  • • 1. Create and perfect a week's schedule
  • • 2. Save as template with descriptive name
  • • 3. Apply template to future weeks
  • • 4. Saves hours of manual work

  • PTO management:
  • - Review pending requests weekly
  • - Use filters for fair approvals
  • - Check conflicts before approving
  • - Add comments for denials

  • Common mistakes to avoid:
  • - Don't use auto-assign before creating shifts
  • - Don't generate schedule on date ranges with no shifts
  • - Don't forget to publish shifts (if requirePublishApproval enabled)
  • - Don't ignore low reliability patterns

  • Troubleshooting:
  • - If AI doesn't understand: Rephrase more specifically
  • - If no insights appear: Need more historical data
  • - If voice doesn't work: Check browser (Chrome/Edge only)
  • - If actions fail: Check error message, verify data exists

Ready to Experience AI-Powered Scheduling?

XShift AI Copilot does the heavy lifting so you can focus on running your business.

AI Schedule Generator & Automated Employee Scheduling | XShift AI