August 6, 2026 · AI · Philosophy
An image is not a sentence
From an analytical-philosophy obsession to VSON: a notation where every claim about an image declares every argument it takes, viewpoint included.
I studied philosophy and got obsessed with one move: turning anything into logical form. Years later I noticed image models are vague in exactly the way that obsession hates.
“Move the lamp a bit to the left.” Left from where? The camera’s left, the room’s left, the lamp’s left? The model picks a viewpoint, you meant another one, and you go three rounds.
Every claim declares its arguments
VSON is a notation for what an image shows, borrowed from predicate logic. A claim about an image (an object, a property, a spatial relation, an action) is not a sentence; it is an assertion with a fixed argument structure. And it has to declare every argument it takes, viewpoint included.
Drop one, and the document fails validation and tells you which rule refused it. The rules are SHACL shapes over a graph, so “what is allowed to be said about a scene” is itself a checkable artifact, not a style guide.
A failing build, not a vibe
This is the part I care about. A vision-language model’s description of an image is unvalidated prose: you cannot diff it, test it, or fail a CI run on it. Once the description is a graph, a wrong or underspecified claim becomes a failing check. Machines can disagree with each other precisely.
VSON ships as a Rust CLI, a Python API, an MCP server, and a keyless browser studio. The demos run in the browser with no key; your own images run with your own OpenRouter key.
Early days. The part I keep thinking about: a notation with mandatory arguments is also a scoring rubric. It might make an interesting benchmark for how precisely vision models actually see.