Changelog

Follow up on the latest improvements and updates.

RSS

new

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Easier dataset management, absence-aware shift scheduling, and SLA-aware visit prioritization

Today, we're announcing version v1.10 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
7c6e95e5d532a2519cf70837618a0880190678b6a63f4896064f6f5f543ae0c7
  • Clearer navigation and faster access to documentation in the new header
    : The header shown across every page has been redesigned with a clearer two-band layout. It includes a helpful description and a documentation link that adjusts to the page you're currently viewing.
  • Manage queued datasets more easily
    : You can now manually delete a queued dataset instead of waiting for it to start automatically or expire. The solve queue table also has a new Attempts column, showing how many times a dataset has been attempted. See solve queue for more details.
  • Re-solve an invalid dataset without resubmitting it
    : When a dataset ends up in an invalid state, you can now re-solve it directly from a button, instead of submitting a new dataset from scratch. See invalid state for more details.
  • See each plan's latest revision on the Plans overview
    : A plan's row on the Plans overview now shows the scores and metrics of its latest revision, instead of its original submission. This keeps the overview accurate once a plan has been re-solved or patched, without needing to switch to the Revisions tab. See Plans overview for more details.
  • Faster solving by pausing automatic score analysis refresh in the UI
    : The Platform UI no longer automatically re-fetches score analysis while a dataset is still solving. Doing so repeatedly competed for compute resources with solving itself, which could slow it down. You can still follow how scores and output metrics evolve in real time on the dataset's solve graphs, and if you're calling the score analysis endpoint directly, you can still request it as often as you like while a dataset solves. See score analysis for more details.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold Models:
  • Default priority for visits without an explicit priority
    : Previously, a visit that did not specify its own priority always fell back to the built-in priority 6. A new
    defaultPriority
    field in
    config.model.overrides
    lets you change this fallback for the entire dataset, without having to set
    priority
    on every visit individually.
    defaultPriority
    accepts any built-in priority (
    1
    -
    10
    ,
    opt-1
    -
    opt-10
    ) or, when custom priorities are configured, one of your custom priority names. See Default priority for more details.
  • New constraints to penalize unassigned visits based on their SLA deadline
    : Route optimization now includes two new constraints, disabled by default, that penalize visits left unassigned according to how tight their
    latestSlaEndTime
    is relative to the other visits in the dataset:
    Require scheduling mandatory visits with tighter SLA
    (medium) penalizes unassigned mandatory visits, more so the tighter their SLA deadline is compared to the rest of the dataset, and
    Prefer scheduling optional visits with tighter SLA
    (soft) does the same for optional visits. These give you an alternative to the existing priority-based
    Require scheduling mandatory visits
    and
    Prefer scheduling optional visits
    constraints for deciding which visits to leave unassigned when there is not enough capacity to schedule them all. See Penalize unassigned visits based on SLA deadline for more details.
  • Maintenance release
    : This release also updates dependencies to deliver security updates.
  • Absence-aware consecutive days worked (preview)
    : Consecutive days worked rules now support the
    absenceMode
    field, which bridges over days an employee is fully unavailable instead of letting them break the consecutive-days streak. When set to
    ABSENCE_AWARE
    , two worked days separated only by fully-absent days are treated as consecutive: for example, an employee who works Monday and Tuesday, is fully unavailable Wednesday, and works again Thursday, is treated as having worked four consecutive days, not two separate streaks.
    absenceMode
    defaults to
    ABSENCE_UNAWARE
    . This is a preview feature subject to change. See Consecutive days worked for more details.
  • More reliable constraint matching for shifts across time zones
    : Fixed inconsistent tie-breaking for shift-related constraints when shifts spanning different UTC offsets represented the same time instant.
  • Maintenance release
    : This release updates dependencies to deliver security updates and minor performance improvements.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Richer dataset comparisons, CSV exports, and smarter visit dependency controls in FSR

