SHEET 01Scope and provenance

iDemocracy:
a build blueprint.

An engineering proposal for Jac Mat'R, by Codiste, 24 August 2026: what you are building, and how we would build it.


Reading the numbers

Filled square: a constant published by a real system, source named.

Hollow square: a Codiste estimate or proposal. Nothing here is a result we have achieved.

Sources

Polis clustering pipeline (arXiv 2306.11932 and the compdemocracy/polis wiki math overview), the Community Notes ranking source, Vitalik Buterin on proof of personhood, and the Decidim feature set.

SHEET 02Our read

What we think you are building.

Reconstructed from one meeting months ago. Tell us which is wrong.

01  The unit

A question under discussion is the atom, not a post.

02  The franchise

One person, one voice, checked once at the door.

Probably wrong
03  The geography

One jurisdiction first. A second is configuration, not a fork.

04  The output

A conversation ends where an institution answers.

Probably wrong too
05  The feel

2026 social software: mobile first, profiles, notifications, direct messages, spaces.

06  The friction

Voting is nearly free. Posting is deliberately not.

SHEET 03Figure 1, interactive

The one decision that defines the product.

Same statements, same votes, same people. A different objective function. Flip it.

OPINION SPACE / PCA OF THE VOTE MATRIX GROUP A, 640 participants GROUP B, 360 participants Clusters come from the vote matrix alone. No statement text is read at any point. RANKED BY: TOTAL AGREEMENT (POPULARITY) Strip planning rights from developers who miss housing targets 635 agrees Group A 93% agree · Group B 11% agree Stream and archive every council meeting 572 agrees Group A 55% agree · Group B 61% agree Publish every consultation response unedited 523 agrees Group A 49% agree · Group B 58% agree Licence and insure all cyclists 386 agrees Group A 9% agree · Group B 91% agree Bar colour is fixed and never changes: amber and blue statements belong to one group, mint statements hold across both. Only the order and the score change. Illustrative statements and vote counts. The mechanism is real; these numbers are not.
FIG. 1  Four statements, one thousand illustrative participants. Bridging score here is the agreement a statement holds in the group that likes it least: Polis calls it group-informed consensus.

Top of the list is the statement 595 people in Group A agree with and Group B rejects nine to one. It has the most agreement in absolute terms, and it is also the statement most likely to make a third of your users close the app. This is what an engagement feed selects for, and it is not a bug in the feed.

SHEET 04The hard part

Six problems that decide whether this works.

01  Objective function

Bridging is not a filter on an engagement feed, it is a different objective. The feed wins any disagreement.

02  Cold start

Nothing starts without human-authored seed statements, and Polis documents a vote matrix over 90% missing.

03  Live clustering

Recomputing PCA and k-means on every vote does not survive growth. Polis fixes base clustering at K = 100 and clusters the centroids.

04  Sybil resistance

Every published personhood scheme has named failure modes. The nastiest is ID renting: a verified person rents their identity out, per vote.

05  Moderation

Nearly every comment needs human moderation before display (Polis): an operating cost, not a feature.

06  Map to decision

Decidim ships an accountability component tracking accepted proposals. Every clone omits it.

SHEET 05Decisions 1 and 2

Decisions for week one.

Decision 01

What is the ranking objective?

OPTION A

Engagement ranking plus a civility filter.

OPTION B  OUR LEAN

Group-informed consensus on the vote matrix.

OPTION C

Community Notes matrix factorisation, once votes overlap densely.

Our lean: B first, C later as a second pass.

Changes our mind: a note-heavy product where users annotate others' content: go straight to C.

