NWKS Encounter: Nobody Retypes Anything
Two Encounters a year, a men's and a women's, taking their own registrations and building their own cabins, teams and printed rosters, on one system where the two ministries' data cannot cross.
Everything after the form was somebody retyping it.
Northwest Kansas Encounter puts on two retreat weekends a year, one for men and one for women, staffed by volunteers. Sign-ups ran on a WordPress site pointed at Google Forms, which turned away anyone without a Google account, and the women's server places filled within the first five minutes, so the overflow was retyped into a spreadsheet by hand. The women's Encounter could not sign a volunteer up online at all: its form existed as a disabled stub the site never referenced. A weekend that filled stopped taking people, and the waitlist was worked by telephone, where by the time somebody was called a lot of them had already made other plans.
Behind the form, the same work was done again and again by hand. Room assignments were, in the ministry's own words, one hundred percent manual: a spreadsheet rebuilt from scratch every cycle, grouped by who had invited whom and then by town, with three people touching it. The volunteer team sheet was a static workbook re-typed each cycle, down to roughly forty-nine server names hand-keyed into a spare column so somebody had something to drag from. Launch-point details were personally emailed to everyone who had signed up, every one to two days, by one person in each program. The recurring letters had gone out for a decade from Word documents on somebody's laptop.
It ended on the last night with the paper the weekend physically runs on. One volunteer sat and hand-typed 720 printed pieces for 144 people, 288 name cards and 432 stickers, putting the logo in by hand, and then did the luggage tags. And the ministry raised the real risk itself, unprompted, before anyone asked: they had no security at all on a system collecting a lot of names and phone numbers.
One system, and a tiebreak the whole build was judged against.
The design rule this engagement was decided by is written into its own documents and quoted back across four of them: the design that means nobody retypes anything wins. Every part of what follows is an instance of it.
The public side is one page. Registration opens at an instant the ministry sets in advance and flips on its own with no network call at that moment, because an Encounter fills and the ministry announces a time. Before the announced minute there is no form at all, not a disabled one and not a notice. After it, the same form quietly re-points at a waitlist when the weekend is full, so a person who arrives late joins a queue with their details already captured. When a seat is released the next person is emailed an offer with a day to take it, and the seat is held by an unresolved outcome rather than by a clock, claimed by a compare-and-swap so two people cannot accept the same bed. Viewing the offer changes nothing and only a deliberate action accepts it, so an email scanner opening the link on somebody's behalf cannot take a seat for them.
The cabins are drafted rather than arranged. A weighted planner works the whole board against seven ranked objectives, the two heaviest being that a town's men are not placed on a side with none of that town's servers, and that a man lands in the same cabin as the server who invited him. It is tuned to produce a defensible first draft of roughly 144 bed assignments, so two volunteers can correct it by hand in an evening and hand the result to the printer with nobody retyping a name. A bed set by hand is locked and a rerun never moves it. The weighting itself was argued down once, from a level where one rule had stopped being a weight and had become a hard constraint wearing a number, and the test that pins the order of those objectives caught the first replacement value for being a different instruction rather than a gentler one.
The weekend's volunteer teams are drafted from the ministry's own history: 684 team placements across fourteen Encounters between 2015 and 2026, plus twenty of their schedule workbooks, turned into eleven measured rules. Nothing in it is a preference somebody typed in, and deliberately no rule names a team, so the women's Encounter is entitled to a different answer to the same question out of its own sheets. The most useful thing it does is refuse: handed a programme it has no history for, it declines to draft at all and says so, on the reasoning that with no past sheets there is nothing on offer but a guess with a confident interface. Once a sheet exists the system also reads it backwards, running eight checks against a decade of practice, including the one nobody could do by eye: spotting that a man who has captained the same team for years has been quietly re-registered under a misspelling of his own surname and placed among the first-timers. That check is deliberately built to share no code with the engine that drafts, so it can catch that engine's own drift.
Then the paper, which is where the retyping actually ended. Three print jobs and four workbook profiles produce the badges, luggage tags and rosters, all written from scratch with no dependencies and drawn at absolute coordinates into a PDF rather than handed to a browser's print dialog, because a correctly registered sheet of label stock should not depend on somebody setting margins, scale and headers right in whatever browser they are in front of at midnight the night before the Encounter. The cheapest win shipped before the generator even existed: an export shaped exactly the way the label importer expects, which retired the hand-typing outright. And nothing is blocked by one unresolved person, because the tags that can be made get made and the person who could not be placed is named on an exception page instead. The paper reports its own gap.
The security answer is the one the ministry asked for. Passwords are scrypt, sessions are opaque and server-held, there are three roles on a default-deny allowlist so a route added next month is refused to reviewers until someone opens it on purpose, and every administrative action is written to an audit trail where a refusal is logged rather than quietly returning an empty list. Most of all the two ministries cannot reach each other's records. That is enforced by the database itself, 127 triggers of which 113 are that separation, because the leak that actually happened did not come through a route: an import script wrote straight to the database and put eighteen men's registrations under an invented women's event, where they surfaced in the women's administrators' panel. A route can be forgotten and a trigger cannot, and a standing test now fails the build if a new table is added without one.
What the ministry can do now that it could not before.
Registration opens at an announced instant and flips on its own, with no network call at the moment it opens
A full or closed weekend collects a waitlist on the same form, instead of turning people away to be telephoned later
Both Encounters can sign up volunteers online; the women's Encounter previously had no path at all
Nobody needs a Google account to register
A released seat is offered to the next person automatically, with a day to accept before it moves on
Cabins are drafted by a weighted planner against seven ranked objectives, and a bed set by hand is never moved
Volunteer teams are drafted from the ministry's own eleven years of sheets, and the draft refuses rather than guesses
The finished sheet is checked backwards against a decade of practice, including duplicate people under misspelled names
Badges, luggage tags and rosters print from the system onto named label stock, with no name retyped
Launch-point details and the ministry's decade of recurring letters send from templates instead of a laptop
Post-encounter check-in runs from a QR code per town, so one sheet of paper does not have to hang in eight places at once
Men's and women's records cannot cross, enforced in the database rather than in the code that talks to it
The public site
- The entire site is one self-contained document: every stylesheet, every script and every image inlined
- Measured live on 2026-09-18 at 732,053 bytes with zero external stylesheets and zero external scripts
- The build refuses to emit a file that is not self-contained, and fails on any surviving external reference
- Four registration forms across the two Encounters and the two roles, each with its own waitlist destination
- The office edits its own questions and page copy without a developer, but cannot retarget a weekend's sign-ups
- A phone number is never reformatted into a different number: a value that cannot be prettified without dropping a character is left exactly as typed
How it refuses
- Handed a programme it has no history for, the team draft declines to build one and says why
- Unattended mail is redirected to one inbox, with its real recipient named in the subject, until somebody deliberately turns it live
- Second-factor enforcement is on unless one exact string turns it off; a misspelling leaves it on
- Reviewer access is an allowlist, so a route added next month is refused until someone opens it on purpose
- A shared sign-up link lands every claim in a pending queue for a human, rather than granting anything itself
- An account that has done work is retired rather than deleted, because its rows are somebody's byline
- A bulk offer pass is bounded, and a pass that stopped early says so rather than swallowing it
Outcomes the engagement actually produced.
288 name cards and 432 stickers were hand-typed by one volunteer on the last night, logo included, and then again for the luggage tags. They now print from records nobody has retyped, and an unplaceable person is named on an exception page rather than stopping the run.
The ministry's own history, turned into eleven measured rules that draft the weekend's volunteer teams. No rule names a team, so each Encounter gets the answer its own sheets support, and with no history at all the engine refuses to draft rather than guess.
Launch-point details were personally sent by one volunteer in each program, because the old system held a launch point's name and nowhere to put the address, the departure time or the coordinator's phone number the email is made of.
113 of them keep the men's and women's records apart, after an import script wrote eighteen men's registrations under an invented women's event. A route can be forgotten and a trigger cannot, and a standing test now fails if a new table arrives without one.
Related case studies
The Iron and Oak Podcast
134 pre-rendered pages, full cinematic media brand
A Chicago-Area Bus Transportation Operator
Reconciliation: full day to a 15-minute exception queue
HG Oil Holdings: Inventory System
95% logistics-time reduction, loss center to profit center
Is somebody on your team retyping the same list every cycle?
Preisser Solutions builds the system the office actually runs on, including the paper that comes out of it. Scoping begins with a conversation about how the work is done today.
