A spelling board driven by the phone's sensors. There is no word list anywhere in this app. Every word you see was built one character at a time.
The board is an alphabet, a sensor reading is a marker moving across it, and a letter is only chosen if the marker stops and stays on it.
This is the default, and it works the way a spirit box works.
The alphabet cycles on its own clock — twenty characters a second — and nothing about that cycle depends on any sensor. It just runs. When a sensor produces a blip big enough, whatever character is passing at that instant gets grabbed.
Nothing has to be steered and nothing has to be held. The only thing that decides the output is when the blips happen. That is the same job as reaching into a radio sweep, and it asks far less than steering a needle to a letter and holding it there.
A sweep of whole words would look much more impressive and prove much less. If a word sweep says mother, the timing picked one of thirty real words — it did not make a word, it picked a number. The dictionary supplied all the meaning.
A sweep of the alphabet supplies no meaning at all. Every letter is as likely as every other and none of them mean anything. So if something meaningful comes out, the timing of the grabs is the only place it could have come from. That is why this is the honest version, even though it produces the ugliest output.
A sweep on a fixed clock can produce fake structure. CELLS checks that every character is grabbed about equally often. STEP SPACING checks that the distance between one grab and the next varies — because if the trigger fires on a rhythm, the grabs land a fixed distance apart every time and the output comes out in near-alphabetical runs that look uncanny and mean nothing.
That artifact was real in an early version of this build and is why the sweep now visits the cells in a fresh random order every pass. If either check reports a problem, the run is measuring the clock rather than the room.
The third board type drops letters entirely. The whole dictionary becomes the board — 8,242 everyday English words — and the sensor picks one directly. The strip shows the words either side of the current one, so you can watch the marker travelling through the list.
This is how a commercial ghost box works, and it is the least evidential setting in the app. Every result is a real word because every option was a real word. Nothing was spelled and nothing was constructed. The coherence panel switches itself off here, because scoring guaranteed words for word-likeness would be meaningless.
The list came from the system dictionary, filtered by machine rule alone — real inflectable words of three to six letters, with abbreviations and slurs removed. Nobody picked these words for how they would sound in a dark room. There is no grave, no basement, no sorrow weighted in. If a word lands well, that is the dictionary and you, not a deck someone stacked.
An equal-width board gives Q as much room as E. English doesn't. Spelling anything word-like off an equal board is close to hopeless — a real four-letter word turns up about once every 110 characters, purely by luck.
So the cells can be resized:
EQUAL — every letter the same width, like a real Ouija board. A word every 110 characters.
ENGLISH FREQUENCY — each letter as wide as it is common. E is big, Q is a sliver. A word every 25 characters.
PREDICTIVE — the board reshapes after every single letter, based on what usually follows it. After Q the board is almost entirely U. A word every 7 characters. This is the default, and you can watch the cells move.
Speed does not do this. Running ten times faster gives you the same odds ten times sooner; it is the shape of the board that decides whether words can form at all.
Reshaping the board is putting English into the machine. Naturally the output starts looking like English. That would make any "it spelled a word!" moment worthless — the board was built to spell words.
So the score moves with the board. Each setting has its own separately measured baseline for what it produces by chance. On the predictive board, a random run already lands a real word about half the time in an eight-letter string, and the panel expects that. Beating chance means beating that number, not the equal-board one.
The result: you can have word-like output without fooling yourself, because making words easier also raises the bar in exactly the same proportion. If you want the strictest possible test, use EQUAL. If you want something readable to sit with, use PREDICTIVE. The verdict line stays honest either way.
The board runs on a hair trigger by default: it takes a character ten times a second and never asks anything to hold still. Getting characters out is not the test. Everything gets characters out.
The test is whether those characters come out more English-like than chance.
Every finished string is scored against a model of how English letters actually follow one another, built from 71,279 real words. Random letters score around zero. Real English words score two to three points higher. The score for one string is on its log row.
One string means nothing — random noise throws up a good-looking string regularly. What matters is the mean across the whole session, shown in the COHERENCE panel, together with how uncertain that mean is. When the mean is more than about two standard errors from zero, the run is doing something a random one would rarely do.
The app also checks every string against a dictionary of 19,432 four-to-six letter words, and shows how many turned up next to how many pure chance would have produced from the same number of strings.
That second number is the one people never account for. A random three-letter string is a real word about 9% of the time. Finding a word is only interesting if you found more than the expected count, and the panel does that arithmetic for you.
Longer hits are much stronger. A random five-letter string is a real word roughly once in 1,600.
Do a session with nobody present, same room, same settings, same length. Write down its mean coherence and word count. That is your baseline, measured on your hardware in your room rather than assumed.
Then compare. A live session that scores no differently from the empty room has told you something real, and it is worth more than a hundred strings that felt meaningful at the time.
Watch the two lines under the board. HOLD shows how long the marker has stayed put versus how long it needs to stay. BEST HOLD is the longest it has managed all session.
If best hold never gets near your hold time, the sensor is too jumpy — lower the hold time until characters start landing. If best hold is way past it and characters pour out, raise it.
Cells lighting up is not the same as characters being chosen. A cell has to fill completely, without the marker leaving, for anything to be recorded. CHARS on the right tells you how many have actually landed.
This is the whole point of the design.
This only applies when hold time is above zero. Random noise jumps around, landing somewhere different every tenth of a second, so it can never stay in one cell long enough to fill the bar. Tested against pure randomness for thirty minutes at every setting above zero, not one character was ever chosen.
So a raised hold time asks a different question from the default: not whether the output is coherent, but whether anything can hold a reading steady on purpose. Both are worth running.
Driving sensor — which sensor moves the marker. Magnetic is the traditional choice. Entropy is the phone's random number generator, which has no physical input at all. All Sensors blends every working sensor into one reading, so each of them nudges the marker and a character only commits when the whole set settles at once.
Hold time — at zero, every sample becomes a character: about 600 an hour per minute of running, which is what the statistics want. Raise it and the marker must stay in one cell that long before the character counts, which produces far less material but demands something hold the reading steady. Zero tests coherence; higher values test persistence.
Memory window — how far back the app looks to decide what "normal" is. A short window makes it react to sudden changes. A long window lets slow drifts register.
Every character is logged with the exact sensor value that produced it, where that value sat in the range, and when it committed. Export gives you the whole trail. Any word can be taken apart afterwards and checked — by you, or by somebody who doesn't believe you.
A sensor can be held steady by ordinary things. A magnet near the phone. A hand over the light sensor. A machine humming at a constant pitch. Your own hand holding the phone. All of these will spell.
Letters are also the easiest material in the world for a human mind to turn into words. You will see meaning in strings that have none. That isn't a flaw in you — it's how reading works.
So run a control. Same room, same sensor, same hold time, phone left alone, nobody there. If it spells just as much to an empty room, the board is reading drift, not an answer.