Model, don't code
Describe events, resources and rules. No custom solver, no hand-tuned heuristics — the constraints are the program.
Belief-propagation optimization engine
Timetables, rosters, tournaments — the combinatorial problems that break spreadsheets. Model them as constraints, and TimelyNodes returns a clash-free schedule in minutes.
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.
Describe events, resources and rules. No custom solver, no hand-tuned heuristics — the constraints are the program.
Never double-book a room (hard) while preferring mornings and compact days (soft). The optimizer trades them off on their true magnitude.
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
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.
Each thing that needs a slot — a lecture, a shift, a match — is a variable to be assigned one timeslot.
Clash, capacity, precedence, same-room, min-gap, availability — each rule scores assignments and passes messages.
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
The engine solves; the platform productises it — import, solve, review conflicts, publish, and hand every participant a live schedule.
Clash, capacity, availability, preferences, precedence, min-gap, same-day, max-span, room suitability — composable per problem.
University timetabling first; the same core models healthcare rosters, sports fixtures and conference tracks.
Author a whole domain in plain text (TNL), version it in git, and recompile — durable, reviewable, diff-able schedules.
Before anything is published, see exactly what moved, what clashes, and room/lecturer utilisation.
Every student or staff member gets a personal schedule and a calendar subscription (.ics) that stays in sync.
Submit a factor graph, poll, fetch the result. Everything the UI does is a public, documented endpoint.
Built for the hard cases
TimelyNodes speaks the standard timetabling benchmarks — the International Timetabling Competition (ITC) instances — so quality is measured against known best-known solutions, not vibes.
Developers
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.
$ 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
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.
Timetabling, rostering, fixtures — if it has constraints, we can solve it. Tell us about your problem and we'll get you set up.