Today, we're announcing version v1.9 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
model-info-mockup
  • Richer, more readable dataset comparisons: The comparison table now includes a Model info section showing each dataset's model version, solver version, SDK version, build time, build commit, and branch, so you can compare across model versions when benchmarking or debugging. You can now compare constraint scores across sets of datasets, not just individual ones, and the comparison view has several slight UI improvements: columns are easier to read, and tooltips are clearer.
  • Export the plans overview to CSV: The plans overview table now has an Export CSV button that downloads the latest 100 plans matching your current search and filters.
  • Manually trigger a queued solve: The solve queue now has a "Run now" action that lets you manually trigger a queued execution instead of waiting for it to start automatically.
  • Clearer validation for traffic-aware routing: Configuring traffic-aware routing for a map without traffic data now returns a clear validation error instead of an unclear or unexpected failure.
  • Consistent tenant switching: Switching tenants now keeps you on the equivalent section of the new tenant, for example a webhook detail page lands on the new tenant's webhooks overview, instead of always redirecting you to the homepage.
  • Persisted table column settings: Column visibility and order selections are now persisted across tenant management tables.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold models:
  • Visit dependencies can now restrict pooling with other visits: By default, other visits can be freely scheduled between the preceding and following visit of a dependency, and multiple dependency pairs can be interleaved with one another. A new
    poolingType
    attribute on
    visitDependency
    lets you restrict this per dependency, and a new
    config.model.overrides.defaultDependencyPoolingType
    setting lets you change the default for the entire dataset. Setting
    "poolingType": "DISALLOW_POOLING"
    prevents any other visit from being scheduled directly between the preceding and following visit.
    ALLOW_POOLING_VISITS
    and
    ALLOW_POOLING_DEPENDENCIES
    allow pooling with only one of ordinary visits or other dependency pairs, respectively. This is useful when, for example, a technician must go straight from an equipment delivery to its installation without an unrelated job in between.
  • Visit dependencies can be restricted to the same shift: Previously, the preceding and following visits of a dependency could be scheduled in any vehicle shifts or restricted to vehicle shifts of the same vehicle by
    "coordination": "SAME_VEHICLE"
    . Timefold now allows restricting the preceding and following visits to the same vehicle shift by specifying
    "coordination": "SAME_SHIFT"
    .
  • Fixed next visit incorrectly pinned when fixed-location breaks precede it: With the default
    pinNextVisitDuringFreeze
    setting (
    ALWAYS
    ), Timefold pins the visit a vehicle is already traveling to when
    freezeTime
    is applied. When one or more fixed-location breaks were scheduled before a visit, Timefold could pin that visit as soon as the time of traveling to those fixed breaks was before
    freezeTime
    , even though the technician had only committed to traveling to (or taking) the fixed break(s), not to the visit itself. Timefold now accounts for fixed-location breaks preceding visits and only pins the visit once the vehicle has actually departed toward it, that is, after the last such break ends.
  • Improved solution quality for grouping co-located visits: The Prefer grouping co-located visits constraint encourages assigning visits that share the same location consecutively in a vehicle shift's itinerary, so the vehicle can perform them without traveling in between. Timefold now uses a dedicated move that specifically targets visits sharing the same location and moves them next to each other, either within the same vehicle shift or across vehicle shifts. This results in higher quality solutions when the constraint is enabled.
  • More accurate route lines on the map when breaks have a fixed location: The Map view's route lines previously only followed a vehicle shift's start location, visits, and end location, so a fixed-location break in between was not reflected in the drawn road path. Breaks with a location are now included when computing route lines, so the map more accurately traces the road path a vehicle actually takes. Adjacent duplicate locations are also no longer included, so back-to-back stops at the same location no longer produce redundant segments on the map.
  • Group employee pairings by employee tag: We have added
    groupByEmployeeTag
    to employee pairings to ensure that employee pairings can be grouped based on a tag. This prevents Timefold from assigning employees to shifts at the same time but with different tags of the common tag type. When
    commonTagType
    is used without
    groupByEmployeeTag
    , employee pairings are valid if two employees work shifts at the same time with an identical tag of the common tag type. With
    groupByEmployeeTag
    defined, all pairings grouped by that tag will be valid only if all shifts worked at the same time have that identical tag of the common tag type. Certain employees may need to work at the same time (employee pairing), work the same type of shift (
    commonTagType
    ), but also need to be grouped (
    groupByEmployeeTag
    ). This feature makes it easier to define groups of employees with employee pairings.
  • Improved solution quality: Timefold now favors nearby jobs both in construction heuristics and local search, producing better solutions with lower total travel time. In addition, jobs are more frequently pooled (if they allow it), leading to more efficient routes. However, if you do not want jobs to be pooled, be sure to set
    prohibitJobPooling
    to
    true
    for your jobs, as it will increase the construction heuristic speed.
  • Better visibility into travel efficiency and job pooling: The key performance indicators now include the average travel time per stop, as well as the percentage and absolute number of pooled jobs.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Read-only Viewer role, Scenario experiments, and monthly and absence-aware rolling window rules in ESS

