Belief-propagation optimization engine

Scheduling problems,
solved as an API.

Timetables, rosters, tournaments — the combinatorial problems that break spreadsheets. Model them as constraints, and TimelyNodes returns a clash-free schedule in minutes.

0events per solve
0constraint types
decoder-guaranteed

Every extra rule multiplies the difficulty

A hundred lectures, forty rooms, teacher availability, room capacity, no student double-booked — the number of possible timetables is astronomically large. Brute force never finishes. Heuristics get stuck. TimelyNodes treats it as what it is: a constraint-optimization problem on a factor graph.

Model, don't code

Describe events, resources and rules. No custom solver, no hand-tuned heuristics — the constraints are the program.

Hard & soft together

Never double-book a room (hard) while preferring mornings and compact days (soft). The optimizer trades them off on their true magnitude.

Minutes, not weekends

A 2,100-event, 231k-edge problem converges in a few minutes — with a decoder that guarantees clash-free output every time.

How it works

A factor graph, solved by message passing

Your problem becomes a graph of three node types. Belief propagation passes messages along the edges until the assignment settles — then a decoder locks in a feasible schedule.

Variable

Events

Each thing that needs a slot — a lecture, a shift, a match — is a variable to be assigned one timeslot.

Constraint

Rules

Clash, capacity, precedence, same-room, min-gap, availability — each rule scores assignments and passes messages.

Resource

Rooms

Shared resources with capacity. The solver resolves each event to a concrete room after times are fixed.

POST /api/v1/optimize
{
  "graphDefinition": {
    "nodes": [
      { "id": "lec-math", "type": "VARIABLE", "metadata": { "duration": 2 } },
      { "id": "clash-y1", "type": "CONSTRAINT" },
      { "id": "room-101", "type": "RESOURCE", "metadata": { "capacity": 120 } }
    ],
    "constraintStrategies": {
      "clash-y1": { "strategyName": "clash", "parameters": { "penalty": 10000 } }
    }
  }
}
→ 200  { "assignment": { "lec-math": 3 }, "costBreakdown": { "CLASH": 0 } }

The platform

From raw constraints to a published timetable

The engine solves; the platform productises it — import, solve, review conflicts, publish, and hand every participant a live schedule.

Constraint library

Clash, capacity, availability, preferences, precedence, min-gap, same-day, max-span, room suitability — composable per problem.

Multi-vertical

University timetabling first; the same core models healthcare rosters, sports fixtures and conference tracks.

Domain DSL

Author a whole domain in plain text (TNL), version it in git, and recompile — durable, reviewable, diff-able schedules.

Conflict review

Before anything is published, see exactly what moved, what clashes, and room/lecturer utilisation.

Live participant view

Every student or staff member gets a personal schedule and a calendar subscription (.ics) that stays in sync.

API-first

Submit a factor graph, poll, fetch the result. Everything the UI does is a public, documented endpoint.

Built for the hard cases

The same problems the field competes on

TimelyNodes speaks the standard timetabling benchmarks — the International Timetabling Competition (ITC) instances — so quality is measured against known best-known solutions, not vibes.

0classes in a single real instance
0distribution constraints
0students to schedule

Developers

A clean optimization API

Three verbs: submit a job, poll its status, fetch the result. Self-contained docs, a Swagger UI, and a sandbox API key to start in seconds.

  • Factor-graph request model — nodes, edges, strategies
  • Duration-aware, multi-day, multi-week scheduling
  • Cost breakdown per constraint — full transparency
  • Scales to thousands of events per solve
Get an API key
$ curl -s api.timelynode.com/api/v1/jobs/$ID
  { "status": "SUCCEEDED", "convergenceScore": 0.98 }

$ curl -s api.timelynode.com/api/v1/jobs/$ID/result
  {
    "assignment": { "lec-math": 3, "lec-cs": 7 },
    "structuredAssignment": {
      "lec-math": { "timeslot": 3, "room": "room-101" }
    },
    "costBreakdown": { "CLASH": 0, "ROOM": 12 },
    "totalCost": 12
  }

University research programme

Do you build university timetables?

We're speaking with timetabling teams about where today's tools fall short and what the next generation should actually solve. About seven minutes, anonymous if you prefer, and participants get the findings.

Bring us your impossible schedule.

Timetabling, rostering, fixtures — if it has constraints, we can solve it. Tell us about your problem and we'll get you set up.