Transcript chunks
The transcript split into short, timestamped passages, each embedded and stored with its course, section and time range.
This page walks through each part of the system: what it does, what it doesn't, and how the pieces fit together.
The engine is a pipeline. Two of its stages are AI; the rest are plumbing and a human review. Nothing is published without the creator's sign-off.
The creator submits a public video. The video itself is never downloaded or re-hosted; only its transcript and metadata enter the pipeline.
The video's own captions when present, otherwise speech-to-text. Every line keeps its start and end time; timing is what ties everything after this stage back to the video.
A model reads the transcript and proposes where the tutorial changes task: section boundaries, a title and a short summary per section, and the editor areas each one touches.
For each section, a model drafts the steps a learner performs, the editor elements they involve (anchors), and checkpoints: what should be true in the project when the section is done.
The creator gets the draft, not a blank form. They fix boundaries, rewrite steps, drop what is wrong. What they approve is what ships.
The approved course is indexed and listed in the plugin. Playback references the original YouTube video by id and timestamp.
Goal-based search and contextual chat are both retrieval over the same two indexes, built at publish time.
The transcript split into short, timestamped passages, each embedded and stored with its course, section and time range.
One entry per section: title, summary, steps, editor surfaces, and the Unreal version the tutorial was recorded on.
A query like “I want my logo to spin in 3D” is embedded and matched against the section index first, then against transcript chunks to pin the exact time range. The result is a course, a section and a timestamp, ranked by match and by how close the recorded version is to the learner's. The video title is one signal among many, not the main one.
When a learner asks a question mid-course, retrieval is scoped to that course, and a context block travels with the question: which video, the current playback time, the current section, which steps are checked off and, when relevant, the picked element or log line. The model answers against the retrieved passages and that context, and cites the minute it drew from.
course: make-animated-3d-logo section: 3 · Rotation in Blueprint video_time: 44:12 steps_done: [1, 2] of 3 learner_version: 5.8.1 · recorded_version: 5.0 retrieved: 4 passages, 41:50–46:30
Mindocai is a standard Unreal Engine plugin. It docks as a Slate tab and reads the editor through public APIs. No engine source modifications are required, so it installs like any other plugin.
The panel is a Slate widget docked in the editor layout. The picker walks the live Slate widget tree, the same tree the editor draws, to find what the user clicked.
Unreal widgets have no stable ids, so an element is identified by several signals at once: its visible label, its tooltip, its widget type, and its surrounding context (the parent panel, the tab, neighbouring labels). Together they name the element reliably enough to explain it, and to recognise it again after the layout changes.
A picked element is sent as its fingerprint, not as a screenshot. An error is sent as the log lines around it. The project's assets and source stay on the machine.
The same fingerprints let a course step point at the live element it refers to, highlighting it in the learner's editor rather than describing it. Working for the picker today; on the roadmap for steps.
label: Place Actors tooltip: Place actors in the level type: SDockTab › SPlacementModeTools context: Level Editor · left dock · next to Outliner version: 5.8.1
A tutorial recorded on one Unreal version is played on another. Mindocai does not edit the video; it adjusts the steps around it at playback time, using the recorded version, the learner's version, and the fingerprint of each element a step refers to.
When a step falls in the second column, the course says so at that step, points to what replaced it when known, and lets the learner continue. This extends the useful life of a tutorial by versions, not forever: content built on a removed system is marked, not rescued.
Learning is free. Inference cost is kept down with three mechanisms, in this order.
An explanation of a widget is keyed by its fingerprint and the engine version. The first learner to pick “Place Actors” on 5.8 pays for the call; the next ones read the cached answer. The same applies to section summaries and to common errors.
Routine work (identifying a widget, summarising a passage, drafting a plan step) runs on small, cheap models. Larger models are reserved for diagnosis: reading an error against the learner's context, or answering an open question mid-course.
Learners with their own provider account can plug in their key. Their requests go through it, outside the platform's quota.
The demo is recorded on a working prototype on Unreal Engine 5.8.1. It is not a mock-up: the editor integration, picker, contextual chat, error reading, course playback and plans shown there run in the editor.
The transcript pipeline, retrieval and contextual chat build on patterns already running in production SaaS platforms. The new work is in the editor integration and in the course format itself.