Product Requirements (PRD)
Problem
AI-generated content is flooding the internet. There's no way to prove something was written by a human. Arkora can provide that proof because every account is World ID verified.
Solution
A "Written by a Verified Human" badge/certificate system. Content creators write on Arkora and get a signed certificate (hash of content + nullifier proof). Any website can embed a verification badge that links back to Arkora for proof.
User Stories
- As a writer, I want to prove my article was written by a verified human, not AI.
- As a publisher, I want to embed a "Verified Human" badge on articles to build reader trust.
- As a reader, I want to know if the content I'm reading was authored by a real person.
Features
Content Signing
- User writes/posts on Arkora
- System generates certificate: SHA-256(content) + World ID nullifier proof + timestamp
- Certificate stored onchain (World Chain) or signed by Arkora's key
- User gets a verification URL:
https://arkora.app/verify/{hash}
Verification Badge
- Embeddable badge (
<script> or <img> with link)
- Shows: "Verified Human Author" + verification date
- Click opens proof page on Arkora showing content hash match
Browser Extension
- Chrome/Firefox extension
- Shows green checkmark on verified content across the web
- Queries Arkora API for content hash matches
Publisher API
POST /api/verify/content - submit content hash, get verification status
GET /api/verify/{hash} - check if content was authored by verified human
Revenue
- Free for individual creators (limited to 10 certificates/month)
- Publisher plan ($29/mo): unlimited verifications, API access, custom badge styling
- Enterprise: white-label, bulk verification, SLA
Technical Requirements (TRD)
New Schema
CREATE TABLE content_certificates (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
authorHash TEXT NOT NULL REFERENCES human_users(nullifier_hash),
contentHash TEXT NOT NULL, -- SHA-256 of content
postId TEXT REFERENCES posts(id), -- optional, if content is an Arkora post
externalUrl TEXT, -- optional, URL where content is published
signature TEXT NOT NULL, -- Arkora Ed25519 signature
createdAt TIMESTAMP DEFAULT NOW(),
UNIQUE(contentHash)
);
Signing Flow
- User creates post or requests certificate for external content
- Server computes
SHA-256(normalize(content))
- Server signs:
Ed25519.sign(contentHash + authorNullifier + timestamp, arkoraPrivateKey)
- Certificate stored in DB, optionally registered onchain
- Returns verification URL + embed code
Verification Flow
- Third party submits content or content hash
- Server looks up certificate by hash
- Returns: author verification status, timestamp, signature
- Verifier can check signature against Arkora's public key
Product Requirements (PRD)
Problem
AI-generated content is flooding the internet. There's no way to prove something was written by a human. Arkora can provide that proof because every account is World ID verified.
Solution
A "Written by a Verified Human" badge/certificate system. Content creators write on Arkora and get a signed certificate (hash of content + nullifier proof). Any website can embed a verification badge that links back to Arkora for proof.
User Stories
Features
Content Signing
https://arkora.app/verify/{hash}Verification Badge
<script>or<img>with link)Browser Extension
Publisher API
POST /api/verify/content- submit content hash, get verification statusGET /api/verify/{hash}- check if content was authored by verified humanRevenue
Technical Requirements (TRD)
New Schema
Signing Flow
SHA-256(normalize(content))Ed25519.sign(contentHash + authorNullifier + timestamp, arkoraPrivateKey)Verification Flow