Platform
Everything that happens to a row after it lands.
How every value's provenance is kept, and what you can do with the result once it is in — every capability below is shipped today, built specifically for environmental monitoring data.
01 — How your data is handled
Nothing is rewritten. Everything is traceable.
Canonical Units & Provenance
Every result carries a canonical target unit, an exact conversion factor, the registry version that produced it, and a status (Converted, canonicalized casing, unconvertible passthrough, or unknown unit). The as-reported concentration, unit, and qualifier are never modified — the canonical value is computed alongside the original, not in place of it.
Result Qualifiers
A versioned qualifier dictionary (J/R/U/B/E/D and compounds) whose meaning is
derived at read time rather than baked into a stored value. Rejected data
(R) is excluded from charts and
analytics by invariant — it can never quietly re-enter a trend or a screening
pass.
Audit Trail
An append-only, SHA-256 hash-chained log of every validation failure, warning, correction, manual edit, and commit/rollback event a batch passes through. Committed records carry a separate tamper-evident hash so an in-place edit after commit is detectable, and post-commit changes in the admin panel require a recorded reason before they are allowed.
Validation Rules
Severity-tiered field rules run at the Validate step: required fields, CAS number format, date and time parsing, numeric and unit-aware range checks, and method-in-standard checks. Warnings inform a reviewer; failures block a row from committing until it is corrected.
Rollback & Archive
A config-driven rollback contract drives both execution and verification from one ordered step list, so the two cannot drift apart. Deleted rows are archived to S3 as JSONL with a SHA-256 manifest before removal, and a two-phase preview-then-approve flow halts automatically if the plan changed underneath it.
Analyte Resolution
A CAS-keyed synonym dictionary — public-domain registry entries plus a hand-curated abbreviation list — resolves lab shorthand like "TCE" to Trichloroethylene at import time. Parameters with no CAS number at all (TPH, BOD, total xylenes) still resolve and commit instead of being silently dropped.
02 — What you do with it
Committed data, put to work.
Criteria Screening
A live comparison engine screens any project's results against chosen regulatory criteria sets and a land-use scenario — pass, fail, no applicable standard, or a distinct "uncomparable" bucket for a unit mismatch or missing value. A whole-project pass and a write-once "freeze as official determination" snapshot are both available for report generation.
Trends
Concentration trend charts render non-detects and detection limits alongside detected values rather than hiding them, with zoom, pan, fullscreen, and the same project-scoped filters used across the rest of the admin panel.
AI Assistant
A natural-language interface, built on the Laravel AI SDK, for querying and analyzing the lab data already committed to your project — no separate export or spreadsheet round-trip required.
Exports
Data comes back out. The .xlsx workbook export runs from the app on demand through the export pipeline, with config-driven export profiles, audit history and staleness controls on generated files, alongside a raw source-archive export that hands back the original uploaded files. The GIS\Key 3.1 DBF export mirrors the import field mapping and is run by our team on request.
QA/QC Workflow
Viewing, exporting, and editing QA/QC data are separate permission verbs granted per person rather than bundled into a fixed role, gated by the organization's own QA/QC entitlement. A location-restricted analyst can hold QA/QC export without gaining every location in the tenant. The Results view itself keeps a dedicated Primary / QA-QC toggle.
Headless API
The same four-step pipeline the admin panel drives — stage, validate,
standardize, resolve references, commit, rollback, discard, status — is
available over a Sanctum-authenticated /api/v1/import
endpoint with scoped read/write abilities and rate limiting, for teams that
want to drive an import from their own tooling.
03 — Built for environmental data
Purpose-built for environmental monitoring programs.
CHEMDAS runs the full lifecycle for the data these programs actually work in — GIS\Key migrations, lab electronic data deliverables, and field records — with the provenance, criteria screening, and audit depth that general-purpose data tools were never built to reach.
See it against your own data.
Tell us what you have and we will tell you what will and will not come through — before you move anything. If you are coming off GIS\Key, the 3.1 migration write-up walks through exactly what we read, table by table.