Today, we're announcing version v1.8 of the Timefold Platform and updates to several Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Give stakeholders and auditors safe, read-only tenant access
    : Tenants can now add members with a new Viewer role. Viewers can see everything in a tenant, models, datasets, configuration profiles, and saved comparisons shared with tenant members, but can’t start, edit, or delete datasets, or manage comparisons. This is useful for stakeholders or auditors who only need read access. See Viewer role for details.
  • Experiments (preview)
    : Experiments let you compare how your Timefold model performs across different scenarios and datasets in a single run, instead of manually submitting and comparing individual datasets. You define the variables up front, and the platform runs all combinations automatically, producing a comparison report where each column represents a scenario. This saves time compared to submitting each combination by hand, and experiments run on a separate solve queue, so they don’t affect or slow down your production solves. Experiments are available in preview starting with this release. See Experiments for more information and to request access.
UI showing a running experiment
  • More accurate score analysis and recommendations with configuration profile overrides
    : Overrides specified in a configuration profile are now applied when calling the score analysis and recommendations endpoints. Previously, these endpoints reflected the dataset’s original configuration even when overrides had been applied. Results now accurately reflect the profile you configured, giving more accurate score analysis and recommendations.
  • Interpret and share dataset comparisons more easily
    : Comparisons can now show diffs as a percentage instead of only an absolute value, making it easier to judge the relative impact of a change. The radar diagram in dataset comparisons can also be exported as an SVG file, making it easier to include in reports and presentations. See Comparing datasets for more details.
  • Back up and share configuration profiles as JSON files
    : Configuration profiles can now be exported and imported as JSON files. This makes it easy to back up a profile before making risky changes, or to share a profile configuration between team members or environments. See Export and import profiles for more details.
  • Improved documentation search
    : The documentation site now has a dedicated search page, in addition to the in-page search modal. From the search modal, click "See all results" to open the full search results page, which supports paging and filtering by book and product.
  • See your most-used destinations first in the command palette
    : Opening the command palette without typing a query now shows your recently used entries first, topped up with the highest-priority entries, instead of an empty dialog. See Using the Command Palette for more details.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold Models:
Field Service Routing (v1 | Stable)
  • Fixed next visit incorrectly pinned when fixed-location breaks precede it
    : With the default
    pinNextVisitDuringFreeze
    setting (
    ALWAYS
    ), Timefold pins the visit a vehicle is already travelling to when freezeTime is applied. When one or more fixed-location breaks were scheduled before a visit, Timefold could pin that visit as soon as the time of travelling to those fixed breaks was before freezeTime, even though the technician had only committed to travelling to (or taking) the fixed break(s), not to the visit itself. Timefold now accounts for fixed-location breaks preceding visits and only pins the visit once the vehicle has actually departed towards it, that is, after the last such break ends. See Finer control over pinning with freezeTime for more details.
  • Fewer unnecessary visit delays when travel times are asymmetric
    : With asymmetric travel times between locations (the travel time from A to B different from the travel time from B to A), Timefold could wrongly apply a fixed break between two visits instead of being deferred past both of them, even though the vehicle could not actually reach the break in time from the earlier visit. This means a fixed break could delay a visit that could have been scheduled earlier, resulting in a worse solution than necessary.
  • No more infeasible solutions from inconsistent fixed-visit start times
    : When a visit was pinned to a specific
    startServiceTime
    and vehicle shift, but the input was inconsistent (for example, because the technician could not actually start at the specified time given the travel distances involved) Timefold would introduce hard score violations when trying to enforce the exact fixed start service time. Timefold now handles this gracefully by computing the feasible start service time for each fixed visit during preprocessing. See Changelog for more details and upgrade instructions.
  • No more solver hangs when a break overlaps a visit with actuals
    : When a visit with an
    actualStartServiceTime
    overlapped with a fixed break, Timefold could get stuck in an infinite loop while repeatedly trying to apply the break. This means Timefold should no longer get stuck on such inputs.
  • Account for holidays when calculating delays between dependent visits
    : The
    dateAdjusterConfiguration
    object in the model input now has a holidays field to modify the behavior of the
    NEXT_WORKING_DAY
    adjuster specification to be used for delays between dependent visits. It takes an array of ISO 8601 dates which are exceptions to the regular working days as stated in workingDays. For example, this allows accounting for bank holidays correctly. For further information, consult the documentation on visit dependencies with delay and the adjuster functions.
  • No more overlapping fixed and floating breaks in the schedule
    : Timefold could fail to apply a fixed break that should have applied, when the visit preceding it was delayed by a floating break. This could result in a fixed break overlapping with a floating break in the schedule. Timefold now correctly applies the fixed break in this scenario.
