Stru AI grid

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

detections: muted · click the sheet to toggle
123AB25'-0"25'-0"50'-0"25'-0"W18X40W21X501S2.15S2.13W21X442SCALE: 1/8" = 1'-0"GENERAL NOTES1. ALL STEEL PER AISC 360, U.N.O.2. TYP BEAM BRG: SEE 5/S2.1.3. FIELD VERIFY ALL DIMENSIONS.STRU ENGINEERING · PKG 24-118LEVEL 2 FRAMINGS2.11S2.1SECTION 1SCALE: 3/4" = 1'-0"5S2.1TYP. BASE PLATESCALE: 1" = 1'-0"dimension 0.98grid_marker 0.99section_tag 0.97detail_tag 0.96keynote 0.93revision_cloud 0.95revision_triangle 0.94scale 0.97section_title 0.92detail_title 0.95

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.

click to show / hide

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.

18'-0"AS3.021S3.0VAULT PLANSCALE: 1/4" = 1'-0"dimension 0.98section_tag 0.97
12'-0"AS3.0SECTION ASCALE: 3/8" = 1'-0"section_title 0.92

scroll to assemble

drag to orbit · right-drag an element

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

Spatial OneSpatial One Mini
perfect0.40.60.81.000.250.50.751RECALL - SHARE OF TAGS FOUNDPRECISION - SHARE CORRECTapplied setting

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

Spatial OneSpatial One Mini
perfect0.40.60.81.000.250.50.751RECALL - SHARE OF TAGS FOUNDPRECISION - SHARE CORRECTapplied setting

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

loose: finds morestrict: only the sure ones0%25%50%75%100%0%25%50%75%100%CONFIDENCERECALLSection tagsDetail tags

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

Tight enough to auto-ingest (IoU ≥ 0.5)Close enough for review (centered)
1.0 = perfectbetter →00.250.50.751Detail titles: Spatial One 0.78, Mini 0.78Detail titles0.78Revision triangles: Spatial One 0.78, Mini 0.89Revision triangles0.78Detail tags: Spatial One 0.75, Mini 0.78Detail tags0.75Scale labels: Spatial One 0.75, Mini 0.81Scale labels0.75Section tags: Spatial One 0.69, Mini 0.78Section tags0.69Dimensions: Spatial One 0.66, Mini 0.71Dimensions0.66Keynotes: Spatial One 0.52, Mini 0.66Keynotes0.52Grid markers: Spatial One 0.44, Mini 0.54Grid markers0.44Section titles: Spatial One 0.43, Mini 0.44Section titles0.43Revision clouds: Spatial One 0.33, Mini 0.33Revision clouds0.33

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

Spatial OneSpatial One Mini
1.0 = perfectbetter →00.250.50.751Section tags: Spatial One 0.78, Mini 0.68Section tags0.78Detail tags: Spatial One 0.78, Mini 0.90Detail tags0.78Scale labels: Spatial One 0.81, Mini 0.68Scale labels0.81Detail titles: Spatial One 0.78, Mini 0.62Detail titles0.78Dimensions: Spatial One 0.71, Mini 0.61Dimensions0.71Keynotes: Spatial One 0.66, Mini 0.44Keynotes0.66Grid markers: Spatial One 0.54, Mini 0.33Grid markers0.54Section titles: Spatial One 0.44, Mini 0.22Section titles0.44Revision triangles: Spatial One 0.89, Mini 0.76Revision triangles0.89Revision clouds: Spatial One 0.33Revision clouds0.33

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

Spatial OneSpatial One Mini
1.0 = perfectbetter →00.250.50.751Section tags: Spatial One 0.82, Mini 0.78Section tags0.82Scale labels: Spatial One 0.82, Mini 0.86Scale labels0.82Keynotes: Spatial One 0.78, Mini 0.69Keynotes0.78Detail tags: Spatial One 0.70, Mini 0.65Detail tags0.70Dimensions: Spatial One 0.59, Mini 0.66Dimensions0.59Detail titles: Spatial One 0.55, Mini 0.59Detail titles0.55Grid markers: Spatial One 0.53, Mini 0.49Grid markers0.53Revision triangles: Spatial One 0.51, Mini 0.36Revision triangles0.51Revision clouds: Spatial One 0.50Revision clouds0.50Section titles: Spatial One 0.48, Mini 0.37Section titles0.48

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

Section tagsRecall at equal precision (P = 0.82)Spatial One: 0.78 - Recall at equal precision (P = 0.82)0.78Spatial OneSpatial One Mini: 0.61 - Recall at equal precision (P = 0.82)0.61Spatial One MiniDetail tagsHighest reachable precisionSpatial One: 0.98 - Highest reachable precision0.98Spatial OneSpatial One Mini: 0.72 - Highest reachable precision0.72Spatial One MiniKeynotesRecall at the default confidenceSpatial One: 0.66 - Recall at the default confidence0.66Spatial OneSpatial One Mini: 0.44 - Recall at the default confidence0.44Spatial One MiniGrid markersRecall at the default confidenceSpatial One: 0.54 - Recall at the default confidence0.54Spatial OneSpatial One Mini: 0.33 - Recall at the default confidence0.33Spatial One Mini

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 classSpatial One R / PSpatial One Mini R / PMode
Section tagscut references between sheets0.78 / 0.820.68 / 0.78Balanced review
Detail tagsdetail callouts and bubbles0.78 / 0.700.90 / 0.65Auto-ingest
Scale labelsdrawing and detail scales0.81 / 0.820.68 / 0.86Balanced review
Detail titlestitles under detail views0.78 / 0.550.62 / 0.59Assisted markup
Dimensionsdimension strings0.71 / 0.590.61 / 0.66Assisted markup
Keynotesleadered notes and tags0.66 / 0.780.44 / 0.69Balanced review
Grid markerscolumn grid bubbles0.54 / 0.530.33 / 0.49Assisted markup
Section titlestitles under section views0.44 / 0.480.22 / 0.37Assisted markup
Revision trianglesrevision deltas0.89 / 0.510.76 / 0.36Long-tail
Revision cloudsclouded changes0.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:

ModeConfidenceMeasured yieldUse it for
Auto-ingest0.90P 0.98 on detail tagsPrecision-first. Detections land without human review.
Balanced review0.50P 0.85 sections · P 0.76 detailsThe middle setting: interactive review inside Stru.
Assisted markup0.25 - 0.40P 0.70 - 0.86, recall-leaningPre-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

Email
X
Linkedin

Legal

TermsPrivacyCookies

About

ContactCareers