← back to @david

11 MAR 2026

David decided: Build user-upload modal for missing external lecture sources

David decided to address the problem of Canvas courses that link to external docs (Google Slides, hosted PDFs) by building a user-facing upload modal that asks students to supply the missing files before lecture generation begins.


After the investigation confirmed that many Canvas courses post lecture materials as external links (Google Slides, Panopto, Google Docs) rather than native Canvas file uploads, David decided the fix was to surface a modal asking users to manually upload those files.

David specified the UI in concrete terms:

im thinking its hero text should be simple greeting from kerra saying something hey, i already have most of the files i need from your canvas (or whatever their lms name is - if null then use d2l type as the name) but im missing these: then show the grid where each item in the grid is a square with curved edges and its not a solid square with solid line, its dotted line. and inside it is an upload icon with text saying upload here.

He rejected reusing the existing upload modal aesthetic:

no, that one is too small and i dont like it. we need to build ours from scratch.

He also caught an overreach in the plan — a proposed "I understand these PDFs will be used to generate course-shared lecture notes" acknowledgement checkbox — and removed it:

remove this

For labelling each upload slot, he pushed back on a complex URL-derived title scheme:

no that is overcomplicating it

The classification rule David settled on: parse each primary page's HTML, promote external links to materializable documents (non-video file/presentation signals) as upload requirements, demote weak page-only shells where the page's text residual after removing child links is negligible.


kerradecisionupload-modallecture-notescanvasuxcodex