Planning software in Rust

Build planning systems your team can inspect, control, and run.

SolverForge helps teams turn scheduling, routing, allocation, and dispatch rules into production software. Domain models, constraints, and runtime control stay in ordinary Rust code, so the behavior remains explicit from the first prototype to the running system.

Runnable app scaffold Readable domain constraints Hospital and delivery examples

Write constraints like you write code

Readable rules, explicit tradeoffs, real application shapes.

Model shifts, routes, tasks, workers, vehicles, and inventories as ordinary application code. SolverForge keeps rule definitions, score analysis, and solver control close to the domain types your team already understands.

constraints.rs
let required_skill = ConstraintFactory::<Plan, HardSoftDecimalScore>::new()
    .shifts()
    .filter(|shift: &Shift| shift.employee_idx.is_some())
    .join((
        Plan::employees_slice,
        equal_bi(
            |shift: &Shift| shift.employee_idx,
            |employee: &Employee| Some(employee.index),
        ),
    ))
    .filter(|shift: &Shift, employee: &Employee| {
        !employee.skills.contains(&shift.required_skill)
    })
    .penalize(HardSoftDecimalScore::of_hard_scaled(1_000_000))
    .named("Required skill");

Open source implementation

Solver core, app scaffolding, UI controls, and routing helpers you can inspect.

Proof before a call

Review the docs, code, releases, and examples before trusting the work.

The documentation shows the operating model, the source shows implementation quality, the examples show behavior, and the release notes show active maintenance. You do not have to wait for a sales conversation to understand how SolverForge works.

In practice

Operator feedback

I have incorporated SolverForge in my new Rust application for staff scheduling and it's working like a charm, A+

Fawaz Halwani, Pathologist, The Ottawa Hospital