FRITHROUNDS 1.0.0 · THE ORGANISER’S FIELD GUIDE

A place for everyone.
A plan you can keep.

Turn ranked workshop choices into a reviewed plan, then keep rosters and participant itineraries together as one approved revision.

This guide and the six-person practice data are free. The separate paid download includes the offline application. No application source is included in the free pack.

1. Open the workspace

Extract the entire buyer ZIP into an ordinary folder. Open START-HERE.html, then index.html in desktop Google Chrome. Keep the JavaScript, stylesheet, manual and examples folders beside it. There is no installer, account, server or package download.

Tested on Linux with Google Chrome 152.0.7977.82, opening local files with networking disabled. Other browsers, operating systems and physical printers have not been verified. Narrow layouts were inspected at 390 pixels; desktop Chrome is the intended planning environment.

  1. Choose Try the six-person skills day.
  2. Choose Generate proposal. Expect six participants, two rounds, zero missing places, six first choices and six second choices. The rank sum is 18.
  3. Review the names and rooms. Choose Approve revision 1, then Download project.
Actual running example with three topic columns in each of two rounds, twelve assigned places and rank sum eighteen
Actual local Chrome result. Round 1 pins fix the demonstration; the second round gives everyone a different topic.

Round 1: Repair—Ada and Ben; Printmaking—Cora and Dev; Seed saving—Elin and Finn. Round 2: Repair—Elin and Finn; Printmaking—Ada and Ben; Seed saving—Cora and Dev. Every person needs two distinct topics, so their two ranks sum to at least 3. Six people therefore need at least 18; this sample reaches that bound. This proof is specific to the example.

2. Bring your own event

Download your current project before replacing data. To start a separate event, reopen index.html in a new tab and choose Start an empty event.

Set up sessions first

In Sessions & rooms, enter the event name and number of rounds, then save. Edit the session sheet or choose Read sessions CSV to fill it from a file. Review the text and choose Apply session sheet. Reading a file alone does not apply it.

session_id,round,topic_id,topic_name,room,capacity
R1A,1,A,Repair,The bench,2
R1B,1,B,Printmaking,Studio 2,2
R2A,2,A,Repair,The bench,2
R2B,2,B,Printmaking,Studio 2,2

The included examples/sessions.csv has the full three-topic sample. Session IDs are permanent references. Renaming a room preserves the session ID; moving a session to a different round is an explicit source change when you apply the sheet. One topic ID must have the same display name in every round.

Map people and choices explicitly

In People & choices, choose Import roster CSV. Select your UTF-8 comma-separated file. Match the participant ID, display name, choice columns in order, and optional active column. Each source column may be used once. Then choose Review topic mapping and explicitly match each distinct source value to a session topic ID. Choose Apply mapped roster only after reviewing every mapping.

Actual roster mapping screen with custom source column names and unmapped Repair and Print topic strings
Unknown topic strings stop import. The example deliberately contains an unusual name to show it stays text rather than running as markup.

Import replaces the draft participant list and removes draft pins. The last approved snapshot is retained. Failed imports preserve the current project. The original source file is read only; exporting always creates a browser download. Source strings and mapping decisions are stored in the project. IDs and values are exact: A, a, and A differ. Names never become IDs automatically.

For small changes, use Edit in the guest list or add a participant below it. Enter choices as comma-separated topic IDs, such as A,B,C. To replace a participant ID, deactivate the old record and create a new one; the app does not silently merge identities. Deactivated records still count toward the 80-record limit; a roster replacement can remove them.

3. Review a proposal and its changes

Generate a proposal in The plan. The worker searches up to 200,000 transitions, with a 10-second guard. A transition is an attempted itinerary extension, allocation choice or skip branch. Complete proposals can still say Search limit reached: a valid result was found but search stopped before exploring further alternatives. That message does not prove infeasibility or optimality. Incomplete proposals cannot be approved.

The best-effort objective first fills participant-round places, then—in repairs—reduces changes to surviving assignments, then reduces rank sum. The search uses whole-person itineraries; difficult cases may leave an entire person unassigned. It is not a fairness guarantee and may miss feasible arrangements.

Move, pin and undo

Select a person on the plan, or use the participant selector. Change a round’s session to move them. A move is rejected if it exceeds capacity, repeats a topic, violates choices or conflicts with a pin. To exchange people between full rooms, unassign an unpinned place first, make the exchange, and check the completed result. Approval stays unavailable until everyone has all rounds.

Pin round keeps that assignment through regeneration. Remove a conflicting pin explicitly in Sessions & rooms before changing the person’s choices or session. Pins belonging to a deactivated person are removed from the draft; surviving pins are kept. Undo last edit holds up to ten input or manual-allocation edits during the open session. Approval and project reopening clear undo history.

Changes to participants, preferences, sessions, capacity or event details clear the draft proposal, retain pins that remain valid, and preserve the approved packet. Manual assignment changes also become a draft. Cancel search retains the previous proposal; editing while searching cancels the old job so late results cannot overwrite your edit.

Try a cancellation

  1. Approve the six-person sample as revision 1.
  2. In People & choices, deactivate Ben (P02).
  3. Generate a new proposal. Expect 10 places and rank sum 15.
  4. In Review & print, inspect two cancelled participant-round entries. None of the five surviving participants should move.
  5. Approve revision 2, download it, and collect Ben’s old itinerary.