Employee Shift Scheduling (v1 | Stable)
  • Recommendations for shifts with no eligible employees
    : The recommendations API now returns employee suggestions even when no employee meets all hard constraints for a shift. Previously, the solver didn’t return recommendations that broke hard constraints. Now, the solver returns the top recommendations, even if those recommendations break hard constraints. For more information, see Recommendations.
  • Monthly rolling window rules for more flexible scheduling
    : Rolling window rules now support
    MONTHLY
    rolling window type. This allows you to define rules that apply on a calendar month basis, providing greater flexibility in scheduling and planning. See Minutes worked in a rolling window for more details on rolling window rules.
  • Deprecated confusing recommendation endpoint
    : We have deprecated the following endpoint to avoid confusion with other recommendation endpoints.
    POST /v1/schedules/{id}/recommendations/recommend-employees
    Please use this endpoint instead:
    POST /v1/schedules/recommendations/recommend-employees
    For more information, see Recommendations.
  • Absence-aware rolling window rules (preview)
    : Rolling window rules now support the
    absenceMode
    field, which scales the effective limit proportionally based on each employee’s availability within the rolling window. See Changelog for use cases and details.
  • Be warned when a shift references an unknown employee
    : A shift, or a shift’s preferred, unpreferred, or prohibited employee list, that references an employee ID not present in the schedule was previously not validated at all. This is now reported as a
    SHIFT_UNKNOWN_EMPLOYEE
    warning. The schedule is accepted and solved normally, with the unknown employee reference surfaced so you can review and correct it.
Pick-up and Delivery Routing (v1 | Preview)
  • Evaluate patient transport scenarios with a new NEMT demo dataset
    : The list of demo datasets has been extended with a new use case based demo dataset for Non-Emergency Medical Transportation (NEMT). The NEMT demo dataset includes a set of jobs and driver shifts that represent a typical Non-Emergency Medical Transportation scenario, including multiple stops for pick-up and drop-off of patients. It contains multiple legs for patients (home to medical facility and back) as well as time windows and skill requirements.
  • More realistic location distribution in demo datasets
    : The location generator for the demo datasets has been improved to generate more realistic locations. Locations will now be generated with more density around the city center and less density in the outskirts, which better reflects real-world scenarios.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Task Scheduling

Pickup & Delivery Routing

Task Scheduling launches, batch recommendations for ESS, and smarter comparison tools

Today, we're announcing version v1.7 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Constraint scores in run comparison
    : The comparison table now includes a "Constraint scores" group that shows the per-constraint score breakdown for each dataset. Scores are color-coded and sorted using the score analysis sort order. This is available when comparing single datasets; support for grouped dataset columns is planned for a future release. This is e.g. useful to see the impact on specific constraint score during goal alignment experiments See Comparing datasets for details.
Constraint score comparison
  • Sort constraints in score analysis
    : The constraint table in score analysis now supports sorting by name (useful to get started with a model), number of matches (useful to explore justifications), or constraint weight, in addition to the default sort by score. Each sort option orders constraints within their group first, then orders the groups themselves by the same criterion. See Score analysis for more details.
  • Power-tune the default smart termination
    : Solving on the platform stops automatically once score improvements diminish; this is the default termination strategy, and for most datasets the defaults work well out of the box and is the best balance between time, cost and solution quality. For specific datasets where you want more control, "Advanced configuration" in a configuration profile now exposes two parameters: sliding window duration and minimum improvement ratio. Use the Configuration Profiles UI to learn about the parameters and tweak them.
  • Several additional bug fixes, security fixes, and stability and UI improvements.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold Models:
Field Service Routing (v1 | Stable)
  • Next working day date adjuster for visit dependencies
    : When a multi-day job is split across two visits, you can now specify that the follow-up visit must start on the next working day, without having to hardcode a specific weekday. Set
    minStartDateAdjuster
    or
    maxStartDateAdjuster
    to
    NEXT_WORKING_DAY
    on
    minDelayTo
    or
    maxDelayTo
    in the visit dependency, and the model will always push the second visit to the next business day, regardless of which day the first visit falls on. Working days default to Monday–Friday and can be customized via the new
    workingDays
    field in
    dateAdjusterConfiguration
    . See Visit dependencies for details.
  • Bulk visit recommendations now include infeasible results
    : Bulk visit recommendations now always return a result, even when no fully feasible assignment exists. Infeasible recommendations are ranked below feasible ones and include hard score violations, so you can see why an assignment doesn't work rather than receiving an empty response.
  • durationAddedForFirstVisitOnLocation now configurable in configuration profiles
    : This field is now available in the model configuration section of configuration profiles for FSR. This lets you set a default overhead duration added to the first visit at any location, eg. to account for parking or building access, without having to pass it in every API call. See this changelog update for more details.
  • Vehicles can travel during waiting time before a fixed break
    : When a vehicle shift defines multiple fixed breaks, the vehicle can utilize waiting time before a fixed break to travel to the next visit or the next location break, which will result in more efficient schedules. See upgrade to the latest version for more details.
  • Several additional bug fixes and performance improvements.
