Model release
Spatial One
The drawing-understanding model behind Stru's construction agents. It reads drawings from PDFs, scans, photos, and marked-up as-builts, reconstructs the references, scales, annotations, and sheet relationships inside them - and turns static sheets into a traversable project graph for review, comparison, code checks, and BIM reconstruction.
July 3, 2026 · Stru Research
See it work
Spatial One detections on a structural framing plan with a section view, a base-plate detail, general notes, and a title block. Every annotation is boxed by class with confidence scores.
Spatial One output on a structural sheet fragment - framing plan with section and base-plate details. Every annotation is boxed by class; one per class is labeled with its confidence.
Built for agents, not printers
PDFs were designed for people to print. A drawing set is really a linked structure - plans reference sections, sections reference details, everything at its own scale - but the links only exist in an engineer's head. Before an agent can review a set, it has to rebuild that structure, and it has to do it fast.
Spatial One rebuilds it with visual-spatial reasoning, not language. It finds every annotation on the sheet, understands how they relate to one another, and builds an internal map of the set from its section and detail tags. It detects each drawing's scale automatically and normalizes everything against it - so partial sheets, missing elements, and inconsistent conventions don't break the map.
That map is what the rest of Stru builds on: consistency checks between drawings, building-code compliance review, sheet-to-sheet comparison, and export into our BIM engine. Spatial One is one of several models behind Stru's review product - it's the one that turns pixels into structure.
Works on the drawings you actually have
Every discipline
Architectural, structural, civil, mechanical - the annotation language is shared, and so is the model.
PDFs first
The hardest input is the one every project actually has. PDFs are what we optimized for from day one.
Scans, photos & as-builts
Raster input is native. Faded scans, site photos, and marked-up as-builts all resolve into the same map.
No CAD or BIM required
No DWG, no Revit model, no export from the design team. The drawing set alone is enough.
From sheets to structure
Spatial One's map is the input to everything downstream. Here, the Stru BIM engine lifts a vault plan and section into a model - no CAD files, no BIM authoring, just the drawings.
scroll to assemble
On the left: the vault plan and section exactly as Spatial One reads them - detections appear as you scroll. On the right: the same vault reconstructed by the Stru BIM engine, down to the shell, platform framing, grating, ladder, and process pipes. Drag to orbit; right-drag any element and it eases back into place.
Research
How it reads a sheet
Spatial One does not depend on clean CAD layers, embedded text, or perfect vector PDFs - it recovers drawing structure from pixels alone, so a crisp vector PDF and a photographed as-built resolve the same way. The first thing it establishes is scale: every sheet is normalized to its own drawing scale before anything else is measured. That is why a detail drawn at 3" = 1'-0" and a plan at 1/8" = 1'-0" land in one consistent coordinate system, and why a sheet with a missing or wrong scale note still resolves - the scale is detected from the drawing itself.
Then it reads the annotation layer - all ten classes at once - and links what it finds. A section cut on a plan points at a section view; a detail bubble points at a detail; grid markers anchor everything to shared coordinates. Those links compile into a graph of the whole set, so an agent can ask "where is this beam detailed?" and walk there directly. When a sheet is partial, skewed, or missing elements, the graph routes around the gap instead of breaking.
Privacy
Trained without customer drawings
Spatial One is trained on Stru's proprietary synthetic data pipeline - customer project drawings are never training data. The drawing families we evaluate on are held out entirely and stay fixed across releases, so every improvement is measured on conventions the model has never seen.
Spatial One is a closed-source production model. We do not disclose architecture, data construction, or training recipe - we publish evaluation results, operating thresholds, and shipped behavior.
Benchmarks
Evaluated on drawings it has never seen
Every benchmark below is measured on held-out drawing families absent from training. We report the operating points we ship: how many annotations Spatial One finds, how often its detections are correct, and whether each box is tight enough to auto-ingest or close enough for assisted review. Hover the trade-off curves to inspect any operating point. These are the hard numbers: once a firm's conventions are onboarded, in-family performance runs meaningfully higher.
PRECISION · AUTO-INGEST
0.98
detail tags at confidence 0.90
RECALL / PRECISION
0.78/0.82
section tags at the default setting
ANNOTATION CLASSES
10
one model, one confidence knob
Section tags
Each dot is one confidence setting. Loosen it and the model finds more but errs more.
↗ top-right is better - finds more, and more of it is right
Precision-recall trade-off for section tags on never-seen drawing families. Toward top-right is better. Spatial One finds 78% at 82% correct; Spatial One Mini finds 68% at 78% correct.
Detail tags
Same sweep. At the applied setting Spatial One is 98% correct - the Mini never passes 72%.
↗ top-right is better - finds more, and more of it is right
Precision-recall trade-off for detail tags on never-seen drawing families. Toward top-right is better. At high confidence Spatial One is 98% correct; Spatial One Mini never exceeds 72% correct.
Dynamic recall strategy
Depending on the sheet and the task, Stru applies the setting it needs - recall-leaning to find everything, or confidence-leaning to trust every detection
left = find more · right = trust more
Recall versus confidence threshold for section tags and detail tags. Lower thresholds find more annotations; higher thresholds keep only near-certain detections.
Localization accuracy
When an annotation is found, is the box exact or just close? On drawing families never seen in training
→ right is better · a small gap means boxes rarely need adjustment
Box tightness by class: recall requiring strict overlap versus any centered hit. Small gaps for detail titles and detail tags; the largest gap is keynotes at 0.52 strict versus 0.66 centered.
Recall by annotation class
The share of true annotations Spatial One finds, on drawing families never seen in training
→ further right is better · 1.00 = found every one
Recall by annotation class. Further right is better. Spatial One improves on the previous generation for every class, from scale labels at 0.81 to section titles at 0.44.
Precision by annotation class
The share of detections that are correct, on the same held-out drawing families
→ further right is better · 1.00 = every detection correct
Precision by annotation class. Further right is better. Spatial One ranges from 0.82 on section tags and scale labels to 0.48 on section titles.
One generation of progress
Spatial One vs Spatial One Mini · identical held-out ground truth
→ longer bar is better
Bar comparison across four metrics: section-tag recall at equal precision improves from 0.61 to 0.78; highest reachable detail-tag precision improves from 0.72 to 0.98; keynote recall improves from 0.44 to 0.66; grid-marker recall improves from 0.33 to 0.54.
Class-level results
Recall / precision at the default confidence · higher is better, 1.00 is perfect
| Annotation class | Spatial One R / P | Spatial One Mini R / P | Mode |
|---|---|---|---|
| Section tagscut references between sheets | 0.78 / 0.82 | 0.68 / 0.78 | Balanced review |
| Detail tagsdetail callouts and bubbles | 0.78 / 0.70 | 0.90 / 0.65 | Auto-ingest |
| Scale labelsdrawing and detail scales | 0.81 / 0.82 | 0.68 / 0.86 | Balanced review |
| Detail titlestitles under detail views | 0.78 / 0.55 | 0.62 / 0.59 | Assisted markup |
| Dimensionsdimension strings | 0.71 / 0.59 | 0.61 / 0.66 | Assisted markup |
| Keynotesleadered notes and tags | 0.66 / 0.78 | 0.44 / 0.69 | Balanced review |
| Grid markerscolumn grid bubbles | 0.54 / 0.53 | 0.33 / 0.49 | Assisted markup |
| Section titlestitles under section views | 0.44 / 0.48 | 0.22 / 0.37 | Assisted markup |
| Revision triangles †revision deltas | 0.89 / 0.51 | 0.76 / 0.36 | Long-tail |
| Revision clouds †clouded changes | 0.33 / 0.50 | - | Long-tail |
R (recall): of all the true annotations on the sheet, the share found. P (precision): of everything the model flagged, the share that was right. Modes correspond to the operating points under Layered verification - long-tail classes never auto-ingest.
Every number on this page is measured on held-out drawing families the model never saw in training - no in-domain splits. Matching is center-in-ground-truth with confidence swept from 0.05 to 0.95; one atypical standard-plan drawing convention is excluded from the pool and covered separately in our evaluation notes. Classes marked † have limited ground truth and are directional. Spatial One Mini is our previous production checkpoint. Spatial One is a closed-source production model: we do not disclose architecture, data construction, or training recipe. Full evaluation details will be published alongside API access.
Research
Layered verification
A detection model alone is not a review product. Spatial One's output passes through layers before it reaches a conclusion: confidence gating tunes precision to the task; every cross-reference is validated against the sheet graph, so a section tag pointing at a view that doesn't exist is flagged rather than trusted; and consistency checks compare what different sheets claim about the same element. Anything that fails a layer is routed to a human - with the evidence attached.
The gating layer is tunable. These are the operating points we ship:
| Mode | Confidence | Measured yield | Use it for |
|---|---|---|---|
| Auto-ingest | 0.90 | P 0.98 on detail tags | Precision-first. Detections land without human review. |
| Balanced review | 0.50 | P 0.85 sections · P 0.76 details | The middle setting: interactive review inside Stru. |
| Assisted markup | 0.25 - 0.40 | P 0.70 - 0.86, recall-leaning | Pre-labels for review: reject a bad box in ~1 s instead of drawing one in ~25 s. |
One model, ten annotation classes
Spatial One detects and localizes the annotation vocabulary of a construction set, then hands clean, typed output to the rest of the platform - the review engine and the BIM engine both build on it.
- Section tags
- Detail tags
- Grid markers
- Section titles
- Detail titles
- Dimensions
- Scale labels
- Keynotes
- Revision triangles
- Revision clouds
Every class feeds the same map. When you run a drawing review on Stru, Spatial One is what read the set first - every cross-reference an agent follows, every scale it trusts, every clouded change it flags starts here.
API access
Put Spatial One on your drawings
Try it out. Spatial One already powers drawing review inside Stru - book a demo, or sign in and run it on your own set.
API access coming soon