HELPFULNESS MODEL / MATRIX FACTORISATION predicted rating of note n by rater u r(u,n) = μ + i(u) + i(n) + f(u) · f(n) μ global intercept, the baseline everyone shares i(u) rater intercept, how generous this rater is in general i(n) note intercept, the bridging signal, and the number that gets gated f(u) · f(n) agreement explained purely by viewpoint alignment LOSS Σ ( r - r(u,n) )² + λi ( i(u)² + i(n)² + μ² ) + λf ( ||f(u)||² + ||f(n)||² ) λi = 0.15 λf = 0.03 penalty on intercepts penalty on factors Intercepts are penalised five times harder than factors. So the model is forced to explain agreement by viewpoint alignment first. Only what alignment cannot account for is left in the intercept, and only that residual counts as genuine cross-viewpoint helpfulness. Constants published in twitter/communitynotes, ranking-notes.md. PUBLICATION GATE -0.50 factor 0 +0.50 note intercept 0.40: the publication threshold 0.30 to 0.40: where the narrower models decide Published as Helpful only when the note intercept reaches 0.40 and the factor magnitude stays under 0.50. Fewer than about 10% of notes ever clear it. Dot positions are illustrative. Thresholds are published.
FIG. 2  The asymmetric regularisation is the whole trick. 0.30 to 0.40 is where narrower models decide.
Decision 02

How do clusters stay live as a conversation grows?

OPTION A

Recompute the full matrix on a timer.

OPTION B  OUR LEAN

Fixed K = 100 base clusters, then group clusters over the 100 centroids, k by silhouette coefficient.

OPTION C

Streaming clustering. Drift bugs are hard to debug.

Changes our mind: conversations under about two thousand participants. Then A.

PARTICIPANT × STATEMENT MATRIX over 90% of cells are missing votes are agree, disagree or pass impute by column mean STAGE 1 · BASE CLUSTERS PCA down to 2 dimensions K-means with K = 100, fixed cluster the 100 centroids, never the N participants STAGE 2 · GROUP CLUSTERS K-means over those 100 centroids k chosen by silhouette coefficient cost independent of participant count A B C k groups Why it stays real time Stage 2 always runs over exactly 100 vectors, so its cost is a function of 100 and not of how many people are in the room. Only stage 1 grows with N, and K-means at fixed K is linear in N. Why it ports to any jurisdiction There is no NLP anywhere in this pipeline. It runs on the vote matrix alone, so it is language agnostic and needs zero retraining to move to a new country, a new language, or a new subject.
FIG. 3  Source: arXiv 2306.11932 and the compdemocracy/polis wiki math overview.
SHEET 06Decisions 3, 4 and 5

Identity, moderation, outcome.

Decision 03

How do you prove a person, without surveillance?

PROOF OF PERSONHOOD / NOTHING WINS ON ALL FOUR filled = strong, half = partial, hollow = weak PRIVACY ACCESS DECENTRAL SYBIL-PROOF DOCUMENTED FAILURE MODE Biometric hardware, orb style A malicious Orb manufacturer can mint unlimited fake identity hashes. Social graph, web of trust Leaks the social graph itself, and drifts into de facto centralised KYC. Public profile, Proof of Humanity style Requires a publicly visible face, which is exactly what deepfakes are good at. Government ID and KYC Excludes the undocumented, and hands the register of who spoke to a central party. Hybrid, scoped per action, our lean More moving parts, and no single vendor to hold responsible when it fails. No column is empty on the last row, and no column is full. That is the trade we would take. Failure modes that defeat almost all of them ID renting: a real, verified person rents their identity out per vote. This defeats re-registration defences and it breaks MACI-style vote invalidation, which is the mechanism most designs reach for first. Coercion: someone is forced to scan, purely to test whether they had already registered. Payment capture: a user registers with a buyer's public key, so the credential belongs to the buyer from the start. Source: vitalik.eth.limo, 24 July 2023.
FIG. 4  Our reading of the documented trade-offs, not a published scoring. Failure modes quoted from the source.

Our lean: a hybrid, scoped per action rather than per person: biometric or hardware bootstrap, social graph, no global identity.

Changes our mind: a regulator requiring verified legal identity. Then a narrow KYC boundary.

Decision 04

Who moderates, and what stops the model being gamed?

OPTION A

Classifiers as the primary gate.

OPTION B  OUR LEAN

Human queue before display, classifier as a pre-filter, adversarial backstop.

