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 }
Timetabling, rostering, fixtures — if it has constraints, we can solve it. Tell us about your problem and we'll get you set up.