Employee Shift Scheduling (v1 | Stable)
  • Batch recommendations
    : When multiple shifts need to be filled at once, you can now get recommendations for all of them in a single API call. Two modes are available, each as its own endpoint:
    recommend-employees-batch-per-shift
    : returns a ranked list of recommended employees per shift. Use this to fill shifts independently, without making a separate API call for each one.
    recommend-employees-batch-global
    : returns a single ranked list across all shifts, answering "which shift should I assign next?". Use this when you want to fill shifts one by one in the optimal order. For more information see Batch recommendations.
  • Historic shift and shift group counts available in input metrics
    : Input metrics now report the number of historic shifts and shift groups (historicShifts, historicShiftGroups) in the input dataset. This makes it easy to verify the right amount of historical data is attached, especially when using rolling-window constraints. See Input metrics for details.
Pick-up and Delivery Routing (v1 | Stable)
  • maximumTimeBurden now configurable in configuration profiles
    : This field is now available in the model configuration section of configuration profiles for PDR. This lets you set the maximum extra time burden imposed on an ongoing job when a new job is added to the same vehicle, without having to pass it in every API call.
  • This release includes security fixes and stability improvements.
Task Scheduling (Preview)
Task Scheduling is now available on the Timefold Platform. It assigns jobs to machines and employees while increasing the number of jobs completed and minimizing makespan, and it supports job dependencies, time windows, resource transitions, machine availability, employee constraints, and pinning for real-time replanning.
Task Scheduling diagram
This model is in preview, so backward-incompatible changes may still be introduced. See the introduction to get started.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Pick-up and Delivery Routing 1.0 release, and more improvements

Today, we're announcing version v1.6 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Spider chart tooltips with percentages
    : In experiment comparison charts, each axis in the spider tooltip now includes a percentage delta alongside the absolute value, making it easier to compare solver configurations at a glance. See comparing datasets for more details.
SPIDER CHARTS HOORAY
  • Discover caller identity
    : The platform has a new
    GET /api/aboutme
    endpoint that returns information about the API key behind the current request likethe tenant it belongs to, and the access permissions granted to it. See API usage for more details.
  • Several bug fixes and stability improvements.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold Models:
Field Service Routing (v1 | Stable)
  • Visits can now be assigned even when blocking dependent visits
    : By default, if assigning the preceding visit in a dependency prevented the following visit from being assigned, the preceding visit was also left unassigned. A new
    assignmentType
    attribute on
    visitDependency
    lets you override this behavior per dependency, and a new
    config.model.overrides.defaultDependencyAssignmentType
    setting lets you change the default for the entire dataset. See Visit dependency assignment type for details.
Employee Shift Scheduling (v1 | Stable)
  • More precise shift overlap counting in rolling window rules
    : Rolling window rules can now be configured to count only the portion of a shift that overlaps with the rolling window, rather than counting any shift that starts within the window. See changelog for details on how to enable this.
  • Minimum rest period after a consecutive shift sequence
    :
    consecutiveShiftsWorkedRules
    now support a
    timeOffAfterSequenceLimit
    field that enforces a minimum rest period between the end of one shift sequence and the start of the next. This lets you model regulations such as "after two or more consecutive night shifts, an employee must have at least 48 hours off before their next sequence begins." See the changelog for details.
  • Ability to define shift sequences based on time between end of previous shift and start of next shift
    : The rules to configure consecutive shifts now allow to define sequences based on the gap between the end of one shift and the start of the next, rather than only by calendar days. See changelog for details.
  • Demand-based shift generation demo dataset
    : A new demo dataset shows how to use the shift generation feature in a realistic setting modeling a one-week restaurant schedule with lunch and dinner peaks, full-time employees, and external part-time employees. The dataset starts with no shifts and lets Timefold generate candidate shifts from templates to cover hourly demand. Use the Timefold Platform UI to trigger this new demo dataset.
  • Several bug fixes and performance improvements. See changelog for details.
