Developer ToolCase study

Specimen

Started as a JSONBlob-style paste-and-share tool, then evolved once the real problem became clear: sharing JSON is easy; understanding the shape of a payload is harder.

Feb 9, 2026
Public, evolving
Aadarsh Srivastava
Specimen workbench with a JSON editor beside an inferred contract inspector
fable-seven.vercel.app

A JSON inspection workbench for saving, sharing, understanding, annotating, and evolving payload contracts from real examples.

Context

Specimen began as Fable, a minimal JSON paste-and-share tool inspired by JSONBlob. The first version did one thing well: paste JSON, save it, share a link. After using that flow myself, the more interesting problem became obvious. Teams pass around example payloads all the time, but the payload rarely explains which fields are required, nullable, enum-like, unstable, or important for specific UI states.
Specimen sits between a lightweight sharing tool and a full schema-authoring system.

Problem

Most JSON tools either stop at storage or jump straight to full schema authoring. Frontend and backend teams need something in between: lightweight contract metadata inferred from real payloads, with room to annotate fields, attach examples, and still share everything through a link.

Product

  • JSON paste, edit, save, and share flows.
  • Contract inference from real payloads.
  • Field-level metadata: type, required state, nullable state, enums, descriptions.
  • Named examples stored alongside each document.
  • Shareable URLs with Convex-backed persistence.
  • A focused editor experience using TanStack Router, Convex, and CodeMirror.

System Architecture

Specimen is structured as three cooperating systems rather than a single CRUD app:
Specimen UI sends structured contracts through a contract engine to a Convex backend.
Specimen UI: the editor, sharing flows, and collaboration surfaces. Built with TanStack Router and CodeMirror, optimised for fast paste-edit-share loops.
Contract Engine: inference and annotation logic that turns raw JSON into structured contract metadata: types, required/nullable state, enums, descriptions, and named examples.
Convex Backend: persistence, real-time sync, and shareable document storage behind the public URLs.
Keeping inference logic separate from both the UI and persistence layer means the contract engine can evolve (editable schemas, payload variants, chaos parameters) without rewriting the editor or storage model.

Current State

The core loop works well. Next steps: editable contracts, multiple payload variants (success, error, empty), and tighter frontend-backend collaboration workflows.