The Kootenay Slate
The region's what's-on layer, built as a wall that gets rewritten every day.
35
Boards on the wall
1,111
Pages in the sitemap
2
Facts on every poster: who it is for, what it costs
0
Paid placements, by design

Twenty places to look, and nowhere that had all of it.
Events die in twenty places
A show posted on Facebook, a venue page, a radio calendar, and a tourism site is four half-truths and no whole one. The resident asking what is on tonight opens all four and still is not sure.
And it costs the businessThe compile runs every day because an event is only true for a night, and one stale listing costs more trust than a hundred right ones earn.
Facebook charges hosts to be seen
The platform that used to carry the region's events now shows a host's post to a slice of their own followers unless they pay. A community hall cannot buy its way to its own neighbours.
And it costs the businessThe Slate takes no money from anyone, so its running cost has to stay near nothing, which is why it is static files and not a service with a bill.
Nobody says who it is for
A parent scanning a listing wants one fact first: can I bring the kids. The region's event pages almost never say, and price is left blank more often than it is stated.
And it costs the businessAudience and price are fields almost no feed states, so getting them on the wall means reading the venues' own pages and asking, board by board.
Aggregators guess
A machine that infers a price or an audience from a description will be wrong on the night someone drives an hour for it. The only honest aggregator is one that extracts and never infers.
And it costs the businessEvery field on every poster has to trace to where it came from, and a source that does not say leaves a blank I could have filled with a guess and chose not to.
One wall, by time, that never guesses.
Organise by time, not by poster
Tonight, this weekend, the month, then every town. The first question a resident asks is the first thing on the page, and the wall answers it before they scroll.
Extract, never infer
Every field traces to its source. If the source did not say who it is for or what it costs, the poster does not say either, and free is printed as a word.
Curate the boards
A source earns its place by publishing real events on its own page. Thin boards come off, stale boards come off, and the towns that do not publish get a phone call.
Draw the region, do not photograph it
A risograph print of the Kootenays in four inks, with real landmarks and a map on real geography, so nothing generated can be mistaken for a photograph of a real venue.
The thinking behind the build
The Kootenay Slate is a live product I built and run for my own region. The region had about twenty places to look for what was on and no place that had all of it, and Facebook had made event posts something you pay to be shown. So I built one wall for the whole Kootenays, organised by time instead of by who posted. It reads the calendars venues and towns already publish and puts every event on a poster that says who it is for, what it costs, and where the facts came from.
The idea arrived as a cold email. A local insurance broker who liked The Kootenay List wrote to say the region needed the same thing for events: twenty sites, no frontrunner, and Facebook quietly charging hosts to be seen. He was right on all three counts. The research that followed mapped 63 local event surfaces across both Kootenays and found nothing region-wide, freshness stamped nowhere, and structured feeds sitting unused on municipal and venue calendars.
The hard problems were named before a line was written. A business listing is true for a year. An event is true for a night, so freshness is the whole product. And the data is messy: the same show posted five ways, dates in twenty formats, prices left blank. The rules came first. Extract, never infer. Every field traces to its source. Nothing is scraped that forbids it, and the design does not depend on Facebook at all.
The name came out of a ritual, not a brainstorm. Twenty-seven sites mapped, the words the region had already used up (Calendar, Live, Vibe, the tourism formula) refused, three names shortlisted with the domains checked. The Slate won because the metaphor carries the product's hardest truth: a slate is wiped and rewritten every day. It also sits beside The Kootenay List as one publisher's two properties.
The design was chosen from plates, not argued from a concept. Five directions were generated and put in front of me as whole worlds with tested palettes. The chalkboard I had started from lost to the poster wall, and the poster wall was retuned for all ages, kids and adults both. Then the whole site became a risograph print of the Kootenays in four inks, with 28 town skylines drawn from their real landmarks and a map rebuilt on real geography after the first draft invented the shape of the region. Maps are drawn on references now, and that rule is written down.
Coverage turned out to be a conversation, not an engineering problem. Ten feeds normalised into 356 real things, and a Friday night in Nelson from feeds alone was three listings. So the Slate is curated: a board earns its place by publishing real events on its own page, sources are hunted across a thousand hosts, and the towns and venues that do not publish get a phone call rather than a scraper.
The gates ran the way they run on every build. Zero accessibility findings from the automated sweep and a contrast gate that refuses a green with no nodes counted (a lesson the Slate taught, after the tool dropped a rule silently). CLS at zero. A security pass on the live domain with the headers served as written. A residents' court of ten scored the walk-throughs until the blocks were closed, and the phone menu was redrawn as a wall of doors when the first version confused people.
The product is honest about what it does not know. If a source does not state who an event is for or what it costs, the poster stays quiet rather than guessing. Boards that go stale come off. Anyone who wants a listing gone says so and it goes. The board page credits every source. That restraint is why a parent, a venue, or a town can trust a wall assembled from other people's calendars.
The Slate is also the studio's proof of a second kind. A data product can be built, gated, launched, and run by one hand, on the same honesty rules as the List, then handed to a daily operator with written briefs for every source scan. If your business lives on people finding out what is on, when, and for whom, this is the standard.
What a resident, a parent, and a venue feel on the Slate.
For residents: it answers tonight
What is on tonight, this weekend, and near me, on one wall, with who it is for and what it costs on every poster.
For parents: the family wall
Every event that says it is for all ages or families, on its own wall, and the kids board on the phone menu opens straight to it.
For venues and organisers: your words stay yours
Every poster links back to your page with an ordinary link. The facts go on the wall, the words stay on your site, and if you want something off the wall, say so and it comes off.
Everything that shipped.
I built a static Next.js site that compiles the region's event feeds (municipal calendars, venue calendars, arts councils, the library cooperative, open cultural data) through a curation gate into one dataset. It renders as a poster wall by time, with town walls, venue walls, festival pages, a family wall, corridors between towns, and a search index. Every event and venue gets a calendar file, the add form runs through a moderation queue, and the whole thing installs as an app with the sandwich-board mark as its icon. Every poster carries an ordinary link back to the source, and any board can ask to come off the wall.
Highlights
- The wall by time: tonight, this weekend, the month, then every town, so the first question a resident asks is the first thing on the page
- Who it is for on every poster (all ages, family, 19-plus), with a family wall and a 19-plus wall built from that field
- What it costs on every poster, with free said as a word, and nothing invented when a source is silent
- Curated boards: a source earns its place by publishing real events on its own page, and thin or stale boards come off
- A poster wall drawn as a risograph print of the Kootenays in four inks, with 28 town skylines built from their real landmarks and a map rendered from real geography
- A calendar file for every event and every venue, so a room can put its own listings on its own site
- Every poster links back to the source with an ordinary link search engines follow, and the words stay the source's
- The add-an-event flow with a moderation queue, and a takedown promise on every board
- The Board mark: the sandwich board a pub drags onto the sidewalk, chalked with the S, one silhouette, one colour
- Installable on a phone as an app, with shortcuts straight to tonight, the weekend, and the family wall
- No paid placement in the data model, so the wall cannot be bought
- Sister property of The Kootenay List: same publisher, same honesty gates, a different world, the List by kind and place and the Slate by time
Pages and surfaces
- Home (the wall: tonight, this weekend, the month)
- Time pages (tonight, this weekend, next 30 days, any day)
- Town walls for every town above the coverage bar
- Venue walls and festival pages
- The family wall and the 19-plus wall
- Corridors (the drive between towns)
- The boards page (every source, credited)
- Event pages with Event schema and a calendar file
- Add-an-event flow with a moderation queue
- Search over a precomputed index
- Installable app (manifest, icons, shortcuts)
- About, rules, privacy and terms
Real code. Real routes. Production ready.
- Static Next.js output, 1,111 sitemap URLs, no database in production: the wall compiles from a curated dataset into flat files
- Event schema on every event page, BreadcrumbList, ItemList and WebSite schema across the site
- RFC 5545 calendar files generated per event and per venue
- A curation gate in the build: boards under the coverage bar do not render, so no thin pages exist
- Zero automated accessibility findings; a contrast gate that asserts a non-zero node count so a silent tool failure cannot pass as a green
- CLS 0 on the home wall; the poster face self-hosted and subset so the type costs 67 KB
- Security headers served as written on the live domain, CORS locked to the site's own origin, a minimum time-to-submit and a honeypot on the add form
- Installable web app: manifest, maskable icons at every size, Apple meta, shortcuts to tonight, the weekend and the family wall
Stack
Built honestly
The Kootenay Slate is a real, live product that I own and operate at kootenayslate.ca. The numbers here are read from the live site on September 5, 2026: 35 boards, 1,111 pages in the sitemap. Event counts change daily by design. The illustrations are risograph-style plates of the region, drawn on real references, never photographs of real venues.
This is the second thing I built for my own region.
The List is the register and the Slate is the wall. Both run on the same rule: complete, honest, dated, and free to be on. If your project lives on people trusting what you publish, that is the standard I build to, and the two products are the proof.
This one is owned KMD infrastructure, not a client package. The same craft is for hire: see the services.
More work
20 / 20