The backstop matters more than the bridging. Community Notes runs a second factorisation purely for harassment: a rater whose harassment intercept exceeds 2.0 has 5.0 times it subtracted from their helpfulness contribution.

Changes our mind: volume. Under a few hundred statements a day, the queue is a spreadsheet.

Decision 05

What happens after the conversation ends?

OPTION A

Publish the cluster map. Nothing happens next.

OPTION B  OUR LEAN

A Decidim-style accountability component: lifecycle, named recipient, status, public record.

Changes our mind: no institution yet. Then author responses, public status, a visible clock.

SHEET 07Figure 5, architecture

How we would build it.

The shape that matters: the social layer and the ranking layer are separate systems with one contract between them, so the feed can never quietly start optimising for something the ranking service did not decide.

01 · CLIENTS iOS Android Web and PWA HTTPS, session token 02 · EDGE API gateway Rate limits and abuse Per-action personhood check authenticated request, plus the proof this action needs 03 · PRODUCT SERVICES Identity andpersonhood Conversationsand statements Votesappend only Social graphspaces, follows Notificationsand digests space and message events vote events, append only 04 · REAL-TIME AND SOCIAL Matrix Synapse server group conversation spaces, direct messages, presence, unified inbox, dynamic profiles Codiste has shipped this layer before: Zo.me. Feed ranking and trust and safety are new build. 05 · RANKING, ASYNC 1  vote matrix store 2  impute missing cells, then PCA 3  base clusters, K = 100 fixed 4  group clusters, k by silhouette 5  consensus and helpfulness scores approved content only cluster snapshot and scores 06 · TRUST AND SAFETY Classifierpre-filter Human statementqueue Appeals andaudit log Harassmentbackstop model accepted statements and agreed outcomes 07 · ACCOUNTABILITY Proposallifecycle state machine Submission tothe deciding body Public outcometracking Stores: Postgres as the canonical record, an append-only vote log, an analytics warehouse for the pipeline, object storage for media. Mint outline marks the only layer where Codiste has already shipped comparable infrastructure.
FIG. 5  Proposed architecture, not an existing one. The two things worth arguing about: votes are an append-only log rather than mutable state, and the ranking pipeline reads that log rather than the product database, so a ranking change can never be a write path.
SHEET 08Sequence, and the cut line

Four phases.

wk 0 5 10 15 20 25 30 PHASE 1 Conversation core 5-7 weeks Ends in: a real question, seeded statements, live voting, a moderation queue and a cluster map that moves as people vote. PHASE 2 Bridging and trust 6-8 weeks Ends in: the same conversation ranked both ways side by side, on real votes, with the harassment backstop running. PHASE 3 Social surface 6-8 weeks Ends in: profiles, spaces, direct messages and notifications on Matrix Synapse. A person can live in the app for a week. PHASE 4 Accountability loop 4-6 weeks Ends in: one proposal travelling from conversation to submission to a tracked, publicly visible outcome. 21 to 29 weeks end to end. These are Codiste estimates for scoping a conversation, not commitments, and they assume one team and no discovery gaps.
FIG. 6  Solid bar is the low estimate, faded extension the high one.

Not in version one

Native apps. A PWA reaches a real user faster.

On-chain voting, tokens, encrypted e-voting. None of it makes ranking honest.

A global identity. Personhood stays scoped to the action.

A personalised recommendation feed. Chronological, with a consensus rail.

NLP on statements for ranking. Polis runs with none.

Automated moderation as the primary gate. Classifier as a pre-filter only.

SHEET 09Team, scope and next step

What we bring, what is new.

What we bring

We built Zo.me, a Web3 communication platform with group conversation spaces, dynamic user profiles and a unified inbox, on Matrix Synapse Server: layer 04 on sheet 07.

We are not quoting a client name or performance figures here.

What would be new build

The ranking pipeline, the personhood layer and trust and safety are new build. What we bring to them is a close reading of the published work, sheets 03 to 06, and a named practice in AI evaluation.

Next step: forty-five minutes on the five decisions.

Sheet 02 will be wrong in places. We will redraw this live against your answers.

Reply to the thread, or use the number in the covering email.