Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for SaidSo

Inspiration

AI answers now end up in client reports, emails and decisions. When someone later says "the AI never told you that", or quotes the answer with a few words changed, all you have is a screenshot, and screenshots are easy to edit. I wanted a receipt for an AI answer that anyone can check.

What it does

  • Seal. Paste a question, the AI's answer and the model name. SaidSo fingerprints the question and the answer (SHA-256) and signs them with a key created in your browser (Ed25519). The result is a receipt card with a number, the fingerprints and the seal.
  • Share. The whole receipt is compressed into the verify link, after the #, so it is never uploaded anywhere. You can also download it as a .json file or print it.
  • Verify. Opening the link shows a green UNCHANGED stamp. If anything was edited, the stamp turns red (TAMPERED) and SaidSo names what changed: the question, the answer, or the signed details.
  • Check a quote. Paste the version someone showed you and every word that differs from the sealed answer is highlighted.
  • Honest limits. Every page says what a receipt proves (the text was not edited) and what it cannot prove (that an AI really wrote it; only the provider could sign that).

Who it's for

Freelancers, consultants, students and teams who reuse AI answers in their work and may need to show later exactly what the AI said.

How I built it

I started from an empty folder with the Devpost Learn Skill Pack in Claude Code. The skills produced the planning documents first: scope, PRD, spec, and a build checklist of vertical slices. Then the app was built against that plan. It is plain HTML, CSS and JavaScript with no framework, no dependencies and no backend. It uses the Web Crypto API for SHA-256 and Ed25519 and CompressionStream for the links. There are 27 automated tests (node --test) plus a headless-browser run of the whole journey. An independent AI code review (Google Jules) was done before shipping, and its fixes are a separate commit. It is hosted free on GitHub Pages.

Planning documents generated by the Skill Pack (in the repository):

Challenges

  • Copy-paste changes line endings and Unicode forms, which would make valid receipts fail. Text is normalised (NFC, \n, trimmed) before hashing.
  • A single checksum can only say "something changed". Hashing the question and the answer separately, and signing them together with the details, lets the verdict name what changed.
  • Links can be abused as "zip bombs", so decoding stops at 2 MB.

What I learned

I run a construction company; I am not a programmer. This project taught me to lead a coding agent the way I lead a building job: plan first, then build. The Skill Pack made us write the scope, the PRD and the spec before any code, and the most useful part was cutting: the scope lists what stays out of the proof of concept (accounts, a server, key backup) and what waits for later (asking the model from inside the app), and those lists kept the agent from drifting. I also learned not to trust "done": every slice had to pass its tests and be checked against the plan before the next one started, and an independent AI review still found things to fix.

What's next

Capture the answer directly from a model API, add a public timestamp (OpenTimestamps) so the issue time is provable, print a QR code on the receipt, and build a browser extension with a "Seal this answer" button inside chat apps.

Built With

Share this project:

Updates

Submission history