# Agenda v0.3.0 - Table of Contents > Resource-constrained scheduling for Tempo — named resources with attributes, places that contain them, the requirements a session places on them, and the allocation ledger that keeps it all true. ## Pages - [Agenda](readme.md) - [Getting started](getting-started.md) - [Sequencing, tracks and affinity](sequencing-and-affinity.md) - [License](license.md) - [Changelog](changelog.md) - Case studies - [Case study: ElixirConf 2027](case-study-conference.md) - [Case study: consultants on customer sites](case-study-consultants.md) - [Case study: ElixirConf US 2025](case-study-elixirconf.md) - [Case study: meeting rooms and AV equipment](case-study-meeting-rooms.md) ## Modules - Core - [Agenda](Agenda.md): Resource-constrained scheduling for `Tempo`. - Resources and places - [Agenda.Place](Agenda.Place.md): A place — a named location that contains resources and other places. - [Agenda.Resource](Agenda.Resource.md): A resource — a named thing that can be allocated to a session. - Requirements and matching - [Agenda.Predicate](Agenda.Predicate.md): The attribute predicate vocabulary — the words a requirement is written in. - [Agenda.Requirement](Agenda.Requirement.md): A requirement — what a session demands of the resources allocated to it. - Sessions and programmes - [Agenda.Interest](Agenda.Interest.md): One resource would like a session with another. - [Agenda.Precedence](Agenda.Precedence.md): One session must finish before another starts. - [Agenda.Preference](Agenda.Preference.md): What makes one workable layout better than another. - [Agenda.Programme](Agenda.Programme.md): Everything being laid out at once — the tracks, the standalone sessions, and the span they all fall inside. - [Agenda.Series](Agenda.Series.md): A session that repeats — a weekly stand-up, a fortnightly clinic, a daily hand-over. - [Agenda.Session](Agenda.Session.md): A session — the thing being scheduled. - [Agenda.Track](Agenda.Track.md): A family of sessions constrained against *each other*. - Planning and arranging - [Agenda.Arrangement](Agenda.Arrangement.md): One way a session could be held — a time, and a resource for every requirement. - [Agenda.Arranger](Agenda.Arranger.md): Laying out a whole programme — a placement for every session, with nothing clashing. - [Agenda.Conflict](Agenda.Conflict.md): Which constraints are *jointly* to blame. - [Agenda.Infeasible](Agenda.Infeasible.md): Why a session cannot be held. - [Agenda.Layout](Agenda.Layout.md): A programme laid out as far as it would go — what was placed, and what was left out. - [Agenda.Planner](Agenda.Planner.md): Working out when and where a session could be held. - Availability - [Agenda.Availability](Agenda.Availability.md): When a resource is open, and what of that is still free. - [Agenda.Refine](Agenda.Refine.md): Narrowing free time — the verbs that turn *"when is this open?"* into *"when is this actually bookable?"* - Claims and reconciliation - [Agenda.Allocation](Agenda.Allocation.md): One resource, bound to one session, over one interval. - [Agenda.Ledger](Agenda.Ledger.md): What is currently allocated, and to whom. - [Agenda.Limit](Agenda.Limit.md): How much of a resource may — or must — be claimed over a period. - [Agenda.Reconciliation](Agenda.Reconciliation.md): Whether a resource's claims account for the time it owed.