Skip to main content
CharleOS uses a priority-based scheduling system that automatically orders work based on importance, urgency, and capacity constraints.

How priorities work

Fill-first algorithm

The system allocates capacity using a “fill-first” approach:
1

Sort by priority

All scheduled items sorted by priority (lower number = higher priority)
2

Allocate sequentially

Starting with highest priority, allocate as much capacity as possible
3

Track across days

Multi-day items track remaining minutes across multiple days
4

Fill to capacity

Continue until daily capacity is reached
5

Queue remainder

Items without capacity marked as “queued”
Key principle: Higher priority items always get capacity first. Lower priority items only get time if capacity remains.

Priority tiers

The five tiers

TierPriority RangeDescriptionExample
11-99Help desk ticketsClient reported a bug
2100-199Work-in-progress multi-day itemsTask started Monday, still working Wednesday
3200-299Single-day items starting today2hr task scheduled for today only
4300-399New multi-day items starting today8hr task starting today, ends tomorrow
5400+Future itemsItems starting after today

Tier 1: Help desk tickets

Always highest priority:
  • Range: 1-99
  • Covers urgent client issues
  • Should be addressed immediately
  • Can only be deprioritized explicitly by PM
Why highest:
  • Client impact is immediate
  • Often blocking client work
  • Demonstrates responsiveness
  • Builds client trust
Moving help desk tickets below subtasks requires explicit confirmation. This is an intentional override of best practices.

Tier 2: Work-in-progress multi-day items

Priority for continuity:
  • Range: 100-199
  • Items that started before today
  • Priority calculated: 100 + (99 - daysSinceStart)
  • Earlier start = higher priority
Why prioritized:
  • Person already has context
  • Switching tasks wastes time
  • Completing in-progress work first
  • Maintains flow state
Example:
  • Task started 5 days ago: priority = 194
  • Task started 2 days ago: priority = 197
  • Earlier start gets slightly higher priority

Tier 3: Single-day items starting today

Medium priority:
  • Range: 200-299
  • Tasks that fit within one working day
  • Start and end today
  • Priority: 200 + index
Why medium:
  • Can be completed today
  • No multi-day coordination needed
  • Lower context switching cost

Tier 4: New multi-day items starting today

Lower priority:
  • Range: 300-399
  • Tasks starting today but spanning multiple days
  • Priority: 300 + index
Why lower:
  • Will have tomorrow to continue
  • Let single-day items complete first
  • Reduces partial completions

Tier 5: Future items

Lowest priority:
  • Range: 400+
  • Items starting after today
  • Display only (shouldn’t get capacity today)
  • Priority: 400 + index
Why lowest:
  • Not meant to start yet
  • Future dates for reference
  • Get capacity on their start date

Explicit vs calculated priority

Calculated priority (default)

Most items use calculated priority:
  • System determines tier based on dates and type
  • Automatically adjusts as days pass
  • No manual intervention needed

Explicit priority (PM override)

PMs can set explicit priority:
  • Drag-and-drop to reorder within a day
  • Sets a fixed priority number
  • Overrides calculated priority
  • Persists until changed
Explicit priorities are set when PMs drag-and-drop tasks in the day breakdown. The new order is saved and maintained even as days change.

Priority calculation examples

Example 1: Typical day

Wednesday schedule for Developer:
ItemTypeStart DatePriorityTier
Bug fix ticketHelp DeskTuesday15Tier 1 (Help Desk)
Navigation featureSubtaskMonday197Tier 2 (WIP, started 2 days ago)
Header stylingSubtaskWednesday200Tier 3 (Single-day, today)
Checkout flowSubtaskWednesday300Tier 4 (Multi-day, starts today)
Capacity allocation (6.5h available):
  1. Bug fix: 2h allocated (2h remaining)
  2. Navigation: 4h allocated (2.5h remaining)
  3. Header styling: 2h allocated (0.5h remaining)
  4. Checkout flow: 0.5h allocated (6h remaining, will continue tomorrow)

Example 2: With explicit priority

