Inspiration

As a full-time college professor, I spend many hours preparing courses for each new semester. Dates must be updated across assignments, quizzes, announcements, content restrictions, and intelligent agents. Course materials also need accessibility review and consistent visual design.

A single missed date can confuse students and generate a flood of emails. I created CourseShift AI to make this repetitive, error-prone process faster, safer, and easier for educators.

What it does

CourseShift AI transforms a previous-semester Brightspace D2L course into an import-ready package for the next term.

An educator uploads a D2L course export, provides a syllabus as a URL or document, enters the new term and time zone, and approves the build. CourseShift then:

  • Extracts dated requirements from the syllabus
  • Matches syllabus activities to the uploaded course
  • Updates supported assignments, quizzes, content restrictions, announcements, dropboxes, and intelligent agents
  • Repairs heading hierarchy and checks selected accessibility requirements
  • Optionally applies a professional, responsive design system
  • Preserves existing images and well-designed content
  • Validates the rebuilt package
  • Returns a new ZIP ready to import into Brightspace

The original uploaded archive is never modified, and temporary files are deleted after the response is delivered.

How I built it

I began by planning the product with the ChatGPT desktop application using GPT-5.6 Sol with medium reasoning. ChatGPT helped me define the problem, scope the Brightspace-first workflow, establish security and accessibility boundaries, and plan the competition demonstration.

I then brought that plan into Codex in VS Code, also using GPT-5.6 Sol with medium reasoning. Codex became my principal engineering collaborator. It helped me design the architecture, implement the application, diagnose Brightspace-specific problems, write tests, improve the interface, build the course design system, and deploy the service.

CourseShift AI uses:

  • Python and FastAPI for the application
  • GPT-5.6 Luna through the OpenAI Responses API
  • Pydantic Structured Outputs for controlled model responses
  • Beautiful Soup and lxml for HTML and XML processing
  • Deterministic code for dates, time zones, package mutation, and validation
  • Render for production hosting
  • GitHub for version control and development history

GPT-5.6 handles the part of the problem where language varies. It maps differently worded syllabus activities to exact titles from the uploaded course inventory and selects from controlled design themes. Confidence thresholds and exact-title validation reject uncertain or invented matches.

Challenges I ran into

Brightspace courses are much more complicated than a collection of HTML pages. Dates can appear in the manifest, quizzes, dropboxes, announcements, intelligent agents, and related dependency fields. Updating only the obvious date can leave a course internally inconsistent.

Another challenge was matching syllabus language to course activities. Different instructors and disciplines use different abbreviations, numbering systems, and assignment names. GPT-5.6 helped interpret those differences, while deterministic validation prevented unsafe matches.

Course design presented another difficult problem. Standalone HTML pages can use shared stylesheets, but Brightspace module descriptions are stored as HTML fragments inside XML. Some CSS values are removed or truncated during import. I developed Brightspace-safe inline styling for headers, cards, steps, callouts, badges, and links while preserving existing images and professionally designed content.

I had also never used Render and did not know about it before this project. ChatGPT recommended Render, guided me through its configuration, and helped troubleshoot the initial deployment failure. Codex then helped verify and refine the production service.

Accomplishments that I am proud of

I am proud that CourseShift AI is a working, deployed product rather than only a prototype or concept.

The platform can accept a real Brightspace export and syllabus, align supported course dates, improve selected accessibility structures, apply an optional design system, validate the package, and return a downloadable import ZIP.

Other accomplishments include:

  • Secure ZIP handling and protection against unsafe archives
  • Preservation of unknown Brightspace metadata and package files
  • Structured and validated GPT-5.6 responses
  • Deterministic fallback when the model is unavailable
  • Accessibility heading repairs without claiming automated certification
  • Brightspace-safe styling for embedded module content
  • A production deployment with health monitoring
  • 143 passing automated tests, strict type checking, formatting, and linting

What I learned

I learned how to deploy and maintain a Python application on Render, work with GitHub as a development record, and use GPT-5.6 as both an engineering collaborator and a controlled application component.

The most important technical lesson was that AI and deterministic software have different strengths. GPT-5.6 is valuable for interpreting inconsistent human language. Exact dates, file paths, XML mutations, security rules, and archive validation should remain deterministic and testable.

I also learned how effective ChatGPT and Codex can be when they are treated as collaborative engineering partners. They helped me move from an educator’s problem to a functioning production application that I could not have built alone within the same timeframe.

What’s next for CourseShift AI

I plan to use CourseShift AI each semester and share it with colleagues for feedback.

Future work includes:

  • A detailed per-change review and approval interface
  • Downloadable date, accessibility, validation, and change reports
  • Additional accessibility checks and guided manual review
  • OCR support for scanned syllabi
  • Authentication and durable audit history
  • Additional LMS adapters
  • Pilot testing with more educators, disciplines, and course structures

My long-term goal is to make CourseShift AI available to educators who want to spend less time repairing course settings and more time supporting their students.

Built With

Share this project:

Updates