This page explains exactly what this tool does with your votes, how the
analysis works, and what it can and cannot tell you. If something here doesn't
match what you see on the results page, the page is wrong and we want to know.
What you're doing when you vote
You see one short statement at a time and answer agree, disagree, or pass.
You are not replying to other people and no one can reply to you. That's
deliberate: it removes the argument dynamic and leaves a clean record of what
people actually think.
Where statements come from
Two places, and every statement is labelled with which:
- From the desk — seed statements written to open the space. These
are written to cover the range of positions we know exist, including ones we
disagree with. Seeds are listed in the data export like any other statement.
- From a resident — submitted by participants and approved in
moderation.
Moderation
Submitted statements are reviewed before anyone votes on them. A statement is
approved if it expresses a position someone could reasonably agree or disagree
with. A statement is rejected if it:
- names or targets a private individual
- contains a slur or an attack on a person rather than an idea
- asserts a specific factual claim we can't verify — opinions are welcome,
invented facts are not
- bundles several ideas together, so that agreeing or disagreeing would be
ambiguous
- duplicates a statement already in the conversation
Moderation is about whether a statement can be voted on meaningfully, not
whether we agree with it. Statements critical of the city, this publication, or
the person running this tool are approved on the same terms as any other.
How the analysis works
Once enough people have voted, the votes form a grid: one row per
participant, one column per statement, with agree as +1, disagree as −1, and
pass as 0. Then:
- Each statement column is centred on its average, and the grid is reduced
to two dimensions using principal component analysis (a standard
singular-value decomposition). This is the opinion map — it places people who
voted alike near each other.
- Participants are grouped in that two-dimensional space using k-means. The
number of groups is not chosen by us: the software tries 2 through 5 and keeps
whichever scores best on a standard separation measure (mean silhouette). If
nothing separates cleanly, it reports one group and says so.
- For each statement, the agreement rate is calculated within each
group. A statement counts as consensus only if every group
agrees — we report the lowest group's rate, not an average, so a strong
majority can't hide a dissenting group.
This is the same family of method used by Polis, the deliberation tool
developed by the Computational Democracy Project and used in Taiwan's vTaiwan
process. Our implementation is our own and much simpler.
Thresholds
No map is drawn until there are at least 7
participants who have each voted on at least 5 statements,
and a statement is only scored once it has at least
3 votes. Below that, the shapes would be noise.
What this does not tell you
- It is not a poll and not a survey. Participants opt in. The results
describe the people who took part, not a representative sample of the city.
Anyone reporting these numbers as "what Waynesboro thinks" is misreading
them — including us.
- Groups are not demographics. A group is a set of people who voted
similarly. We collect nothing about who you are, so we cannot and do not say
anything about age, party, ward, or anything else.
- A pass is not a signal. Passes are recorded but treated the same as
not having seen a statement. This is a real limitation of the method.
- Seed statements shape the space. The statements we write to open a
conversation influence what can be found in it. That's why they're labelled
and published.
What we store about you
A random token in a cookie, stored on our side only as a one-way hash, so the
site can tell which statements you've already seen. No account, no name, no
email address, and no IP address is stored with your votes. We cannot identify
you, and neither can anyone who obtains the data.
Check our work
Every conversation publishes its complete vote data as a CSV — every
statement, every vote, with participants as opaque numbers. If you run the
method described above on that file, you should reproduce the results page
exactly. If you don't, tell us.