Osprey Integrity
REPORTForge
WORK EMAIL
PASSWORD
Sign in
Forgot password? Resets are pushed by your Admin.
Access is provisioned in Admin › Users & Roles · every session is audit-logged
Osprey Integrity
REPORTForge
{{ nv.label }}
Admin
C. Penk · {{ roleLabel }}
API 510 · CWB L2 · RPAS Adv
{{ screenTitle }}
⌘K  Search clients, TAG #, report #…
CP
Courtland Penk
Admin · courtland@ospreyintegrity.com
Log out
{{ g.title }} ↑ {{ g.delta }}
{{ g.value }}
{{ g.sub }}
{{ g.foot }}
gauge targets set in Admin › Fiscal Year Targets
{{ at.label }}
{{ tl.label }}
{{ tl.value }}
{{ tl.sub }}
+ New Scan Agent
NEW SCAN AGENT — DATA UPTAKE
PROGRAM NAME
SCAN TYPES · multi-select
{{ ty.label }}
TARGET LABELS · from the scan ontology · multi-select
{{ lc.code }}{{ lc.name }}
DATA UPTAKE — A-SCAN PIPELINE SELECTIONS
{{ ur.name }}{{ ur.fmt }}
Training data is sourced exclusively from normalized A-scan imports — ingest runs dedupe → quality gate → waveform normalization.
Cancel Create program → begin labeling
{{ pr.name }} {{ pr.ver }}
{{ pr.use }} {{ pr.codes }}
{{ pr.conf }}%
{{ pr.chip }} {{ pr.appLabel }} {{ pr.enTogLabel }}
Governance. Scan agents train only on inspector-adjudicated readings; Admin approval at ≥ 85% confidence gates entry to the reporting workflow; every approval and Report Gen toggle is audit-logged.
SCAN LABEL ONTOLOGY 6 classes · shared by the Review Tool, scan agents and UT report findings
CODELABELAPPLIES TO
{{ lr.code }} {{ lr.name }} {{ lr.applies }}
Labels apply to waveform markers in the Review Tool — multi-select per scan, one label per marker. Confirmed labels feed the next training run.
TRAINING PROGRAMS
{{ rp.name }}
{{ rp.sub }}
{{ ascRevFile }} {{ ascRevCount }}
AI FLAGGED FINDING {{ ascAiChip }}
HUMAN MARK-UP — click the waveform to place a marker LABEL · {{ ascCurLbl }} ▾
{{ lo.code }}{{ lo.name }}
{{ mk.label }}
{{ mk2.label }} @ {{ mk2.pos }} ✕
HUMAN-IN-THE-LOOP ML TRAINING NOTES
{{ ascAiBtn }} {{ ascHuBtn }}
Next Scan →
A-SCAN FILES
imported from the BackBlaze mirror — normalized on ingest
{{ af.name }}{{ af.fmt }}
{{ af.meta }}
Format support
Now: CSV · JSON · PNG/PDF attach
Next: DICONDE · HDF5 / .nde
Later: vendor-native UT files
{{ ascanName }}
BETA
Attach to report → UT template → AI training pipeline Export normalized JSON
A-SCAN · AMPLITUDE vs TIME-OF-FLIGHT {{ ascanGateA }} {{ ascanGateB }}
0510152025 mm
MEASUREMENT
{{ ascanThick }}wall thickness
TOF {{ ascanTof }} · velocity 5,920 m/s · {{ ascanEchoes }}
{{ ascanNominal }}
NORMALIZED METADATA · vendor-neutral
Probe{{ ascanProbe }} Gain{{ ascanGain }} Range25 mm · 100 MHz sample rate Source format{{ ascanFmt }} → normalized scan / probe / samples[] model EvidenceSHA-256 verified · linked to source file in BackBlaze
Every import — CSV, JSON, or raw waveform — maps to the same internal model (scan header · probe/calibration block · samples[] · gates · readings), so reports, the CML table and future AI training all read one schema regardless of the instrument vendor.
BACKBLAZE STORAGE
⇅ push / pull mirror · in sync Sync now
{{ tn.caret }} {{ tn.label }} + {{ tn.count }}
{{ curPath }}
{{ selCount }} selected Associate with asset ▾ → AI pipeline
ASSIGN {{ selCount }} FILE(S) TO ASSET
{{ ao.label }}
⇪ Drop raw data here — or click to browse
Uploads land in {{ curPath }} and push to Backblaze B2 automatically · pull keeps the workspace mirrored · rename or re-folder from the tree after upload
{{ mu.name }}{{ mu.kind }}{{ mu.size }}MIRRORED · B2
FILEKINDSIZEASSOCIATED ASSET
{{ fr.name }}ML ✕ {{ fr.kind }} {{ fr.size }} {{ fr.assoc }} ✕ assign
{{ mediaUpBtn }}
{{ selName }} {{ annotLabelCode }} 📷 Capture frame at {{ vidTime }}
{{ vidTime }}
11:02.0
METADATA
Source{{ selPathText }} Captured2026-06-11 02:41 MDT PlatformDJI Matrice 300 · H20T SHA-2569f31…c2a8 ✓ verified
Tag as finding → Supporting Cover image {{ annotLabel }} Add to report ↵
TOOL {{ tc.label }}
LABEL {{ lc.label }} + New label
Marked regions save as labeled annotations against this file and enter the training queue.
{{ capturedNote }}
{{ selName }} {{ selPathText }}
Tag as finding → {{ annotLabel }}
{{ selName }}
{{ annotLabelCode }}
📷 Capture frame at {{ vidTime }}
{{ vidTime }}
11:02.0
Captured
2026-06-11 02:41 MDT
Platform
DJI Matrice 300 · H20T
SHA-256
9f31…c2a8 ✓ verified
Frames captured
{{ capturedNote }}
{{ mt.label }}
advanced console ↗
TRAINING PROGRAMS
{{ rp.name }}
{{ rp.meta }}
{{ rp.count }}
Frames come from each program's data uptake — AI-pipeline selections plus auto-extracted video frames. Locked reviews feed the next training run.
{{ rvProgName }} {{ rvProgVer }}
FRAME {{ rvIdx }} OF {{ rvTotal }} · {{ rvStats }}
AI FLAGGED {{ rvFile }} {{ rvAiLabel }} conf {{ rvAiConf }}%
{{ rvFile }} · AGENT PROPOSAL {{ rvAiLabel }} · AI PROPOSED
HUMAN MARK-UP {{ roleLabel }} · drag to draw · drag region to move · handle to resize {{ revShapeCount }} region(s)
{{ rvFile }} · HUMAN GROUND TRUTH {{ revShapesSvg }}
TOOL {{ rt.label }} WEIGHT {{ revStrokeVal }} + {{ rvLabelBtn }} ▾
APPLY LABELS · MULTI-SELECT — {{ rvLabelScope }}
{{ lo.code }} {{ lo.name }}
{{ ls.code }} ✕ REGIONS {{ rr.label }} none drawn
Delete region Clear all
HITL TRAINING NOTES · fed to the model with this frame's ground truth
✓ Approve AI Deficiency Finding Reject AI Finding & Accept Human Mark-Up no regions drawn = recorded as “no deficiency present”
FRAME {{ rvIdx }} OF {{ rvTotal }} ← Prev Next Frame →
✓ {{ rvLockText }} locked · queued for the next training run · audit logged Revise
Next Frame →
AUDIT TRAILimmutable · every label, override, threshold and approval event
{{ ae.at }} {{ ae.who }} {{ ae.act }} {{ ae.detail }} {{ ae.pin }}
LABEL ONTOLOGY · {{ mlLabelCount }} labels are the training target across all agents + New label
{{ lb.code }}
{{ lb.name }}
{{ lb.desc }}
{{ lb.cat }} {{ lb.count }} anns {{ lb.editLabel }} Delete
New labels are immediately available in the Media annotation tools and to all training programs. Deleting a label requires zero open annotations; deletions are audit-logged.
OSPREY DEFAULT SEVERITY · applies when no client matrix is mapped {{ rmEditNote }}
{{ rs.n }}
{{ rs.name }}{{ rs.desc }}
{{ rs.editLabel }}
Rank names and definitions are the org-wide default terminology on findings and issued reports. Edits are Admin-only, version the scale, and are audit-logged.
CLIENT RISK MATRIX — AI-PARSED OVERLAY
CLIENT RISK MATRIX AI-PARSED ⇪ Upload client matrix…
OR RECALL A PREVIOUSLY PARSED MATRIX
{{ rm.name }}
{{ rm.meta }}
{{ rm.chipLabel }} {{ rm.btnLabel }}
OSPREY SEVERITY → CLIENT RANK MAPPING{{ rmActiveName }}
{{ mp.n }} {{ mp.rank }}
“{{ mp.crit }}”
conf {{ mp.conf }} {{ mp.act }}
Mappings ≥ 0.90 auto-apply with 5% blind QA sampling. Below 0.90 requires human confirmation before dual labeling (Osprey severity + client rank) activates. The Osprey scale remains the training target — the client rank is a mapped output layer on findings and issued reports. Parsed matrices are reusable across every agent trained for that client.
{{ k.label }}
{{ k.value }}
{{ k.sub }}
+ New Agent
NEW TRAINING PROGRAM — DATA UPTAKE
PROGRAM NAME
ASSET CLASS · from Asset Library · multi-select
{{ mlAssetBtn }} ▾
{{ mlAssetCount }}
{{ ao.name }} {{ ao.meta }}
Other — describe the asset class
{{ ac.name }} ✕
TARGET LABELS · from ontology · multi-select
{{ ilBtn }} ▾
TARGET LABELS · MULTI-SELECT
{{ lo.code }} {{ lo.name }}
{{ ls.code }} ✕
APPLICABLE CODES & STANDARDS · suggested from use case — confirm or override
JURISDICTION {{ mj.label }}
{{ mlCodeBtn }} ▾
CODES & STANDARDS LIBRARY · {{ mlPickCount }}
{{ po.label }}
SUGGESTED · FROM ASSET CLASS + JURISDICTION
{{ sg.code }} {{ sg.name }}
FULL LIBRARY · CLICK TO ADD
{{ pk.org }}{{ pk.code }}{{ pk.name }}
{{ cs.code }} ✕
{{ mlCodeCount }} confirmed → tags training objectives, scenarios and quiz content conceptually — never clause-verbatim.
DATA UPTAKE — AI PIPELINE SELECTIONS
Media → “→ AI pipeline” selections {{ mlPipeCount }} files
{{ pf.name }} {{ pf.kind }}
No files tagged yet — select files in the BackBlaze workspace and press “→ AI pipeline”.
+ add more from the BackBlaze workspace →
AUTO
Frame extractor engaged — video detected in pipeline selections
{{ vidFrames }} frames
{{ vr.name }} {{ vr.dur }} → {{ vr.frames }} frames
EXTRACT EVERY {{ ec.label }} blurred / duplicate frames quarantined
Training data is sourced exclusively from inspector-curated AI-pipeline selections. Ingest runs dedupe → quality gate → automatic frame extraction for video.
{{ mlIntakeSummary }}
Cancel Create program → begin labeling
{{ p.name }} {{ p.ver }}
{{ p.use }} {{ p.codes }}
{{ p.conf }}%
{{ p.chip }} {{ p.appLabel }} {{ p.enTogLabel }}
{{ frameFile }} {{ frameLabel }} {{ corrLabelCode }} · HUMAN MARKUP
FRAME {{ frameIdx }} OF {{ frameTotal }}{{ framePct }}%
{{ frameLabel }} agent-proposed conf {{ frameConf }}%
✓ Confirm label ✕ Reject
✎ Reject & correct — draw your own markup
TOOL {{ ct.label }}
LABEL {{ cl.label }} + New label
Save correction → next frame
← Prev Next →
{{ frameStats }}
Confirm/Reject auto-advances. Confirmed labels queue for the next training run; rejections route to review.
Governance. Agents train only on inspector-confirmed labels; Admin approval at ≥ 85% confidence gates entry to the reporting workflow; every approval is audit-logged. Current role: {{ roleLabel }}.
TRAINING PROGRAMS + New
{{ m.name }}{{ m.chip }}
{{ m.use }} · {{ m.samples }} samples
{{ m.conf }}%
{{ m.togLabel }}
Agents appear in the Report Generator evidence triage only when enabled here — Admin-only toggle, off by default, every change audit-logged.
AI Training Studio · {{ mlUse }}
{{ mlName }} {{ mlVer }}
{{ mlChip }}
{{ mlApproveLabel }}
{{ st.label }}
{{ st.value }}
{{ st.sub }}
LABEL REVIEW — CONFIRM OR REJECT AGENT LABELS {{ mlLabeledNote }}
{{ sp.file }}
{{ sp.label }} {{ sp.conf }}%
{{ sp.yesLabel }} {{ sp.noLabel }}
Governance. Agents train only on inspector-confirmed labels. No agent enters the reporting workflow until an Admin approves its confidence baseline; approvals, thresholds and version changes are audit-logged. Approved agents still require inspector acceptance of every suggestion in evidence triage. Current role: {{ roleLabel }}.
FINDINGS · 631D-8001B + New
Strip/NDE {{ nStrip }} Monitor {{ nMon }} No Action {{ nNo }}
#{{ f.seq }} · {{ f.title }}
{{ f.zone }} · {{ f.ref }}
{{ f.chip }}
Finding #{{ curSeq }} — {{ curTitle }}
{{ curChip }}
Insert into report ↵
DEFECT TYPE
{{ d.label }}
RECOMMENDED ACTION
{{ s.label }}
ZONE
{{ curZone }} ▾
ELEVATION
{{ curElev }}
ORIENTATION
{{ curOrient }}
EVIDENCE · {{ curEvCount }}
{{ e.name }}
+ from media
OBSERVATION
{{ curObs }}
RECOMMENDATION · phrase library ▾
{{ curRec }}
Report Generator › Northgate Energy · Hardisty Terminal · Utilities Tank Farm · 631D-8001B
Report Builder —
MCKCHA_20260611_THERM_001 Template: {{ rbTplName }} ▾
START FROM TEMPLATE
{{ rt.name }}
{{ rt.meta }}
Preview PDF
{{ statusAction }}
{{ st.label }}
R0 · rev history · autosaved
{{ secGeneral.n }} · GENERAL INFORMATION METADATA · EDITABLE auto-filled from inspection record — click any field to edit
DATE
WO #
OSPREY JOB #
PILOT · from user directory
{{ rbPilotName }}
LICENSED PILOTS · USER DIRECTORY
{{ po.label }}{{ po.lic }}
PILOT LICENSE · auto-pulled
{{ rbPilotLic }}
SCOPE OF WORK
APPLICABLE CODES & STANDARDS
{{ stdListText }}
{{ secResults.n }} · RESULTS SUMMARY TEXT BI
{{ secTable.n }} · ANOMALY SUMMARY FINDINGS TABLE · LIVE
Loc
Defect Type
Zone
Recommended Action
{{ r.seq }}
{{ r.defect }}
{{ r.zone }}
{{ r.chip }}
{{ secFigures.n }} · ANOMALY FIGURES FINDINGS · {{ insertedCount }} LINKED layout: thermal / visual / location triplet
ANOMALY #{{ f.seq }}{{ f.ont }}
{{ f.chip }}
{{ f.zone }} · {{ f.figs }} ✦ AI draft ✎ Verbiage ▭ Markup
{{ t.label }}
SIZE {{ f.szVal }} + WEIGHT {{ f.wVal }} + ROTATE {{ f.rotVal }}
✦ Drafting as expert reliability engineer / asset integrity inspector — applying {{ f.aiCodes }}…
✦ AGENT DRAFT — INSPECTOR REVIEW REQUIRED ↻ redraft
+ Insert finding from panel →
{{ cb.n }} · {{ cb.type }}
+ Row + Column
+ add figure
#{{ pf.seq }} · {{ pf.title }}
{{ pf.zone }}
{{ pf.actionLabel }}
Linked live to the findings register — inserting here mirrors the Anomaly Figures section.
{{ af.name }} ATTACHED
⇪ Attach document…
{{ b.label }}
FINDINGS open workspace →
#{{ f.seq }} · {{ f.title }}
{{ f.zone }}
{{ f.actionLabel }}
+ New finding
+ New template open template builder
✦ Draft with Claude describe it — or upload a design
TEMPLATE LIBRARY {{ tplLibCount }} · grouped by inspection method + New folder
UNDER {{ np.label }} Create folder
{{ tt.caret }} {{ tt.name }} {{ tt.count }} Delete
{{ tt.name }}
{{ tt.desc }}
{{ tt.alloc }} {{ tt.family }} v{{ tt.version }}
no templates yet — create one
Template Builder
new template · unsaved draft
AI Draft with Claude Design
UT thickness examination template for piping circuits — CML measurement tables with nominal/min thickness, calibration block details, probe data, and scan screenshot figure pages.
✦ Draft sections Upload .json / .docx
✓ 9 sections drafted below — review, lock, and save to the library.
TEMPLATE NAME
Pressure Vessel External Visual
FAMILY
{{ bf.label }}
SUB FAMILY · conditional on family
{{ bsf.label }}
ACQUISITION METHOD · multi-select
{{ bam.label }}
ASSET TYPE · from Asset Library
{{ builderAssetSel }}
{{ builderAssetCount }} · managed in Admin › Libraries › Assets
{{ ba.name }} {{ ba.meta }}
SECTIONS · {{ builderCount }}
{{ bs.n }} {{ bs.title }} {{ bs.editLabel }} {{ bs.type }} {{ bs.lock }}
SECTION TITLE
MERGE FIELDS · INSPECTION EXECUTION — CANONICAL REPORT VARIABLES
{{ nf.label }} {{ nf.token }}
{{ bs.inspectionNote }}
MERGE FIELDS · REPORT METADATA — CANONICAL REPORT VARIABLES
{{ gf.label }} {{ gf.token }}
{{ bs.generalNote }}
MERGE FIELDS · {{ bs.staticTag }}
{{ sf.label }} {{ sf.token }}
{{ bs.staticNote }}
{{ bs.bodyLabel }}
FORMATTING
{{ fc.label }}
{{ bp.label }}
Conditional rules, metadata tokens, figure layouts and the defect/phrase bindings are configured after first save. 🔒 sections render pre-filled and structure-locked in the report builder.
Cancel
Save draft · v1
{{ tplName }}
v{{ tplVersion }} · {{ tplFamily }}
Preview with sample data
Publish v{{ tplNext }}
{{ s.n }} {{ s.title }} Edit {{ s.type }} {{ s.lock }}
+ Add section · text / table / figures / metadata / appendix
CLIENT ALLOCATION
{{ tplAllocNote }}
All clients
{{ ta.name }}
{{ tplName }} — sample data preview v{{ tplVersion }} · {{ tplFamily }}
layout only — sample tokens, no client data
OSPREY INTEGRITY
DATA DRIVEN SOLUTIONS
SAMPLE · MCKCHA_20260706_{{ tplFamily }}_001
{{ tplName }} Report
{{ pb.title }}
attached on issue — flight log · calibration certs · supporting docs
1 | Page
{{ pdfBackLabel }} MCKCHA_20260611_THERM_001-631D8001B.pdf {{ statusLabel }} · R0 {{ pdfZoomPct }} +
3 of 12 pages shown · figures auto-numbered {{ issueLabel }}
OSPREY INTEGRITY
DATA DRIVEN SOLUTIONS
Osprey Integrity Ltd.
Cochrane, Alberta, T4C 2C2
ospreyintegrity.com · 1-866-828-7767
CUI Conducive Conditions Screening Report
General Information
{{ gr.label }}: {{ gr.value }}
Asset Static Data
{{ sr.label }}: {{ sr.value }}
{{ rbStaticNote }}
Inspection Details
{{ ir.label }}: {{ ir.value }}
General Notes
This technique is not intended to specifically identify corrosion under insulation (CUI). It is a tested screening workflow to identify areas of concern more likely to suffer from CUI to aid in preventative maintenance.
Signed: Courtland Penk
API 510 – 87600 · CWB LVL 2 – 17678 · RPAS Advanced
Reviewed: ________________
Asset Integrity Team
1 | Page
OSPREY INTEGRITY
MCKCHA_20260611_THERM_001-631D8001B
Results
After review of the data, 12 total locations were noted to have irregular thermal signatures requiring additional considerations.
Three are believed to require additional visual inspection or NDE.
Four are believed to require interval-based monitoring.
The remaining five locations do not require additional action.
Recommendations
Strip insulation OR conduct NDE at anomaly locations 1, 2 & 3.
Monitor anomaly locations 4, 5 & 6 at a suitable interval.
Clean and re-inspect location 7 when practical to do so.
Consider aerially mounted robotic crawlers with pulsed eddy current to quantify comparative thickness prior to insulation removal.
CUI Conducive Conditions — Data Review Summary · 631D-8001B
Loc
Night Thermal
Ingress
False-Positive
Recommended Action
{{ r.seq }}
{{ r.refImg }}
{{ r.ingress }}
{{ r.fp }}
{{ r.chip }}
Table 5-1 — Anomaly summary, thermographic screening 2026-06-11
2 | Page
OSPREY INTEGRITY
MCKCHA_20260611_THERM_001-631D8001B
Anomaly #1
Recommended Action
Strip or NDE
NIGHT THERMAL · 0350T.JPG · ANNOTATED
Figure 7-1 — Night thermal, anomaly boundary marked, shell view N
Details of Analysis
Thermal signatures noted in this location are deserving of follow-up. Patterns are inconsistent with surface deposits. Due to location, consider trialing drone-mounted or air-suction robotic crawler pulsed eddy current.
Fig 7-2 · Day thermal
Fig 7-3 · Day visual
Fig 7-4 · Location, shell N
4 | Page
Edit ✎
{{ c.zoomPct }} + Crop Remove BG
{{ c.name }}
{{ c.sector }}
{{ c.nSites }}
SITES
{{ c.nAssets }}
ASSETS
{{ c.nDrafts }}
IN DRAFT
+ New client name · sector · storage prefix
Clients / {{ clientName }}
{{ clientName }}
{{ cs.label }} {{ clientCode }}
{{ ov.label }}
{{ ov.value }}
{{ ov.sub }}
REPORT REGISTER {{ regCount }} reports · {{ regPermNote }} + New folder
{{ it.caret }} {{ it.label }} {{ it.count }} Delete
{{ it.msg }} Cancel {{ it.btnLabel }}
{{ it.number }}
{{ it.type }}
{{ it.asset }} · {{ it.date }}
{{ it.status }}
STORAGE MAPPING
{{ b.path }}{{ b.status }}
UPLOAD TO {{ ut.label }} → {{ upPathPreview }}
images · video · thermal R-JPEG · flight logs ⇪ Upload files…
⇪ Uploading {{ upCount }} file(s) via presigned PUT — SHA-256 verified, dedupe → quality gate on arrival…
{{ ur.n }} file(s) → {{ ur.path }} · {{ ur.when }} · visible in the Media workspace
{{ assetCrumb }} · {{ assetTag }}
{{ inspType }} · {{ inspDate }}
JOB {{ inspJob }} {{ inspChip }}
Open media
Start report session
CREW & EQUIPMENT
RPAS PLATFORM
DJI Matrice 300
PAYLOAD
DJI H20T
PILOT
Charles McKinnon
RPAS INSPECTOR
Courtland Penk
AIRSPACE
Class G
WEATHER
Variable VFR
DATASETopen media →
214
THERMAL
168
VISUAL
12
VIDEO
36
TAGGED
AI Agent triage ran 2026-06-12 · flagged 12 locations across 96 thermal pairs · review in report session →
FINDINGS · {{ inspFindCount }}open builder →
#{{ f.seq }} · {{ f.title }}
{{ f.zone }}
{{ f.chip }}
ACTIVITY
{{ a.at }} {{ a.what }} {{ a.who }}
New Report
Guided session — select client, asset & template, run the AI evidence review, then compose in the builder.
Start new report →
Continue with Draft
{{ draftCount }} reports currently in draft stage — resume composing in the builder where you left off.
Open drafts →
← Report Generator
Drafts · {{ draftCount }}
{{ dr.number }}
{{ dr.type }}
{{ dr.meta }} · {{ dr.date }}
{{ dr.chip }} Open in builder →
{{ st.label }}
CONTEXT — SELECT CLIENT, ASSET & INSPECTIONasset library lives under Clients
CLIENT
{{ ctxClient }}
{{ co.label }}
ASSET
CLASS {{ acLabel }} ▾ from the Asset Library
ASSET LIBRARY — KEYWORD SEARCH
{{ ac.name }} {{ ac.meta }} {{ ac.ctx }}
{{ ctxAsset }}
{{ co.label }}
INSPECTION
{{ ctxInsp }}
{{ co.label }}
✓ Asset static data duplicated from the library — {{ ctxAsset }} · nameplate fields, zones and defect defaults carried into the new report form.
TEMPLATEfrom the template library · suggested by asset type: Storage Tank
{{ sessTplName }}
{{ sessTplDesc }}
{{ sessTplMeta }}
TEMPLATE LIBRARY · {{ sessTplCount }}
{{ t.name }}
{{ t.desc }}
SUGGESTED {{ t.meta }}
UNITS {{ uc.label }} drives the unit fields in the selected template — {{ sessUnitsHint }}
APPLICABLE CODES & STANDARDS suggested from the selected asset's class — confirm or override
JURISDICTION {{ sj.label }}
{{ stdBtn }} ▾
CODES & STANDARDS LIBRARY · {{ stdPickCount }}
{{ po.label }}
SUGGESTED · FROM SECTOR + ASSET TYPE + JURISDICTION
{{ sg.code }} {{ sg.name }}
FULL LIBRARY · CLICK TO ADD
{{ pk.org }}{{ pk.code }}{{ pk.name }}
{{ ss.code }} ✕ Select an asset and class in Context above — the relevant codes & standards will be confirmed automatically.
Confirmed codes shape terminology, required fields and acceptance criteria in the report — referenced conceptually, never reproduced verbatim. {{ stdCount }} confirmed → written to the “Applicable Codes & Standards” section.
← Back to Report Generator menu
Cancel
{{ sessContinueLabel }}
DATASET SOURCE {{ dsStatus }}
SELECT DATA SOURCE(S) — BACKBLAZE MIRRORED ENVIRONMENT
{{ ds.caret }}
{{ ds.path }}
{{ ds.meta }}
{{ ds.btnLabel }}
Raw data is uploaded and organized in the BackBlaze workspace — this list mirrors those buckets live. Load one or more datasets as the evidence source for this report.
AI
AI dataset review — inspector-gated. {{ triageBanner }}
INSPECTOR ACCEPTANCE REQUIRED Accept all ≥ 80%
ACTIVE AGENTS {{ ag.label }}
{{ runBtnLabel }}
No review run yet on this dataset — select the agents to apply and press Run AI Review Now.
Results are suggestions only; nothing enters the report without your acceptance.
Reviewing 418 files — pairing night/day thermals · quality-gating frames · scoring against {{ triageAgentCount }} agent(s)…
Location #{{ g.seq }} — {{ g.defect }} {{ g.ont }} {{ g.chip }}
{{ g.zone }} · evidence: {{ g.evRefs }} · {{ g.agent }}
{{ g.why }}
conf {{ g.conf }}%
{{ g.acceptLabel }} {{ g.dismissLabel }} ⛶ Enlarge
Location #{{ tvSeq }} — {{ tvDefect }} {{ tvChip }} {{ tvAgent }}
conf {{ tvConf }}%
{{ tvEvMain }} · NIGHT THERMAL AI-FLAGGED REGION
{{ tve.name }}
Why flagged. {{ tvWhy }}
{{ tvZone }} · nothing enters the report without inspector acceptance
{{ tvDismissLabel }} {{ tvAcceptLabel }}
Accepted suggestions become draft findings attributed to the agent, pending inspector review. Nothing enters a report without acceptance; the full evidence chain (source file, timestamp, agent version) is preserved on each.
← Back
Continue with {{ acceptedCount }} accepted →
READY TO COMPOSE
✓  {{ acceptedCount }} draft findings created from accepted triage suggestions — marked AGENT-SUGGESTED · UNREVIEWED
✓  Sections 1–4 pre-filled from asset + inspection record
✓  Anomaly summary table bound to findings (live)
✓  Figure pages scaffolded per finding — thermal / visual / location layout
✓  “Applicable Codes & Standards” section pre-filled — {{ stdListText }}
○  You write: Results Summary, Recommendations, per-finding analysis
○  On issue, the PDF files automatically into Clients › {{ ctxClient }} › Report Register under its facility / asset / year folders
← Back
Open in Report Builder ↵
{{ a.name }}
{{ a.desc }}
{{ adminTitle }} + Add
{{ r.t }}
{{ r.s }}
{{ r.c }}
Codes & Standards Asset Library Defect Library Phrase Library Piping Schedules
PIPING SCHEDULE TABLE {{ psCount }}
NPS {{ pn.label }}
NPSODSCHEDULEWALL (IN)WALL (MM)
{{ pr.nps }} {{ pr.od }} {{ pr.sch }} {{ pr.wallIn }} {{ pr.wallMm }}
Nominal wall thickness per ASME B36.10M (welded & seamless wrought steel pipe). Callable list — feeds the Schedule / Wall field (asset.schedule_wall) in piping circuit records, the Template Builder and the Report Generator, and gives UT thickness reports their nominal-wall reference.
CODES & STANDARDS LIBRARY {{ libCount }} + Add standard
ORGANIZATION {{ oc.label }}
Save to library
ORGCODETITLE / SCOPEDISCIPLINEINDUSTRIES
{{ lr.org }} {{ lr.code }} {{ lr.name }} {{ lr.disc }} {{ lr.ind }} Delete
Selected sections govern design data, inspection scope, acceptance criteria and integrity decisions in reports — narrative references them conceptually, never clause-verbatim. Every entry (including Admin-added custom standards) is available in the Report Generator and AI Training "+ Add code" pickers.
ASSET LIBRARY {{ alCount }} + Add asset class
INDUSTRY GROUP
{{ agc.label }}
{{ alChipsBtn }}
Save to library
INDUSTRY GROUPSUBSYSTEMASSET CLASSSEARCH KEYWORDSEXAMPLE CONTEXT
{{ ar.caret }}{{ ar.group }} {{ ar.sub }} {{ ar.cls }} {{ ar.kw }} {{ ar.ctx }} Delete
STATIC DATA — CANONICAL MERGE FIELDS · {{ ar.schemaTag }}
{{ asf.label }} {{ asf.token }}
{{ ar.schemaNote }}
Industry Group and Subsystem structure is preserved as-is — additions extend it, never reorganize it. Asset classes and their search keywords power the Report Generator's asset-class picker, keyword search, report templating and AI training / retrieval.
DEFECT LIBRARY · DAMAGE MECHANISMS {{ dlCount }} + Add defect entry
DAMAGE TYPE
{{ dtc.label }}
{{ dlChipsBtn }}
Save to library
DAMAGE TYPEMECHANISMOBSERVED CONDITIONSEARCH KEYWORDSAPPLIES TOCONSEQUENCEONTOLOGYREFERENCE
{{ dr.typ }} {{ dr.mech }} {{ dr.obs }} {{ dr.kw }} {{ dr.app }} {{ dr.con }} {{ dr.lab }} {{ dr.ref }}
Damage Type → Damage Mechanism → Observed Condition, per API RP 571 / 583 logic with FHWA, wastewater and high-purity equivalents — insulated systems separated into jacketing, sealing, retention, moisture and CUI families rather than a single "CUI" label. References are conceptual anchors only. Every entry maps to a Labeling Ontology class — the same codes used by AI Training (labels, Review Tool, program targets) and stamped on Report Generator findings, so field conditions, training labels and report defects share one vocabulary.
PHRASE LIBRARY · CONTROLLED LANGUAGE {{ phCount }} + Add phrase
LAYER {{ plc.label }}
LAYER {{ plo.label }} TONE {{ pto.label }}
Save to library
LAYERCATEGORYSTANDARD / ALTERNATE PHRASEUSE / AVOIDTONEKEYWORDS
{{ pr.layer }} {{ pr.cat }}{{ pr.intent }} “{{ pr.std }}”alt: “{{ pr.alt }}” Use: {{ pr.use }}Avoid: {{ pr.avoid }} {{ pr.tone }} {{ pr.kw }}
Four linked layers — Observation → Assessment → Risk / Consequence → Action — assemble programmatically into report narrative. All language stays within an inspection / observation / advisory role: no fitness-for-service, code-compliance or structural-adequacy declarations; engineering decisions are referred to the owner's qualified engineering representative. Phrases power the Report Generator's verbiage assembly and AI drafting vocabulary.
FISCAL YEAR TARGETS · FY-26 provide the target context for the dashboard gauges — Admin only
{{ ft.label }}
{{ ft.hint }}
{{ ft.unit }}
Changes apply to the dashboard gauges immediately and are audit-logged. Targets roll over at fiscal year end.
DISTRIBUTION LISTS — REPORT GENERATOR who is notified as a generated report moves through each stage — Admin only
{{ dst.title }} {{ dst.count }}
{{ dst.desc }}
{{ mm.label }} ✕ + Add recipient ▾
{{ op.label }}
Lists fire automatically after generation: Review and Approval recipients get in-app + email notices with the draft link; Issue recipients receive the final PDF and register entry. Per-report overrides are set at issue time; every send is audit-logged.
{{ rbacCaret }}ROLES & PERMISSIONS — ACCESS MATRIX least privilege · roles are bundles of atomic module permissions · {{ rbacEditNote }} Reset to defaults YOUR ROLE · {{ roleLabel }}
MODULE {{ rh.name }}
{{ rr.name }}HIGH-RISK {{ rc.label }}
View. See records, screens and outputs within the module.
Use. Run workflows and module functions without changing controlled configuration.
Edit. Create, upload, modify or delete working content within the module.
Admin. Manage module settings, governance rules and system-level controls.
Implementation. Backend: atomic permissions module:level (e.g. libraries:edit) bundled into the five roles; policy checks evaluate permissions, never role names. Frontend: nav items and controls gate on the same permission checks — restricted modules dim and log the attempt. Edge cases to resolve before build: Dashboard is treated as View-for-all; report issuance is Use on Report Generator (consider elevating to Edit); Media "→ AI pipeline" tagging counts as Media Edit; Libraries stay out of the Training role by design.
{{ dirCaret }}USER DIRECTORY {{ dirCount }} · licenses feed the Report Generator pilot record + Add user
{{ ug.label }} {{ ur.label }} Create & send invite
NAME · TITLECONTACTLICENSINGROLE
{{ du.caret }} {{ du.name }} {{ du.count }}
{{ du.caret }}
{{ du.name }}CUSTOM
{{ du.title }}
{{ du.email }}
{{ du.phone }}
{{ ll.v }}
{{ du.role }} Push reset
PER-USER PERMISSIONS · overrides apply on top of the {{ du.role }} role Revert to role defaults
{{ pc.mod }}
{{ pc.label }}
Directory synced from the company record — business fields only. License numbers (TC / FAA / ROC-A) flow to the Report Generator's pilot record; inspector credentials will follow the same path. Password resets are pushed by Admin and expire in 24 h.
BRAND IDENTITY — OSPREY INTEGRITY 2026 these defaults apply platform-wide: UI, issued PDFs, client co-brand rules ACTIVE
Primary — Horizontal
report headers, documents, light backgrounds
Primary — Reversed
navy surfaces: app nav, PDF cover band
Stacked
square placements, report back page
Circle Badge — Light
stamps, seals, avatar marks on light UI
Circle Badge — Navy
social, app icons, dark placements
Shield
platform mark — REPORTForge™ nav identity
Logo rules: clearspace = wordmark cap height on all sides · never recolor, outline or add effects · reversed versions only on Deep Navy or photography with a navy scrim · minimum width 96px (horizontal) / 44px (badge).
COLOR SYSTEM · from the 2026 brand kit — applied as the platform default scheme
Deep Navy #011738
primary — nav, wordmark, table headers
Osprey Navy #1D3860
interactive — buttons, selected states
Steel Blue #446EAD
links, live bindings, info accents
Mist Blue #8FA2C0
secondary text on navy, wing tint
Brushed Gold #C8AD7D
digital accent — primary CTAs, highlights
Cloud #F0F1F4
app background, PDF page desk
Ink #2C313A
body text
Wing Gradient
logo artwork only — never UI fills
TYPOGRAPHY · platform default type system
OSPREY INTEGRITY
Display — Montserrat 800/500, all caps, tracked +8% · echoes the serif wordmark's authority in digital
Section Heading — Montserrat 700
FIELD LABEL — MONTSERRAT 600 · CAPS · TRACKED
Body — Poppins 400 at 12–13px, 1.6–1.7 line height. Sentence case; comfortable measure; used for all narrative, descriptions and UI copy.
DATA — ui-monospace · TAG #, report numbers, storage paths, code chips
WRITING STYLE DEFAULTS · feed the Report Generator + AI drafting
Voice. Observation-first, evidence-based, inspection/advisory role — never engineering sign-off. Assessments use "appears / is consistent with / may indicate" (per the Phrase Library).
Referrals. Engineering decisions are always deferred to the owner's qualified engineering representative.
Mechanics. Sentence case body · ALL-CAPS tracked labels · SI units (imperial on client request) · dates YYYY-MM-DD · report numbers {pilot}_{date}_{type}_{seq}-{tag}.
Standards. Codes referenced conceptually, never clause-verbatim. Findings carry Osprey severity + client rank dual labels where mapped.
{{ toastMsg }}