# Geo Desk > Paste the layer manifest, the validation confusion matrix and the methods text of one finished > land-cover or earth-observation mapping study, and find out whether its accuracy claim is > defensible. Twenty-two named checks run free in the browser; three metered lanes then work the > study. URL: https://geo-desk.skillsafe.ai/ API: https://geo-desk.skillsafe.ai/api.html Model: gpt-terra (resolves to gpt-5.6-terra) · publisher markup 1000 bps · price_credits 0 Sources: a derived work of two SkillSafe skills, both credited — @k-dense-ai/geopandas (coordinate reference systems and their units, reprojection, geometry, overlay, extent intersection, per-class area arithmetic) and @k-dense-ai/geomaster (raster grids, resampling, remote sensing, spatial statistics, spatial machine learning, validation design, accuracy assessment). ## What problem it solves A published map accuracy figure is an estimate produced by a sampling design, and most of the ways it goes wrong are invisible in the number itself. The reference sample was split at random over pixels drawn from inside single training polygons, so the folds share neighbours. The overall accuracy was never weighted by the area each class actually covers, so it describes the sample rather than the map. A predictor was upsampled from 500 m onto a 100 m grid, so the model saw blocks of identical values. A DEM in EPSG:4326 has 20 m east-west and 31 m north-south ground pixels at 49 degrees north, so every slope taken from it is stretched. Geo Desk finds these before a reviewer does. ## The free read: 22 named checks, no account, no model Each check reports `pass`, `attention`, `fail` or `not_assessable`. A check whose input is missing reports `not_assessable` and is never counted as a pass; the header always reads "N of 22 ran". Coordinate systems and the grid — every layer declares a CRS; the layers share one; each pixel size is plausible in its own CRS's units (a degree-sized pixel in a metric system is blocking, and so is the reverse); same-resolution rasters sit on a common pixel grid, with any offset reported as a fraction of a pixel; no layer is upsampled onto a finer grid than it has; every layer covers the mapped area, by real extent intersection, refused across differing coordinate systems rather than guessed; every raster declares its nodata value, with an absent key distinguished from a declared absence. The matrix — it agrees with itself, and its orientation is declared; the reference layer's feature count matches the matrix total; every class carries enough reference units, in three tiers, with an empty class separated from a merely thin one and a rare class judged against its own area weight. The design — the sampling design is stated; it supports the inference the numbers are used for (a purposive or reused-training sample supports none, by any estimator); the validation folds are spatially separated; the spatial block is at least as large as the stated autocorrelation range; training and validation units are independent of each other. The numbers — the reported overall accuracy and kappa are recomputed from the matrix's own margins and compared with what the text claims; overall accuracy is compared with the no-information rate, so a high figure on an unbalanced reference sample is recognised as a property of the sample; the area-weighted (Olofsson et al. 2014) estimator is computed where the mapped areas are supplied, with the weighted overall and producer's accuracies, the error-adjusted areas and 95% intervals per class; an accuracy reported without an interval is flagged, with the interval supplied; and the reported metrics are matched against the kind of product, so kappa on a continuous surface is caught. ## Three lanes over one work object - `align` — Layer and grid conformance. Coordinate systems, the pixel grid, coverage, what to resample and in which direction, nodata, and whether the stack is ready to extract from. - `validate` — Validation design and leakage. The sampling design, spatial separation of the folds, allocation across classes, independence of the units, and what to change in order. - `report` — The area-weighted accuracy pack. The estimator the design requires, the defensible accuracy statement, the error-adjusted areas, whether the metrics fit the product, the limitations, and a drafted methods-and-accuracy paragraph. Every lane reads the same three pasted blocks. Each lane's verdict follows only the areas that lane owns; a serious fact from another lane that the answer depends on is surfaced as a binding caveat rather than silently moving the verdict, and the whole study's verdict is shown separately in the free read. ## Input and output contract The run input object IS the POST body and is never wrapped in an `input` key. Fields: `task` (`align`, `validate` or `report`), `layers`, `matrix`, `methods`, `product`, `design`, `claim`, `context`, `prescan_facts`. The `product` and `design` selectors only ever fill a silence in the methods text; they never override what the prose says, and which source was used is recorded. The reply is one JSON object: `lane`, `title`, `verdict` (`defensible`, `defensible_with_changes`, `needs_rework`, `not_defensible`), `headline`, `summary`, `body`, `findings[]`, `reconciliation[]`, `context_notes[]`, `unassessable[]`. Every free-read flag is reconciled one-for-one by uid, and a flag the reply never addresses is displayed as unanswered. ## What it deliberately does not do It never reprojects, so two extents in different coordinate systems are reported as not comparable rather than compared. It does not know the true areas: the mapped areas are whatever was pasted, and the error-adjusted areas inherit any error in them. The ground size of a pixel in a geographic CRS is a spherical approximation at the layer's mid-latitude. The unweighted interval assumes simple random sampling. It cannot tell whether a reference label is correct, so reference error is invisible to it. A ratio with no denominator is reported as undefined, never as zero. ## Free, in the browser, before sign-in The whole read, both worked examples, all six saved model runs (one per lane per example), and every export — Markdown, JSON, and CSV of the checks, the flags, the per-class accuracy table, the layer table and the confusion matrix. Nothing you paste leaves the browser until you run a metered lane.