After PM reorders: PM moves “Header styling” above “Navigation feature” via drag-and-drop.
ItemTypeExplicit PriorityNew Order
Bug fix ticketHelp Desk151st (unchanged)
Header stylingSubtask1502nd (moved up)
Navigation featureSubtask1513rd (moved down)
Checkout flowSubtask3004th (unchanged)
Result: Header styling gets capacity before navigation feature, overriding the calculated priority.

Auto-scheduling recommendations

For help desk tickets

When scheduling help desk tickets, the system recommends assignees based on:

Work Type Match

Developer for bugs, Designer for design issues, QA for testing

Capacity Available

Team members with available capacity

Engagement Type

Retainer team prioritized over project team

Impact

Least disruption to existing schedules

Recommendation factors

The system calculates:
  • Hours of work pushed - How much existing work would be delayed
  • Number of tasks affected - How many items would be rescheduled
  • Deadline risks - Whether deadlines would be missed
  • Team preference - Retainer vs project assignments
Recommendation display:
  • Grouped by engagement type (Retainer / Project / Other)
  • Sorted by impact (least disruption first)
  • Shows capacity impact for each option
The system suggests the best assignee, but PMs can override based on other factors like specific client relationships or specialized skills.

Conflict detection

When conflicts occur

Conflicts arise when:
  • Scheduling new work overlaps existing scheduled work
  • Available capacity is insufficient
  • Multiple items compete for same time

How conflicts are detected

1

Check date ranges

Identify overlapping date ranges
2

Calculate impact

Determine how many days overlap (working days only)
3

Simulate rescheduling

Calculate new end dates for affected items
4

Sort by priority

Show which items would be pushed (lower priority first)

Conflict resolution

Conflict dialog shows:
  • List of affected tasks
  • Current end dates
  • New end dates (after push)
  • Number of days pushed
  • Suggested conflict-free start date
Resolution options:
  1. Use suggested date - Schedule on recommended conflict-free date
  2. Push and schedule anyway - Accept the conflicts and reschedule affected items
  3. Cancel - Don’t schedule, find alternative
Pushing work has a cascade effect. Pushing Item A might push Item B, which pushes Item C. Consider the full impact.

Protected priorities

Help desk tickets are protected:
  • System tries not to push help desk tickets
  • If unavoidable, warns explicitly
  • Requires confirmation to proceed

Capacity-based prioritization

Daily capacity limits

The system respects daily capacity:
  • Developers: 6.5 hours (390 minutes)
  • Other roles: 7.5 hours (450 minutes)
  • Role-based capacity applied automatically
  • Reduced by leave or holidays
  • Hard limit (cannot exceed)

Allocation process

Within capacity limits:
  1. Help desk tickets allocated first
  2. WIP items get priority
  3. New work fills remaining capacity
  4. Excess work marked “queued”

Queued items

Items without capacity:
  • Shown as “Queued” status
  • 0 hours allocated
  • Still scheduled for the day
  • Will get capacity when higher priority items complete
Queued status helps identify capacity bottlenecks. If many items are queued, either reduce work or increase capacity.

Adjusting priorities

When to adjust

Consider adjusting priorities when:
  • Client urgency changes
  • Deadlines shift
  • Dependencies require different order
  • Team member expertise needed
  • Strategic importance changes

How to adjust

1

Open day breakdown

Click allocation badge for the day
2

Drag to reorder

Drag items to new position using grip handle
3

Confirm if needed

Confirm if moving help desk below subtasks
4

Verify impact

Check if reordering creates capacity issues

Best practices for adjusting

Use sparingly

Let system handle most prioritization automatically

Document reasons

Add comments explaining priority overrides

Respect help desk

Keep help desk tickets at top unless critical exception

Consider dependencies

Don’t prioritize items that depend on incomplete work

Monitor impact

Watch for cascade effects on other days

Communicate changes

Inform team when changing their priorities

Best practices

Trust the system

Default priorities work well for most situations

Complete help desk first

Always prioritize client-facing issues

Finish started work

WIP items should complete before starting new work

Watch for queued items

Queued items indicate capacity problems

Don't over-schedule

Avoid scheduling beyond realistic capacity

Review weekly

Check priorities at start of each week

Next steps