Blueprint: mining education
Training telemetry that supervisors can query immediately.
Browser-based 3D drilling-rig simulations produce deeply nested ASSESSMENT_ATTEMPT records: STEP_RESULT sequences, SIMULATION_EVENT bursts, timings, retries, and instructor notes. RushDB lets the frontend send that JSON directly as records tagged with cohortId, rigModel, and operation, then query it with filters, select clauses, groupBy, and time buckets so cohort and supervisor dashboards work immediately.
Mining EdTech Simulation Analytics is a RushDB blueprint that ingests nested 3D drilling-rig simulation JSON — assessment attempts, step results, and telemetry events — as queryable records, so cohort and supervisor dashboards can filter, group, and drill down without a separate analytics pipeline.
Training insight gets buried inside telemetry blobs.
Mining training platforms collect rich ASSESSMENT_ATTEMPT and STEP_RESULT data, but managers usually need a backend analytics project before they can answer practical questions: which cohort struggles with torqueResponse, which rigModel operation like pipe-tripping takes too long, where students repeat unsafe steps flagged by SIMULATION_EVENT warnings, and which supervisors need INSTRUCTOR_NOTE evidence for follow-up.
Before
- 3D simulation events stored as large denormalized JSON blobs
- Assessment paths require manual flattening before analysis
- Cohort dashboards need custom joins across students, attempts, steps, and telemetry
- Supervisors wait for backend analytics work before seeing training patterns
With RushDB
- Assessment attempts, step results, and simulation events become queryable records
- Nested JSON preserves the operational path without a schema-planning delay
- MongoDB-like filters, select, groupBy, and time buckets power thin dashboards
- Managers inspect cohorts, rig models, operations, errors, and student progress from one datasource
Graph intelligence on ingest
Incoming data becomes queryable graph context.
Each simulator attempt arrives as one ASSESSMENT_ATTEMPT payload nesting STEP_RESULT, SIMULATION_EVENT, and INSTRUCTOR_NOTE entries. RushDB assigns stable labels to each nested array, links them to the parent attempt, student, and cohort automatically, and keeps rigModel and operation as filterable properties so dashboards can group performance without a preprocessing stage.
01
Normalize as attempts arrive
RushDB infers types for score, durationSec, timeSec, and status fields as each ASSESSMENT_ATTEMPT streams in from the simulator.
02
Auto-link nested telemetry
Nested STEP_RESULT and SIMULATION_EVENT arrays become connected child records under the same attempt, student, and cohort automatically.
03
Enrich across cohorts
Suggested-relationship analysis surfaces links between rigModel, operation, and recurring SIMULATION_EVENT warnings across students and supervisors.
Suggested relationship analysis requires an LLM configured for the project. Suggestions stay in draft form until you approve them, so inferred domain meaning never mutates the graph silently. You can also add explicit relationships through the SDK or API.
Review suggested relationship patternsData model
One flexible graph for the workflow.
Start with the payload shape your product already produces. RushDB stores it as Records, infers typed properties, and keeps nested or approved domain relationships queryable.
Deeply nested assessment paths can stay denormalized at write time while becoming queryable records for dashboards.
{
"attemptId": "attempt-884",
"studentId": "student-42",
"cohortId": "cohort-night-shift",
"rigModel": "DR-9000",
"operation": "pipe-tripping",
"score": 86,
"STEP_RESULT": [
{ "stepName": "preStartInspection", "status": "passed", "timeSec": 91 },
{ "stepName": "torqueResponse", "status": "needsReview", "timeSec": 133 }
],
"SIMULATION_EVENT": [
{ "eventType": "torqueThresholdWarning", "timestampMs": 184220, "severity": "medium" }
]
}Working example
Ingest one rig assessment. Group cohort performance.
A browser simulator sends one deeply nested assessment attempt. A thin dashboard queries average score and event counts by rig model, operation, event type, and cohort.
ASSESSMENT_ATTEMPT attempt-884
studentId: student-42
cohortId: cohort-night-shift
rigModel: DR-9000
operation: pipe-tripping
STEP_RESULT preStartInspection passed 91s
STEP_RESULT torqueResponse needsReview 133s
SIMULATION_EVENT torqueThresholdWarning severity: medium{
"labels": ["ASSESSMENT_ATTEMPT"],
"where": {
"cohortId": "cohort-night-shift",
"operation": "pipe-tripping"
},
"select": {
"avgScore": { "$avg": "$record.score" },
"attempts": { "$count": "$record" }
},
"groupBy": ["$record.rigModel", "$record.operation"]
}[
{ "rigModel": "DR-9000", "operation": "pipe-tripping", "avgScore": 82.4, "attempts": 38 },
{ "rigModel": "DR-7000", "operation": "pipe-tripping", "avgScore": 76.1, "attempts": 21 }
]TypeScript SDK
Ingest denormalized telemetry. Query it like operational data.
The simulator can send nested assessment JSON as it is produced. RushDB turns it into records that thin dashboards can filter, summarize, group, and drill into.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
db.records.import_json({
'label': 'ASSESSMENT_ATTEMPT',
'data': {
'attemptId': 'attempt-884',
'studentId': 'student-42',
'cohortId': 'cohort-night-shift',
'rigModel': 'DR-9000',
'operation': 'pipe-tripping',
'score': 86,
'durationSec': 742,
'STEP_RESULT': [
{'stepName': 'preStartInspection', 'status': 'passed', 'timeSec': 91},
{'stepName': 'torqueResponse', 'status': 'needsReview', 'timeSec': 133},
],
'SIMULATION_EVENT': [
{'eventType': 'torqueThresholdWarning', 'timestampMs': 184220, 'severity': 'medium'},
],
},
})
cohort_scores = db.records.find({
'labels': ['ASSESSMENT_ATTEMPT'],
'where': {'cohortId': 'cohort-night-shift', 'operation': 'pipe-tripping'},
'select': {'avgScore': {'$avg': '$record.score'}, 'attempts': {'$count': '$record'}},
'groupBy': ['$record.rigModel', '$record.operation'],
})Implementation blueprint
Build the mining training analytics path.
Use this sequence to turn 3D simulation telemetry into supervisor, stakeholder, and training-manager dashboards without building a separate analytics pipeline first.
- 01Send ASSESSMENT_ATTEMPT JSON from the browser after each operation test
- 02Preserve nested STEP_RESULT, SIMULATION_EVENT, ERROR_EVENT, and INSTRUCTOR_NOTE records
- 03Query attempts with MongoDB-like filters by cohort, student, rig model, operation, and date
- 04Use select, groupBy, and time buckets for cohort dashboards
- 05Let the thin UI render approved dashboard queries and drill-downs from RushDB
Build path
- Keep simulator telemetry append-only where auditability matters.
- Model students, cohorts, attempts, steps, events, notes, and supervisors as connected records.
- Use select queries for score, duration, event frequency, and retry patterns.
- Expose frontend dashboards through approved query shapes for student-data governance.
Relevant docs
Read the exact primitives behind this pattern.
These links point to the RushDB docs pages that map directly to this blueprint: ingestion, labels, properties, values, SearchQuery, relationships, semantic search, MCP, or deployment.
Import JSON data
Import deeply nested simulator attempts and let RushDB create linked attempt, step, and event records.
Open docsSelect expressions
Build score, duration, error-frequency, and time-bucket metrics from training assessment records.
Open docsgroupBy
Group attempts by cohort, rig model, operation, step, event type, or severity for dashboard views.
Open docsHow it works
Build the smallest useful workflow first.
01
Ingest the simulator payload
Send the operation attempt, step path, telemetry events, timing, score, and notes as one nested JSON write.
02
Analyze without flattening first
Use filters, select, groupBy, and time buckets over the resulting records to build cohort and supervisor dashboards.
03
Drill into training evidence
Move from a cohort metric into the underlying student attempts, step results, simulation events, and instructor notes.
Know where it fits.
Frontend-friendly does not mean ungoverned
A thin UI can render dashboards quickly, but approved query shapes, access controls, and student-data governance still belong in the product boundary.
Denormalized input, queryable output
The simulator can emit messy nested JSON. RushDB preserves the path as graph context while still supporting analytical queries over scores, events, cohorts, and operations.
Questions developers ask.
Next step