Pick-up and Delivery Routing (v1 | Stable)
  • Pick-up and Delivery Routing model is now stable (v1.0)
    : The Pick-up and Delivery Routing model is marked as stable from this release forward. Its API is now backward compatible unless explicitly marked otherwise, and the model version has been aligned with the REST API version (v1).
  • Changes in the API
    : To improve clarity and consistency in the API, we have made some changes to the input and output API of the Pick-up and Delivery Routing model. This change includes renaming
    effectiveServiceDuration
    to
    effectiveDuration
    in all its occurrences in the OpenAPI specification and the model output. The specific changes can also be found in the upgrade guide.
  • Machine-readable validation errors and warnings
    : A new endpoint
    GET /v1/route-plans/{id}/validation-result
    returns structured validation issues with a machine-readable code (for example
    DRIVER_SHIFT_MISSING_START_TIME
    ), a severity (
    ERROR
    or
    WARNING
    ), and a detail object identifying the affected entity. See machine-readable validation results for details.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Linked shifts and bulk time window recommendations in FSR, historic shift exclusion and employee pairing improvements in ESS

Today, we're announcing version 1.5 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Dataset timeline now shown for non-solved datasets
    : The dataset timeline is now also visible for datasets that are submitted without solving. Operations such as validation can take a while for large datasets, and the timeline now reflects that progress. Previously, the timeline was only shown when a dataset was submitted for solving.
  • Maximum constraint weight enforced
    : Constraint weights are now capped at 1,000,000,000,000 (one trillion). The limit prevents score overflow and nonsensical optimization results that can occur when weights are set too high. It is enforced when saving a configuration profile and when submitting a dataset.
  • Maximum distance from road defaults to null (self-hosted only)
    : The maximum distance from road parameter now defaults to null for self-hosted instances, meaning no distance limit is applied unless you configure one explicitly. See Installation instructions for details.
  • Several smaller bug fixes and stability improvements
    .
Next to that, this new version of the Timefold Platform comes with updates to these Timefold models:
Field Service Routing (v1 | Stable)
  • Introduced linked shifts to eliminate repeated travel (preview)
    : Vehicles can now define
    linkedShifts
    which are chains of consecutive shifts that Timefold may treat as one combined shift. This is useful when a job is too long for a single shift or when a technician stays on-site overnight to avoid traveling to a remote location twice. Timefold automatically chooses whether to use the individual shifts or the linked shift, depending on what produces the better schedule. See Linked shifts for details.
  • Bulk time window recommendations (preview)
    : A new bulk recommendations endpoint lets you request time window recommendations for multiple visits at the same time. Unlike visit group recommendations (which require each visit to be assigned to a different technician), bulk recommendations let the optimizer decide whether the visits are best served by a single technician or split across multiple technicians. Submit up to 20 visit IDs in a single request and receive ranked recommendations showing the optimal technician assignments across a given time window. This feature is in preview and might be a subject to change. See Bulk time window recommendations for more details.
  • Added actual arrival and departure times for re-planning
    : When re-planning an active route, the actual times recorded by a technician's mobile app for already-completed or in-progress visits can now be provided directly in the planning input. This allows the solver to anchor the re-plan to what actually happened in the field rather than relying on estimated times from the previous plan, producing a more accurate schedule for all remaining visits. See Actual arrival and departure times for more details
  • Maximum constraint weight enforced
    : Constraint weights are now capped at 1,000,000,000,000 (one trillion).
Employee Shift Scheduling (v1 | Stable)
  • Historic shifts excluded from constraint matching
    : If you define a planning window, constraint matches whose shifts all end before the planning window start are now skipped, both in constraint violations and in metrics. For example, with a planning window starting on 1st July 2026, a Daily shift pairing between two April 2026 shifts is no longer evaluated. See changelog for details.
  • Machine-readable validation errors and warnings
    : Data pipelines that submit schedules often need to detect and handle validation issues automatically. Until now, validation messages were human-readable strings that were difficult to parse programmatically. The endpoint
    GET /v1/schedules/{id}/validation-result
    now returns structured validation issues that your code can act on directly. Each issue includes a machine-readable
    code
    (e.g.
    EMPLOYEE_REQUIRED_TAGS_IGNORED
    ), a
    severity
    (
    ERROR
    or
    WARNING
    ), and potentially more properties that identify the affected entity, such as the shift or employee that caused the issue. This makes it possible to build automated mitigations. See Machine-readable validation results for full details and examples.
  • Required tag type for employee pairings
    : Employee pairings now support a
    commonTagType
    field, making it possible to enforce that paired employees work shifts that share the same tag of a given category. This is useful in scenarios where employees not only need to work together but must also cover the same location, route, or department. See requiring a shared tag type for details.
  • Maximum constraint weight enforced
    : Constraint weights are now capped at 1,000,000,000,000 (one trillion).
  • Several smaller bug fixes
    .
