← math.photos

For developers · in development

Checking math is harder than generating it.

An LLM will produce a confident, fluent, wrong derivation all day. Catching that — deciding whether line 6 actually follows from line 5 — is a different problem, and it's the one we've spent a year on. If you need that as an API rather than as a browser extension, this page is for you.

No account, no card. One email when there’s something to show you.

What the engine does

  • Reads math from an image — handwritten, typed, or a screenshot of a problem on a page. Position-aware, so exponents, subscripts and fraction scope survive.
  • Returns the transcription separately from the result, so a misread is visible rather than silently propagated into a confident wrong answer.
  • Checks working line by line — identifies the first step that doesn't follow, and names the rule that was violated.
  • Solves, with steps, when there's nothing to check yet.

Roughly 16,800 solves through it so far, with per-call cost, latency and model recorded. Median cost is under a cent; median latency around seven seconds.

Who we think wants this

  • Edtech products that need "is this student's work correct?" and don't want to build handwriting recognition and step validation themselves.
  • Grading and assessment tools that currently match final answers and lose every partial-credit case.
  • Model evaluation. If you're training or evaluating something that does math, an independent step-level checker is a scoring function — and a far better one than exact-match on a final answer.
  • Tutoring platforms wanting to flag where a student went wrong before a human tutor picks up the session.

Shape we have in mind

A small JSON API. POST an image or a LaTeX string plus an optional set of student steps; get back the transcription, a verdict, the first invalid line if there is one, and a worked solution. Usage-priced per call, with a free tier big enough to actually evaluate it.

That's a sketch, not a commitment. If you need it synchronous, batched, self-hosted, or inside a VPC, that's exactly the kind of thing worth telling us now rather than after we've built the other one.

The honest caveats

  • It is not a computer algebra system. It reasons about working the way a grader does — it will not replace SymPy for symbolic manipulation.
  • It is not deterministic. Two calls on the same input can word the explanation differently, though the verdict is stable.
  • Poor photographs remain poor photographs. Recognition quality tracks image quality far more than it tracks handwriting neatness.

No public API today — the engine currently only serves our own extension. Before we build authentication, quotas, docs and support around it, we want to know who'd use it and for what. Pricing and shape are both open; tell us what would work.