open.gismo · design session · 2026-08-27
Four steps, clickable. A mid-size CRO delivers eleven CSVs with their own column names, two domains they never export, and one file nothing reads. This is what it would look like to get from that to a running pipeline.
Nothing here ships and nothing here is wired to open.gismo. The screens are HTML. What is real
is the data underneath them: the domains, columns, types and metric dependencies were read out of
the 44 workflow YAMLs that og_init() actually snapshots into a project, and the
suggested matches are produced by a matcher that runs when this page loads. If a suggestion looks
wrong, that is the matcher being wrong in public rather than a screenshot being flattering.
Two domains were never delivered. That is normal — not every CRO exports an audit trail or a query log. The question is not whether the run can proceed but whether you know what it costs, so the choice is made here and recorded rather than discovered later as an empty chart.
The whole output of this screen is source_col lines in the
project's own mapping workflows, plus file paths in data-config.yaml. No new
transformation layer, no second spec format, nothing for gsm.mapping to learn. The engine
already reads exactly this.
The delivery in this mockup is hand-authored to be realistically uneven, and it was written before the alias table it is matched against, so the matcher gets no help from having seen it. It scores 45% against ADaM, which is roughly what a real CRO extract looks like.
og_validate() never prints what the user actually has. It reports what
is missing against the target names and stops. The user is left to open the CSV themselves to
find out what the columns are called.Raw_SUBJ is first
because it feeds 22 of the 25 metrics; Raw_STUDY is last because it feeds none.source_col decision. Green rows are already settled, amber rows
are a proposal to confirm, red rows are the real work.Raw_SUBJ.invid has no
candidate in this delivery, because the CRO calls it CENTRE_CODE and no alias
list knows that. It is one dropdown, and 12 metrics hang on it.Raw_STUDY all match PROTOCOL; a machine should not pick.Ingest()) or is logged and
skipped (fs_LoadData()), depending on which path reaches it first. Neither is a
choice the user made.Raw_SUBJ is declared in both SUBJ.yaml and STUDY.yaml
— so an edit has to land in every file that declares it. That is a consistency trap a
person editing YAML by hand will eventually fall into, and the reason the surface should write
the files rather than tell the user which ones to open.