# I Built a Zero-Knowledge Protocol to Prove a Human Typed This (Not a Bot) — Help Me Try to Break It

> Source: <https://dev.to/aagb/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me-try-to-break-it-5ah9>
> Published: 2026-07-30 05:55:12+00:00

AI-generated text is no longer distinguishable from human text. That's not a hot

take, it's a measurable fact at this point, and it quietly breaks a lot of the

trust assumptions the internet runs on — messaging, marketplaces, escrow, forums.

If you can no longer tell *what* was written by a bot, the obvious next question

is: can you tell *how* it was written?

That's the premise behind **PoHI (Proof of Human Intent)**, a protocol I've been

building on my own: instead of analyzing text content, it measures the physical

rhythm of typing — dwell time, flight time between keys, the skew of your pauses,

how you correct mistakes — and proves, via a zero-knowledge SNARK, that the

resulting score clears a threshold, without ever revealing the raw keystroke data.

`@pohi-protocol/core-math`

— the reference math engine implementing the
behavioral equations (skewness, cognitive-latency ratio, error-recalibration
variance). 74 unit tests.`circuits/`

— a Circom circuit compiling to Groth16 over BN254, ~12,500
constraints, with a real multi-party trusted-setup ceremony tool. 21 tests
checking it agrees numerically with the reference engine `packages/sdk-web`

— the browser-side capture SDK.`experiments/`

— an adversarial evaluation harness with six attacker models,
from "constant-delay macro" up to "an attacker with full knowledge of the
scoring function trying to fake the rhythm."Everything is open: [https://github.com/ProjectOne2020/pohi-protocol-poc](https://github.com/ProjectOne2020/pohi-protocol-poc)

I'm not here to tell you this is unbreakable. It probably isn't, at least not yet.

A zk-SNARK proves you know a witness satisfying the relation — it does *not*

prove that witness came from an actual human hand. That's a real, documented gap

(I wrote it up in the threat model instead of hiding it — see

[ docs/THREAT_MODEL.md §5](https://github.com/ProjectOne2020/pohi-protocol-poc/blob/main/docs/THREAT_MODEL.md)),

To test that, I need real human typing data — which is the actual ask here.

👉 [https://pohi-protocol-poc.vercel.app](https://pohi-protocol-poc.vercel.app)

You type a few short prompts, that's it. Available in English and Spanish. What

gets recorded is *only* keystroke press/release timestamps in milliseconds and

whether a key was Backspace — never the text itself. That's not just a privacy

promise: the database schema itself has a constraint that rejects any record

containing character data, so it holds even if someone tampers with the client.

You can check that directly in

[ experiments/schema.sql](https://github.com/ProjectOne2020/pohi-protocol-poc/blob/main/experiments/schema.sql).

If you're more interested in poking at the code than typing, I'd take that too —

issues, PRs, "your fixed-point division is still wrong here" comments, all

welcome. Especially if you can break the scoring.

Repo: [https://github.com/ProjectOne2020/pohi-protocol-poc](https://github.com/ProjectOne2020/pohi-protocol-poc)

LinkedIn: [https://www.linkedin.com/in/alejandro-guti%C3%A9rrez-9a0318107/](https://www.linkedin.com/in/alejandro-guti%C3%A9rrez-9a0318107/)
