Overview

Sepakat is a poll with no answer options. One open question, everyone replies in their own words, and it groups the replies that mean the same thing — a ranked result built from sentences rather than clicks. Sepakat is Indonesian for agreed.

Why it exists

Write the options and you have already decided what the acceptable answers are. Leave the field open and you get forty sentences nobody has time to read.

Problem

Closed polls frame the answer before anyone votes. Open polls return text nobody reads, so the grouping never happens.

Solution

Keep the open question and move the reading to the machine — group answers by meaning as they arrive.

How it works

Two models, two jobs — one reads the sentence, the other measures it.

THE ANSWER “I’d love ramen or maybe sushi” Llama 3.1 reads what the person is for, not against CONCEPTS ramen sushi two concepts, each voting on its own nomic-embed-text turns each meaning into numbers VECTORS [0.21, -0.98, 0.44, …] ×2, 768 numbers each cosine similarity 0.78 or closer to a group, and it merges GROUPS ramen 3 sushi 2
One reply, two models. The sentence is resolved into concepts before anything is measured, and each concept votes separately.

The threshold is the only real knob: too low and pizza swallows pasta, too high and dark mode and night theme split into two rows. No Preference and Others skip the maths and sit at the bottom — a tie between ramen and I don’t care is not a tie.

The fried rice problem

The first version had one model: embed the answer, cluster the vectors. It held until somebody replied anything, just don’t eat the fried rice — and fried rice took the lead.

“anything, just don’t eat the fried rice” EMBED IT DIRECTLY fried rice  +1 takes the lead it was denied READ THE STANCE FIRST No Preference  +1 affirms nothing, so it says so
Measured directly, the two read as almost the same thing — which is why nothing is measured until the stance is settled.

An embedding encodes what a sentence is about, so a rejection and an endorsement land in nearly the same place. The second model settles one thing first: what is this person for? Concepts are also translated to English before embedding, so nasi goreng and fried rice don’t split one group in two.

Design decisions

Running Llama locally is the expensive one — Ollama installed, a model pulled, a far worse first five minutes than an API key. Worth it for what the tool handles: open text from people who were told it was anonymous.

What it isn’t

Not a survey platform, and not finished — polls live in memory, there is no vote-per-person limit, and grouping by meaning is a judgement the machine makes for you. The source is public; if you run it on something real, I’d like to hear how the clustering held up — [email protected].