Model proposals

A box or click becomes proposed masks across the scan. Each proposal records its model, and reviewers accept, correct or reject it. Team includes 250 scans run through a hosted model in each monthly billing period. Model runs are priced per completed scan/model result, never per person. These are launch prices. Paid checkout and usage charging are not active.

Dashed: a SAM 2.1 proposal from one box, run by Nitsor outside the product, on real industrial CT. Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: windowed and cropped by Nitsor. Sources

Slice 300 of a real industrial CT scan: a box drawn by a person, then SAM 2.1's view of the slice, its mask logits, its dashed proposal round a bottle wall, and the published label in white.
What each frame shows
  1. Industrial CT, Fraunhofer Me 163 V5, axial slice 300.
  2. One box prompt, drawn by a person and recorded with the run.
  3. What the model sees: SAM 2.1 image-encoder features, first principal component (17% of variance), in its native 16 px blocks. A projection, not a layer.
  4. SAM 2.1 mask logits, -25 to +8. Logits are not probabilities.
  5. The proposal, dashed: logits above 0. The model's own score (predicted IoU) is 0.94.
  6. The published label for instance 138, in white, a person's annotation. IoU with the proposal 0.82, on the model's 1024 by 1024 grid.

SAM 2.1 run by Nitsor outside the product. Real industrial CT and its published label, Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: windowed, cropped and outlined by Nitsor.

Mark one slice. Review the proposed masks.

Give SAM 2.1 (hiera large) a box or click on one slice. It proposes masks across up to 64 slices, kept separate from accepted labels until reviewed.

One proposal

Model
sam2.1-hiera-tiny, recorded run
Prompt
box on slice 300, annotator-3
Window
up to 64 slices
Branch
proposals/sam-2.1
Calibrated
no
Status
waiting for a person

Recorded on the model's own branch. The hosted model is SAM 2.1 hiera large.

Ten slices of a real industrial CT scan stacked in a fixed tilted view; a box on the front slice, and SAM 2.1's dashed proposal round the bottle wall appearing on each slice behind it.

SAM 2.1 proposals, dashed, on slices 300 to 363 from one box on slice 300, run by Nitsor outside the product; every seventh slice drawn. Real industrial CT, Gruber et al., Fraunhofer EZRT, CC BY 4.0 (opens in a new tab), modified: windowed, cropped and stacked by Nitsor.

Keep accepted and rejected proposals.

Accept a proposed mask and your decision joins its history. Reject it and the proposal remains visible, marked rejected.

Verdicts on job-0418

Region 1
accepted, annotator-3
Region 2
rejected, annotator-3
Region 3
rejected, annotator-3
Commit
6b1d4e08, source sam-2.1

Rejected proposals stay in the record.

A lung nodule on a real chest CT slice, outlined by four radiologists in white and by SAM 2.1's dashed proposal.

Dashed: SAM 2.1 from one box, run by Nitsor outside the product. White: four radiologists' published outlines. IoU with readers 1 to 4: 0.79, 0.80, 0.84, 0.84. Armato et al., "Data From LIDC-IDRI", TCIA, case LIDC-IDRI-0003, CC BY 3.0 (opens in a new tab), modified: windowed, cropped and outlined by Nitsor.

Check model output against expert decisions.

Each accepted, corrected or rejected proposal is linked to the model version that made it, so you can evaluate that version on your scans. When a scan's review is approved, every model label gets an outcome on record, and misses and wrong classes are counted, not hidden.

Outcome of each model label

Kept as is
unchanged when the review was approved
Changed
a person edited its shape
Deleted
discarded, removed after import, or never imported
Wrong class
a person gave it another class
Missed
a person drew a label the model did not propose
Not scored
the rules cannot measure it, and it is never counted as a pass

One outcome per model label, written when the scan's review is approved.

The Nitsor editor on a real industrial CT slice: a model's proposal for the bottle wall, marked uncalibrated, with Import and Discard beside it and the published labels listed on the left.

A detail of the Nitsor editor in a sample project: a proposal from our recorded SAM 2.1 run, waiting for a person to import or discard it, beside the published labels of a Fraunhofer V5 scan (Gruber et al., CC BY 4.0 (opens in a new tab), modified: loaded into the editor). No choice was made. The editor is the product's own (nitsor-app 4a10817da, on main), run against its local test backend with the published labels and our recorded run loaded as sample data.

Keep acceptance with your reviewers.

A proposal becomes a label when a person accepts it. The review decision is recorded separately from the model run that produced the proposal.

In the editor

Row
Instance 138, Proposed, slices 1 to 64
Model
sam-2.1@sam2.1-hiera-tiny, uncalibrated
Choices
Import or Discard

As the editor in the screenshot shows the proposal, from a recorded run on hiera-tiny. The hosted model is hiera large.

  1. SAM 2.1 proposal

    A sagittal spine MRI slice with a dashed model outline that spills past one vertebra into the disc and the vertebra below.
  2. Published mask, as the correction

    The same slice with the published outline of the vertebra in white, tighter than the model's.

A lumbar spine MRI, SPIDER case 1_t2, one T2 sagittal slice. Dashed: SAM 2.1's proposal for one vertebra, from a run recorded by Nitsor with one box derived from the label. White: the published mask, a model's initial segmentation "reviewed and manually corrected" by a medical trainee supervised by experts (van der Graaf et al. 2024); here it stands in for a reviewer's correction. van der Graaf et al., Radboud University Medical Center, CC BY 4.0 (opens in a new tab), modified: windowed, cropped and outlined by Nitsor. Sources

A person corrects the proposal.

A reviewer can correct a proposal instead of accepting it, painting and erasing on the 3D mask across slices, with undo. The corrected label is saved under the reviewer's name, and the model's version stays in the record. A dataset version can pin the corrected labels for your next training run.

The correction

Model's own score
predicted IoU 0.85
IoU with the correction
0.61
Removed
5,784 px
Added
1,397 px
Review state
corrected, not accepted

Measured on the model's input grid, from the recorded run. The published mask stands in for a reviewer's correction.

A model run in Executions

Status
for example queued, running, completed or capped
Ended
a short note on the outcome, with any recorded stop or cap reason
GPU time
the run's own GPU seconds, marked so far while it runs
Model
the model, its version and the branch its proposals went to
Cap
no new work starts once the run reaches its GPU-second limit
Long run
a run estimated at more than five minutes of GPU time waits for someone with operate access

Every model run is recorded and capped.

Every model run, job and task has its own record in Executions, which opens from the sidebar, the account home and each project. A run's record has a timeline. Each run shows its status and GPU time, in the app and through the API. GPU time is not a customer billing unit.

A hosted model, as Nitsor records it

Name
sam-2.1, hosted model
Role
contribute at most, never admin
Image
pinned by digest, so the same image runs every time
Contract
takes points or a box; reports its own score, uncalibrated

A model cannot review human work

Asked by
sam-2.1, hosted model
Action
accept a label annotator-3 drew
Result
deny
Code
workflow_review_machine_judging_person

The code is the product's own.

Models get a name and a role, like people.

A hosted model works under its own name, in a role that limits what it can do. An agent credential carries a role too, capped below admin. Every decision records who or what made it.

Agents work here too.

Agents and scripts call the HTTP API with a scoped, expiring agent credential from the hosted app. The Python SDK and an MCP server for agents are on the way.

Show us what you inspect.

Start with a public CT or MRI scan. See how a model suggestion becomes a reviewed label and a fixed training dataset.