Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

roomread

A workshop instrument. Put a set of researched options in front of a room, make each person choose a small number of them and name the assumption that would kill one, and read the answers back on the projector while everyone is still there.

One HTML file, one config file, and a Google Apps Script that writes to a Sheet. No build step, no dependencies, no accounts for participants.

METHOD.md is the part worth reading. The code is small; the design decisions are the reusable thing.


The shape of it

a page  →  a Google Sheet  →  the same page with #present
  • Participants open a link on their phone, back up to three cards, flag up to three with the assumption that could kill them, and write a sentence on each.
  • The projector runs the same URL with #present appended. It polls every eight seconds.
  • You close by putting the responses on screen and asking an AI what the room just said, live.

Why two axes

A one-axis instrument measures enthusiasm. Rooms have plenty of it, everyone leaves agreeing, and the thing fails later on a risk somebody in that room could have named on the day.

Asking for the risk at the same time as the appetite, from the same person, about the same card, is the whole point. It also gives the sceptic in the room a sanctioned way to be sceptical, so the objection arrives as data instead of as friction.

Try it in ten seconds

cp cards.example.js cards.js
cp config.example.js config.js
open index.html

With an empty endpoint the page runs as a full preview: every interaction works and nothing is saved. That is deliberate — you should be able to hand someone the file and have them understand the instrument without deploying anything.

Deploying it for real

  1. A Sheet. Make one. Copy its id out of the URL.
  2. The collector. script.google.com → new project → paste collector/Code.gs → set SHEET_ID → Deploy → New deployment → Web app, Execute as: Me, Who has access: Anyone. Copy the /exec URL.
  3. Connect them. Put that URL in config.js.
  4. Host the page. Anywhere static.
  5. Test on a phone before the day. Back one, flag one, Send, and check a row lands in the Sheet. Then open the URL with #present.

Testing it

node smoke.js

Runs the page's script against a minimal DOM stub and exercises what a participant actually does: open a group, open a card, back it, hit the cap, back and flag the same card.

⚠️ This file exists because of a real failure. An edit silently deleted the constant holding the pick cap. The page still parsed — a syntax check passed it — and every card quietly stopped responding to clicks, because the detail panel referenced a name that no longer existed. A missing constant is a runtime error, and the only way to catch one is to run the code.

Delete const MAX and smoke.js fails four tests by name. That is the test.

Writing your own cards

cards.example.js has the schema and nine example cards. Four fields per card and each is load-bearing:

name the job, in the words of the person who has it
who who actually has it. "Everyone" means you have not found them yet
today what they do about it right now. There is always something
bet the assumption that has to hold for this to be worth doing

bet is the field people skip, and it is the one the second axis is built on.

What you get

One row per pick, with the participant's own sentence in the why column. The why column is the output. Counts tell you what was popular; the sentences tell you what was meant, and they are the only part that survives contact with a decision.

⚠️ Answers beginning =, +, - or @ are escaped before they reach the Sheet, so nothing a participant types lands in a cell as a live formula.

MIT.


The thinking behind this is at aguedaschwartz.com/practice.

About

A workshop instrument: put researched options in front of a room, make each person back a few AND name the assumption that could kill one, then read it back live. One page, a Sheet, no dependencies. METHOD.md is the point.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages