Leading the technical development of Let's Talk Science's curriculum-aligned resource discovery tool, a cascading search system that maps every Canadian province and territory's curriculum to a unified, bilingual resource library.
Let's Talk Science is a national charitable organization founded in 1993 with a mission to engage youth in science, technology, engineering, and mathematics. Through volunteer-led outreach, classroom programs, and digital resources, LTS has become one of Canada's most recognized names in STEM education.
The organization's reach is substantial. Through volunteer-led outreach at over 50 post-secondary institutions, national programs like Tomatosphere and Living Space, and a growing library of digital resources, LTS connects millions of Canadian youth to STEM learning every year. That scale of engagement depends on digital infrastructure that can surface the right resource to the right teacher at the right time, and by 2015, the existing platform was no longer up to the task.
Let's Talk Science maintains one of the largest free curriculum-aligned STEM resource libraries in Canada with hundreds of articles, videos, activities, and backgrounders designed for classroom use. But discovery was broken. There was no way for a teacher to filter by their province, grade level, course, or topic. Finding the right resource meant scrolling through pages of content and hoping for the best.
At the same time, the organization's website was running on DNN (DotNetNuke), a legacy CMS that was hitting its limits. The platform couldn't support the kind of structured, relational content model needed for curriculum-aligned search. A full CMS migration to Drupal was required, and the curriculum filter was the centerpiece of that migration, a piece of functionality that had never existed before.
The DNN experience made the problem tangible. Teachers landed on flat, paginated lists of resources sorted by broad subject area. There was no filtering by province, grade, or course. Resources were tagged only at the highest level ("Science," "Math"), with no connection to specific curriculum expectations. A Grade 7 teacher in Manitoba and a Grade 12 teacher in Nova Scotia saw the same undifferentiated list. The platform offered no way to narrow, no way to align, and no way to confirm that a resource actually matched what a teacher was covering that week.
The challenge was solving two problems at once: migrating an entire content platform to a new CMS while simultaneously building a novel search system that could map 13 different provincial and territorial curricula into a single, unified interface. Every province uses different course names, codes, and topic structures. Ontario's "SNC2D" is BC's "Science 10", and the tool had to make that complexity invisible to teachers.
The solution was a cascading filter system that mirrors how educators actually think about their teaching: start with your province, narrow to your grade, find your course by its real name, and drill into the specific topic you're covering this week. Each selection dynamically narrows the options available at the next level, an AJAX-driven interface that queries valid combinations in real time, so teachers never hit a dead end.
Under the hood, every resource in the library is tagged to multiple provincial curricula simultaneously. A single article about photosynthesis might be relevant to Ontario Grade 9 Science, BC Science 10, and Alberta Biology 20, each with different course codes and topic names. The taxonomy maps all of these relationships, and the filter surfaces the right resources regardless of which province a teacher starts from.
The front-end result cards give teachers everything they need at a glance. Each card displays the resource type (Activity, Video, Backgrounder, or Career Profile), the applicable grade range, and curriculum alignment metadata showing which provinces and courses the resource maps to. Teachers can scan a page of results and immediately identify which resources fit their lesson plan without clicking into each one individually.
Keyword search works alongside the curriculum filters, so educators can combine free-text queries with structured curriculum navigation. The entire system runs in both English and French, with curriculum data localized for each language.
The Educational Resources search tool became the primary discovery mechanism for Canadian STEM educators, the single most-used feature on the Let's Talk Science website.
Source: letstalkscience.ca/educational-resourcesDNN stored educational content as monolithic WYSIWYG blobs with minimal metadata. Drupal needed the opposite: a structured entity-reference taxonomy where every resource is decomposed into discrete fields for resource type, grade range, province tags, curriculum references, and paired EN/FR content. The migration was not a copy, it was a complete content decomposition.
URL mapping and redirect strategy were critical. Hundreds of indexed pages needed to land on their Drupal equivalents without breaking inbound links or losing the SEO equity the organization had built over years. We mapped every legacy URL to its new path and implemented server-side redirects to preserve search rankings through the transition.
The build had a dependency problem: the front-end search interface could not be developed until the taxonomy was stable enough to query against, but the taxonomy could not be finalized until content migration revealed edge cases in how resources were categorized. We ran the taxonomy design and content migration in parallel, stabilizing the province-grade-course hierarchy first so front-end development could proceed while deeper curriculum mappings were still being refined.
The Educational Resources project required building a novel search system on top of a full CMS migration, moving years of content, URLs, and metadata from DNN to Drupal while simultaneously introducing functionality that had never existed on the platform.
The curriculum-aligned search tool transformed how Canadian educators discover and use STEM resources. Before the migration, teachers had to browse an unstructured library and hope they found something relevant. After launch, they could go from selecting their province to viewing curriculum-matched resources in seconds.
The impact of this project went beyond building a search tool. The DNN to Drupal migration was a structural shift that gave Let's Talk Science a content platform capable of supporting the complex, relational data model that curriculum alignment demands. The taxonomy system we built became the foundation for how the organization thinks about and organizes all of its educational content.
This wasn't a cosmetic redesign or a simple CMS swap. It was a structural migration that introduced entirely new functionality: a curriculum-aware search system that didn't exist before, built on a taxonomy architecture that could scale across 13 jurisdictions and two languages. The result is a tool that Canadian educators rely on to find the right STEM resource for their classroom.
For me, the Educational Resources project proved that the hardest technical problems are often the ones users never see. A teacher in Nunavut selects her territory, picks Grade 8 Science, and finds a hands-on activity aligned to her curriculum in under ten seconds. She doesn't see the taxonomy mapping, the migration pipeline, or the AJAX queries running underneath. She just finds what she needs. That's the point.