Pick-up and Delivery Routing (v1 | Preview)
  • Maximum constraint weight enforced
    : Constraint weights are now capped at 1,000,000,000,000 (one trillion).
  • Several smaller bug fixes.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Insights, improved SLA constraints in FSR, and improved time-between-shifts rules in ESS

Today, we're announcing version v1.4 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Insights (Preview)
    : Our new Insights feature lets you track the quality and behavior of your planning datasets over time. Instead of reviewing individual results in isolation, you can now monitor key metrics across your last 30 datasets or across a 1-week, 1-month, or 3-month window. You can filter by dataset tags to focus on specific business units, regions, or planning types, and customize which input and output metrics are shown. This makes it easy to spot if changes improve or degrade solution quality, or whether key metrics are trending in the right direction over time. See Insights for more information and to get access.
Insights page
  • Searchable sub-group select for configuration overrides
    : The configuration override selector now supports search and sub-group organization, making it easier to find and apply overrides in larger configurations.
  • Several
    security improvements and bug fixes
    , including a fix for a redirect loop for new users.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold models:
Field Service Routing (v1 | Stable)
Employee Shift Scheduling (v1 | Stable)
  • Exclude tags in time-between-shifts rules
    :
    minutesBetweenShiftsRules
    and
    minimizeGapsBetweenShiftsRules
    now support
    excludePreviousShiftTags
    and
    excludeNextShiftTags
    , giving you more flexibility when defining which shift pairs a rule applies to. Previously you could only specify tags that a shift must have. Now you can also specify tags that a shift must not have, making it easier to target or skip specific shift types without having to tag every case explicitly. See Changelog for more information.
  • Self-rostering and optimization scenario guide
    : Employees who can choose their own shifts report higher job satisfaction and lower turnover, but purely self-rostered schedules often leave coverage gaps. A new scenario guide explains how to combine employee-driven self-scheduling with Timefold optimization. See Self-rostering and optimization.
Pick-up and Delivery Routing (v1 | Preview)
  • Maintenance release updating dependencies to deliver security updates.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Demand shift generation, infeasibility handling, and more improvements

Today, we're announcing version v1.3.0 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with several smaller bug, stability, reliability and security fixes.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold models:
Employee Shift Scheduling (v1 | Stable)
  • Demand-curve based shift generation (preview)
    : The model can now generate shifts from demand curves and shift templates. When shift generation is enabled, the shifts are automatically created as a part of the scheduling workflow. The feature can operate with different shift durations and start times to provide flexibility for scenarios like overtime. See Shift generation for more details.
Example of solved dataset based on shift demand definition
  • Consecutive shifts worked
    : Contracts now support
    consecutiveShiftsWorkedRules
    to limit how many shifts employees work in a row. This feature is useful for managing employee fatigue and ensuring compliance with labor regulations regarding consecutive work periods, especially for demanding shifts like night shifts. See Consecutive shifts worked for more details.
  • Tag and tag type order
    : The order in which tags and tag types are defined in the input no longer affects the result. This makes it easier to upload datasets without needing to sort your input. See Changelog for more details.
Field Service Routing (v1 | Stable)
  • Improved solution quality and validation for visit dependencies
    : The model now produces better results from pre-assigned solutions. See Changelog for how we did this.
  • New validation warning for visit dependency timing conflicts
    : Some timing conflicts made a feasible solution impossible; we've introduced a validation worning for this. See Changelog for details.
Pick-up and Delivery Routing (v1 | Preview)
  • Real-time planning scenarios
    : We have added documentation for different real-time planning scenarios in the Pick-up and Delivery Routing model. Real-time planning allows you to update the plan in response to changes in the environment, such as a no show from a customer, a driver calling in sick or a stop taking longer than expected. This documentation provides guidance on how to use the model for these real-time planning scenarios. See real-time planning for more details. We’ve also added documentation for the from-patch preview API for real-time planning. See real-time planning using patches for more details.
Please let us know if you have feedback.
Today, we're announcing version v1.2.0 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Comparison UI improvements
    : When comparing three or more datasets, you can now view a spider chart of key metrics alongside chosen priority metrics, allowing for better customization of and insights into your comparison reports. Additionally, you can now compare the configuration and constraints of two datasets directly in the comparison UI, not just the output metrics. This makes it easier to understand what drove a difference in results.
