Skip to content

Human-Verified Content Badges - certificate authority for human authorship #30

@het4rk

Description

@het4rk

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

  1. As a writer, I want to prove my article was written by a verified human, not AI.
  2. As a publisher, I want to embed a "Verified Human" badge on articles to build reader trust.
  3. 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

  1. User creates post or requests certificate for external content
  2. Server computes SHA-256(normalize(content))
  3. Server signs: Ed25519.sign(contentHash + authorNullifier + timestamp, arkoraPrivateKey)
  4. Certificate stored in DB, optionally registered onchain
  5. Returns verification URL + embed code

Verification Flow

  1. Third party submits content or content hash
  2. Server looks up certificate by hash
  3. Returns: author verification status, timestamp, signature
  4. Verifier can check signature against Arkora's public key

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions