Growth Lab workspace
The GUI is organized around two grower tabs (Flows / Create) so you do not hop between Sources, Alerts, and Reports to finish a flow. Settings → Contacts is any signed-in session. Settings → Adapters appears only when you sign in as the tenant.
Available
- Two-tab shell (Flows, Create) with unsaved-change confirmation
- Flows: browse, edit, upload, delete, duplicate, export, simulate, inspect
- Create wizard: Flow, Sources, Alerts, Reports
- Tile pipeline grid with the palette built from
GET /v1/tilesand per-tile settings dialogs generated from each tile’s spec - Sources catalog grouped by hint: add, edit, disable, delete from the wizard step
- Alerts step: pick contact lists, trigger / reset / cooldown / aggregate, verified badges, send verification
- Reports step: schedules in
settings.reports, history, send now; public report page (/report/{token}) with PDF download - Run with live analysis, run history, an Also send alerts confirm, and the Run results chart
- Flow settings on Create and Edit: colours, units, report branding
- Settings: Contacts, Account Settings (users with
canOverrideBranding), Adapters on a tenant session (register, edit, test, targets sync)
Planned
- AIVA verify
- Import validation against
/v1/flows
Flows
The Flows tab lists the signed-in user’s flows (sign in first; a tenant session sees every user’s flows). Search and filter by status, then select one to see its latest analysis (triggered / not triggered, probability, colour, last run), run history, and how it is targeted (sources, alerts, reports).
From this tab you can:
- Status: Active / Paused / Draft. The scheduler only fires while Active; Paused keeps the interval.
- Run: evaluate the flow now from the selected flow’s Run button. Runs are queued and the targets execute in parallel; the GUI polls until the run finishes, then the result appears in Latest analysis with a per-target, per-tile breakdown (value, on/off, any tile error). Run results opens the results chart: per-tile trigger bands and values, the combined flow trigger, and (for area targets) the sensors that were averaged. Zoom with the wheel or Shift+drag. Pick a history row first to chart that run. If a run of this flow is still going, Run is disabled and a 409 is explained in a toast (the GUI watches that run when it can). A queued/running chip shows while a run is in flight. Data tiles use generated demo data unless their Data source is switched to an adapter (see Adapters).
- More Actions (three dots):
Export Flow downloads the definition as JSON (tiles, sources, alerts, reports,
appearance). Simulate runs as-of a date and time (
POST /run { now }); alerts are not sent. Inspect lists past runs (filter by source and date), charts tile outputs (raw weather/sensor series are not stored), and exports runs or chart CSV. Duplicate and Delete stay in the same menu. - Edit: reopen the same setup wizard (flow, sources, alerts, reports) without leaving the tab. Unsaved changes ask before you leave.
- Upload: import an exported flow JSON (or a classic Growth Lab
{name, model}export) as a draft. Re-bind sources if you brought the file from another tenant. Engine-side import validation is still planned.
Create
The Create tab is the full new-flow workflow on one page:
- Flow: name, status (draft / active / paused), notes, and the tile pipeline. The
palette is built from this tenant’s
tile catalog (
GET /v1/tiles: icon, colour, order, short name). Drag a tile onto a step (tap a step on mobile). Use the pencil on a placed tile to open its settings. The dialog is generated from that tile’s spec (GET /v1/tiles/{id}/spec: groups, ranges, units, choices, dependent fields), so new or tenant tiles get a dialog with no GUI change. The pencil is orange while a tile still uses its defaults. Saving the flow validates every tile’s parameters in the Engine; errors point at the field (tiles[0].params.threshold: …) and the GUI jumps to that cell. At least one tile is required. - Sources: bind the flow to your Sources (yours, or synced for you by a targets adapter),
or add one here.
Every Source is the same kind of record with a
hint(areas, sensors, weather stations, or anything you define). Add opens a dialog: name, hint, optionalsensorTypeon non-area sources (same-type sensors inside an area are averaged), timezone / tenant key, and geometry (none, click a point, or click a boundary ring). Edit, disable, or delete from the row menu. Disabled sources stay in the catalog but cannot be bound. The step groups by hint and maps boundaries/locations when present. Hover a row to light up its polygon or marker; selected markers get a red ring. Click a shape or row to select it. - Alerts: check the contact lists that should receive this flow’s alerts (create people and lists in Settings → Contacts). Trigger settings (threshold crossing vs every run, return-to-normal, cooldowns, aggregate). Unverified addresses show a badge; the Engine will not send until they are verified. Sign in as tenant to send the email link or SMS code from Settings → Contacts (grower sessions wait on an Engine user-gate). Run on the flow is silent unless you check Also send alerts; scheduled runs always send.
- Reports: per-flow schedules (time-driven or on flow trigger), target filter, and
contact lists, stored as
settings.reports. History lists Engine send attempts; Send now emails a 7-day link from the latest succeeded run. The public/report/{token}page renders the payload and offers Download PDF. History and Send now need a saved flow.
Finish with Create flow. The new flow appears on the Flows tab so you can inspect it and edit it later.
Adapters
Settings → Adapters is tenant-only (Sign in as tenant). A grower session never sees
that pane and never calls /v1/adapters. From it you can register one script per
facet (series, weather, events, targets, comms), edit the script and egress
allow-list, replace write-only env secrets (values are never shown again), Test with a
sample request, and Sync sources on a targets adapter. See Adapters.
The toolbar keeps Settings (gear), theme, sign-in, and Help. Create / save / run live
on the Flows and Create tabs. Help is a short workspace map plus a link to these docs.
Settings opens Contacts, Account Settings, and
(tenant session) Adapters. Per-flow colours, temperature units, and report branding
are Flow settings on Create and Edit (next to Draft / Active / Paused). Colours are
stored as settings.colors and used on the next run. Temperature units convert tile
fields, summaries, and run values in the GUI; stored params stay °C. Tenant GUI chrome
is the skin, not this dialog.