A static review-and-edit surface for the 25 BBQS R34/R61 grant records, shown next to the verbatim source text each field was checked against.
- Left pane — the extracted record. Click any value to edit it.
- Right pane — the slide-deck text and the matching Data Pipeline Blitz transcript segment.
- Chips under each title — grouped into Devices and Software / tools. Every one is clickable, including generic labels.
- Export CSV — writes the official CSV with the original column order preserved.
Any device or tool name is a link — not just in the chip row, but inline inside the field
values themselves, including the devices, tools_used and data_sources_json cells. Names
are matched longest-first against the registry alias index, so a cell reading
Synchronized cameras (Basler / FLIR) gives you two separate links without the stored text
being altered.
Link colour follows the registry tier: green = documented, blue = identified, amber = no public docs, grey = generic category label. Grey links still open a card — it explains what the label is and what to ask the project to replace it with.
devices, data_types_measures, tools_used, data_sharing_venues, pis,
clinical_domains, experimental_contexts and species are semicolon-delimited lists. Editing
one gives you one input per item, with add, remove and reorder. The delimiter is managed by
the editor, so it cannot be broken by typing, and a stray semicolon can no longer split a row
into garbage.
The same applies one level deeper: inside data_sources_json, the devices, measures,
tools and sharing sub-fields each get their own per-item editor. source stays a single
field.
While editing, each row shows a links to hint naming what that item resolves to, so you can see immediately whether a rename broke the registry link.
Splitting is never automatic. If an item contains commas (OBSBOT 3-D cameras, behavioral coding), a Split button appears — but nothing happens unless you press it. The tool will
not silently restructure your data. Edit as one line is always available if you want the raw
string back.
git init
git add .
git commit -m "BBQS extraction workbench"
git branch -M main
git remote add origin git@github.com:<org>/<repo>.git
git push -u origin mainThen: Settings → Pages → Source: Deploy from a branch → main / / (root) → Save.
The site appears at https://<org>.github.io/<repo>/ in a minute or two.
To serve from docs/ instead, move these files into docs/ and pick that folder in the same menu.
.nojekyll is included so Jekyll doesn't touch assets/. There is no build step and no
dependency install — it is three static files plus data.
Because the data is embedded in assets/data.js rather than fetched, opening index.html
directly with file:// works. If you prefer a server:
python3 -m http.server 8000 # then open http://localhost:8000This is static hosting — there is no backend, no database, and no auth. Every edit lives in your browser tab only.
| Button | What it does |
|---|---|
| Export CSV | Downloads grant_project_info.csv with your edits applied. This is the deliverable. |
| Export registry | Downloads tool_device_registry.json with your registry edits applied. |
| Save draft | Downloads a JSON snapshot of work in progress (records + registry + review ticks). |
| Load draft | Restores a snapshot from that file. |
| Revert all | Discards everything, back to the QA-corrected baseline. |
Closing the tab without exporting loses your edits. There is a browser warning on unload, but don't rely on it. Anyone with the URL can edit their own copy — that is a demo affordance, not a review workflow. For real multi-person review you want the CSV in version control and edits arriving as pull requests.
Each field carries a badge showing where it came from:
- slide deck — copied from the R34/R61 data-inventory PDF
- transcript — from the Day-1 Data Pipeline Blitz recording
- inferred — derived from slide content, not stated verbatim
- NOT IN SOURCES — model-generated, appears in no source document
- generated by QA — produced by the QA pass itself (
qa_flags,tool_device_refs_json)
device_software_publications_json is badged NOT IN SOURCES for a reason: all 63 citations
were generated from model knowledge and appear in neither the decks nor the transcripts. Only
one has been verified. Treat the whole column as unconfirmed.
Every tool/device card shows a status. It governs how much to trust the card.
| Status | Count | Meaning |
|---|---|---|
documented |
5 | Official docs fetched. Prerequisites, installation and troubleshooting are populated, and every troubleshooting item carries a source_url. |
identified |
66 | Entity and maintainer confirmed, docs URL recorded. Enrichment fields are null on purpose — not researched, rather than known-empty. |
no_public_docs |
11 | Bespoke project code or hardware. Nothing public exists to ingest. |
not_a_product |
92 | Generic category label from the source table ("Behavioral coding", "Video"). Nothing to enrich; these are not clickable. |
verification.fields_verified lists only what was confirmed against a fetched source. A field
that is populated but absent from that list is unverified. If you gate ingestion on one thing,
gate it on that.
When you edit a registry entry, keep fields_verified honest — add a field name only once you
have actually checked it against the source you cite.
- 51 of the 61
no_public_docsreferences are the single string"custom". No documentation research fixes that; those projects need to supply repository URLs. - One record (
R61MH138705, Hirsch) has slides that are flat images with no PDF text layer, so its source pane cannot show verbatim text. Its values were read off the rendered slide by eye. - Browser-storage APIs are deliberately not used, so there is no autosave. Draft export is the substitute and it is explicit on purpose.
index.html markup and modal shell
assets/styles.css all styling
assets/app.js editing, registry modal, exports, filters
assets/data.js embedded records, registry, changelog, source text (~500 KB)
.nojekyll stops Jekyll processing assets/
To refresh the data, regenerate assets/data.js — it is a single assignment to
window.__BBQS__ holding {columns, records, registry, sources, changelog}.