Minimal polls in Markdown
(for Newsletters)
A ~200-line Go service that records anonymous poll
into a single DuckDB file, querying with Quack Protocol.
What Makes pollmd Different?
Markdown-native links
Just paste [Awesome](https://q.ssp.sh/2026-06-04/awesome) into your newsletter. One click records one vote. No embeds, no iframes, no JavaScript.
No cookies, no JS
No fingerprinting. IP, User-Agent, and a daily salt are hashed and immediately discarded. The salt rotates every midnight UTC, so yesterday’s hashes can’t be reproduced.
One binary, one file
~200 lines of Go, one DuckDB file. No external database, no Redis, no JS bundle. Read the whole source in an afternoon.
Per-newsletter flexibility
Invent any answer slug per issue — awesome, meh, keep, unsubscribe. Or lock the allowed set per survey with make survey-create.
SQL from your laptop
DuckDB + Quack gives you make survey-result for a bar-chart tally, or drop into a duckdb prompt and run arbitrary SQL against the live file.
Self-host anywhere
Railway, Linux (EC2/Hetzner/anywhere), or FreeBSD — each platform has a guide. Vote endpoint and Quack admin channel share one Go process.
Rendered poll, but you can also just use Markdown links
Documentation:
make survey-result, ad-hoc SQL, the Quack workaround.