Actual cancellation review showing Ben's two removed assignments while revision one remains available
The draft compares with the last approved revision, never an intermediate unapproved proposal.

The checklist distinguishes cancelled participants, reassigned sessions, newly added assignments and changed printed labels. It carries old/new names and labels plus revision numbers. Renaming a room can require replacing papers even when nobody moves.

4. Keep and print the approved revision

Approval reruns the independent allocation checker. Every active participant must attend every round, choose an eligible topic without repetition, fit within capacity and respect pins. An empty event cannot be approved. Approved inputs and assignments are copied together, so later renaming does not alter an archived packet.

Choose Download approved ZIP in Review & print. The ZIP contains packet.html, assignments.csv, changes.csv, and project.json. Preview approved packet shows that same frozen revision. Download draft ZIP produces clearly marked DRAFT documents; do not distribute them as an approved plan.

Actual approved packet export screen with an embedded facilitator roster preview
The approved packet remains available while you edit the next draft.

Extract the exported ZIP. Open packet.html in Chrome and choose Print / Save as PDF. Select A4 or Letter, portrait, 100% scale, and disable browser headers and footers. The document sets 12 mm margins. There is one participant itinerary per page, ten names per roster page, and up to three change entries per checklist page. Empty sessions receive an empty roster. Ranks do not appear on participant cards.

Use Chrome’s print preview before distributing. The original sample produces 13 pages: six rosters, six participant itineraries and one checklist. After Ben’s cancellation there are 12 pages and five itineraries. Long-label tests cover 80 people across three rounds. Repeated whitespace and line breaks are collapsed on paper to keep labels readable; JSON retains the exact text. Physical printing and cutting have not been tested.

Close and reopen safely

There is no autosave. Choose Download project whenever you want a durable copy. The project preserves the current draft, mappings, pins and the last approved snapshot. Only one approved snapshot is retained internally; keep earlier downloaded ZIPs yourself. Do not delete or overwrite your only copy.

After closing the app, open index.html again and choose Open project. Select the downloaded JSON. Inputs and saved assignments are revalidated; unsupported versions or invalid approved snapshots are rejected. Approval is an organiser workflow label, not a digital signature or tamper-proof audit record.

CSV exports use an apostrophe before text that could start a spreadsheet formula (including leading whitespace before = + - @, or leading tab/newline). This can change the displayed cell text; exact source values remain in JSON. CSV compatibility was checked with Python’s standard reader, not a proprietary spreadsheet application.

When a plan needs attention

What you seeWhat to do
Round has fewer seats than active peopleAdd a session or increase capacity in that round, or deactivate a cancelled participant. This specific count proves a shortage.
Too few distinct eligible topicsGet the person’s permission to expand choices. Everyone must have at least as many distinct eligible topics as rounds; that condition alone does not guarantee a feasible plan.
Pin conflicts with a source editRemove the named person/session pin in Sessions & rooms, then apply the edit. Pins are never silently dropped for surviving participants.
Search limit reached or places missingReview bottlenecks and pins, adjust capacity or preferences deliberately, or finish with manual moves. A search limit does not prove the event is impossible.
CSV row/quote/header errorExport UTF-8 comma-separated CSV with a single header row. Quote names containing commas or line breaks; double embedded quote marks. Remove blank records explicitly.
Unknown or duplicate IDUse unique, exact stable IDs; correct the file. Duplicate names are allowed but IDs cannot repeat.
App does not open correctlyExtract the whole ZIP and open index.html in desktop Chrome. Do not preview it inside the archive. Keep all adjacent files.
Missing work after closingOpen your most recent downloaded project. Unsaved session changes cannot be recovered.
Old printed name or roomYou are looking at a preserved approved revision. Generate, review and approve the new draft, then distribute the new packet and retrieve old copies.
Actual blocked proposal reporting five seats for six active participants in round two
In the six-person example, reducing round-2 Printmaking to one seat leaves only five seats in that round and blocks approval.

Exact formats and limits

Keyboard controls and rejected imports

Use Tab and Shift+Tab to reach controls, Enter to activate buttons and file pickers, and arrow keys to change a focused list. Column and topic mapping can be completed with the keyboard. After a view refresh, press Tab to reach the next control. A rejected roster or project leaves the current event and approved revision intact; correct the reported issue and choose the file again. Reading a sessions file fills the editable sheet; only Apply session sheet changes the event.

The file-size limits are safety ceilings, not suggested file sizes. A file below the ceiling must still meet the row, name and schema rules. Search is best effort even for events within all count limits.

Privacy and uninstall

The application has no network requests, analytics, browser storage or server component. Files are processed in the open tab; downloads remain wherever your browser saves them. Anyone with access to those files can read names and preferences. Store and share them appropriately. Source imports are never overwritten by the app.

To uninstall, close the tab and delete the extracted application folder. Delete downloaded projects, exports and PDFs separately if you no longer need them. There is no app account to remove. The free pack can also be deleted as ordinary files.

Original fictional sample and screenshots, 2026-10-03. FrithRounds is a USD 19 one-time product experiment; no customer-demand or outcome guarantee. See LICENSE.txt and NOTICES.md in the buyer download.