Screenshot 2026-04-27 at 11
  • Validation warnings and errors surface in the UI
    : Input validation warnings and errors from the model are now displayed in the UI, with machine-readable types. Validation issues are currently only shown for the Field Service Routing model.
  • Several bug fixes, including validation data causing 404 errors on new datasets.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold Models:
Employee Shift Scheduling (v1 | Stable)
  • Granular employee priority
    : You can now assign fine-grained numeric priority values to employees, allowing the solver to prefer higher-priority employees when assigning shifts.
  • Complex tag matching expressions
    : Tag matching in rules now supports complex boolean expressions, not just simple single-tag matches.
  • Multi-hour time intervals in demand rules
    : Demand rules can now span multiple hours in a single interval definition, reducing the number of rules needed for common patterns.
  • Tags on breaks
    : You can now assign tags to breaks, enabling tag-based constraints to apply to break assignments as well as shift assignments.
Field Service Routing (v1 | Stable)
  • Profit as an objective function
    : You can now configure profit as the primary objective, allowing the solver to optimize revenue minus cost rather than pure cost minimization.
  • Enhanced soft grouping of visits
    : This allows for user-defined grouping of visits that should be executed consecutively.
  • Maximum visits per shift
    : You can now set
    maxVisits
    and
    maxSoftVisits
    on a shift to cap how many visits a technician performs in that shift.
  • Explicit optional visit priorities
    : You can now assign explicit priority values to optional visits, giving you finer control over which optional visits are included when capacity is constrained.
  • Additional time for the first visit at a location
    : You can now define extra setup time for the first visit at a location, useful for scenarios where the first arrival incurs additional overhead.
Pick-up and Delivery Routing (v1 | Preview)
  • Demands at the job level
    : You can now define capacity demands at the job level rather than only at the stop level, simplifying configuration for jobs where all stops share the same demand.
Please let us know if you have feedback.

new

improved

fixed

Timefold Platform

Employee Shift Scheduling

Field Service Routing

Pickup & Delivery Routing

Machine-readable validation errors for FSR, weights for preferences in ESS, and more

Today, we're announcing version v1.1.0 of the Timefold Platform and updates to the Timefold models.
This new version of the Timefold Platform comes with these platform improvements:
  • Real-time updates to plans list
    : The datasets overview page in the platform now updates in real-time when new datasets are submitted or being solved.
  • Several bug fixes and stability improvements
    , including a bug that sometimes caused a Platfrom UI login loop.
Next to that, this new version of the Timefold Platform comes with updates to these Timefold Models:
Employee Shift Scheduling (v1 | Stable)
  • Tag matching for breaks during shifts
    : By default, breaks are not counted toward hours worked. It is now possible to optionally supply tags for breaks, which specify whether breaks are counted or not towards hours worked for a certain rule. See Shift Breaks for details.
  • Disruption scope
    : Disruption rules in employee contracts now support a configurable scope, which defines which shifts are deemed disrupted. For example, you can specify that a new shift is only considered disruptive if it starts more than 30 minutes away from the original shift's start time. This helps minimize unnecessary disruption flags when small schedule adjustments are made. This is an experimental API that may change in future releases. See Scope configuration for details.
  • Multiple consecutive minutes off intervals in rolling windows
    : Rolling window rules now support a
    totalConsecutiveMinutesOffMin
    field. This works alongside
    consecutiveMinutesOffMinIntervals
    and lets you express complex rest requirements such as "either one block of 72 consecutive hours off, or multiple blocks of at least 32 hours that add up to 72 hours." See Total consecutive minutes off minimum in a rolling window for details.
Field Service Routing (v1 | Stable)
  • Machine-readable validation errors and warnings
    : A new endpoint
    GET /v1/route-plans/{id}/validation-result
    returns structured validation issues with a unique ID, a machine-readable
    code
    (for example
    VEHICLE_SHIFT_START_TIME_MISSING
    ), a severity (
    ERROR
    or
    WARNING
    ), and an optional
    detail
    object identifying the specific resource that caused the issue (such as a
    visitId
    or
    vehicleShiftId
    ). Two additional endpoints let you query all known issue types:
    GET /v1/route-plans/validation-issue-types
    and
    GET /v1/route-plans/validation-issue-types/{code}
    . See the user guide on input validation for more details.
Pick-up and Delivery Routing (v1 | Preview)
Maintenance release updating dependencies to deliver security updates.
Please let us know if you have feedback.
Load More