Today

From researcher to Analytics: fourteen components, four representations, no single source of truth.

Step 0 / 10 Press → or click Next to begin. Use ← to go back.
Messages answer payload messages[] / next question domain event compiled script
⚠️
The hard ceiling. This instruction must be written in Chasm — Rival's proprietary chat assembly language. No LLM has training data on it. If the compiler was not explicitly taught this card, it cannot compile it. Changes 1 and 2 are irrelevant until this unblocks.
Authoring
Researcher
authors in
Chatlab UI
Researcher builds survey: cards, conditions, piping, quotas
saves as
ChatBuilder DB
Survey stored in DB + YAML
hit publish
Chatpublishing
Chasm compiler, AST generator
chat obj → botcore script
compiled script
S3 Script Storage
Compiled script artifact at rest
Responding
Respondent
interacts
Web Client
Card Renderer
receives: messages[]
sends: events[]
Own card renderer schema
WebSocket
Nchan / Nginx
Pub-sub broker. WebSocket scalability layer in front of Botcore.
pub-sub
Chat Agent
Fetches compiled script from S3. Routes messages via Nchan.
runs
Botcore / Chat Engine
chatEngine.run(script)
Emits messages[] back through Nchan. Emits domain events to MessageHub.
loads
Fixed Script
Dynamic behaviour ceiling-capped by Chasm. Each card type needs its own compiler instructions baked in.
Analytics
MessageHub / Kafka
Domain event bus. Botcore publishes, Analytics consumes.
consumes
Analytics Service
Node.js consumer. Transforms events, writes to OpenSearch.
indexes into
OpenSearch
Answer-level rows. One row per answer event.
streams into
Data Integration Layer
Streaming ETL. Pivots answer rows into engagement rows. Each question becomes a column.
direct push scheduled sync
Sisense
Direct push. Ad-hoc, manual trigger. One class of reports.
Redshift
Regular scheduled sync. Feeds a second class of Sisense dashboards.
powers
Sisense
Redshift-backed dashboards. Second class of reports. Two Sisense surfaces, two data paths.
UI Schema
Drives authoring UI only
YAML / DB
Saved survey representation
Compiled Script
What actually runs in Botcore
Card Renderer Schema
Drives Web Client; separate from everything above
Proprietary DSL: only the compiler can produce a runnable script. No AI model has training data on it.
Four representations: drift between UI schema, YAML, compiled script, and card renderer schema causes silent bugs.
Chasm ceiling: any new card behaviour requires new compiler instructions. If Chasm was not taught it, the survey cannot do it.
Nchan dependency: WebSocket scalability requires an extra infrastructure layer not native to the app server.
Card Renderer is a fourth schema surface: adding a card type requires changes in four places across two separate systems.
Analytics pipeline: answer rows land in OpenSearch, stream through a Data Integration ETL that pivots them into engagement rows, then split two ways — a manual direct push to Sisense and a scheduled sync via Redshift to a second Sisense surface. Two data paths, two Sisense instances, no single source of truth.