← All work

Multi-location RV dealership group

Dealership staff get training assigned by title and location inside their own portal

An RV dealership group wanted staff training inside the portal we had built for it, not on a rented platform. We fixed the people data first, so assignments follow the portal's own titles and locations, and kept the tab hidden until the client verified it on staging.

Automotive & DealershipsStaff training moduleModernized a live product

The education dashboard shows each person their course activity, training statistics and courses in progress.

The challenge

Training ran on a third-party platform outside the portal, and job titles that existed there but not in the portal broke course assignments and completion percentages.

What we did

We built an education module into the portal on its own people records, scripted the course library across, documented every title gap and kept the tab hidden until the client verified it on staging.

The outcome

The module replaced the third-party platform for course delivery, assignment and reporting, and went to production the day the client gave its green light, ahead of its own go-live date.

Replaced
A rented third-party training platform
Assigned by
User, department, title and location
Migrated
Courses, topics, steps and tests, audited on staging
Reports
Company and location completion, scoped by permission

The starting point

The group sells and services RVs across many locations, and its staff already used an internal portal we had built for the directory, announcements and events. Training ran on a separate third-party platform.

What had to change

The group wanted training inside its own portal, assigned by department, title and location, with reports it could rely on. Job titles in the old platform did not all exist in the portal, and those gaps broke assignments and completion percentages.

What could not break

  • Staff keep using the live portal every day while training is built and migrated
  • The portal stays the source of truth for users, titles, departments and locations
  • The whole course library comes across: courses, topics, steps and tests
  • Access follows roles and permissions, read-only users included
  • Shared course links open only for signed-in staff, never the public

The calls we made

We treated the move as a data problem before a feature: assignments and reports only work when every user, title and location lines up.

  1. 01

    The portal owns people data

    Users, titles, departments and locations come from the portal, so course assignments follow the same records staff see everywhere else in it.

  2. 02

    Reconcile titles before launch

    Titles that existed in the old platform but not in the portal broke assignments and completion percentages, so we documented every gap for the client to resolve before staff saw the tab.

  3. 03

    Script the migration, then audit it

    Courses, topics, tests and steps were scraped from the old platform into staging by script and audited by our team, with a further scrape scheduled before release.

  4. 04

    Report by company and location

    The admin dashboard shows overall company completion and completion per location, and a Statistics tab lets anyone sort by location and department.

    Ruled out

    A progress chart for every course, unreadable for a library that could reach about 300 courses.

  5. 05

    Hidden until the client verifies

    The education tab stayed hidden on live while the client checked assignments and progress on staging, and each issue it found was fixed there and confirmed by its IT team.

How the system fits together

Google sign incourses andtestsaudited importusers andtitlesbuild and assignassignmentscompletionlocation scopeprogressreportsDealership staffTake assigned courses andtestsTraining adminsBuild courses, assignthem, read reportsOld training platformThird-party, held thecourse libraryStaff portalUsers, titles, departmentsand locationsMigration scriptsScraped into staging,audited by our teamEducation moduleCourses, topics, steps andtestsReport permissionAdmin grants one or morelocationsCourses andcertificatesEach user's progress anddue datesCourse and userreportsCompany and locationcompletion, CSV and PDF
PeopleOutside serviceClient's existing systemBuilt by DaticsData storeTraining runs inside the client's own portal on the portal's people records, and the old platform served only as the source of the scripted migration.

What we built

Course builder

Courses made of topics, steps and tests, with forced step order, due dates, expiry, passing scores, random question order, certificates and publish checks, and PowerPoint import that turns each slide into a step.

Admins build a course from topics and tests, with a draft quiz open under its course.

Assignment and enrollment

Searchable assignment by user, department, title and location, a course library staff can enroll from, course requests with a reason such as promotion or department transfer, and course links that open only for signed-in staff.

The course library lists every course with its tag, assigned members and status on desktop and phone.

Dashboards and reports

Admin and user dashboards with company and location completion, a company-wide Statistics tab, course and user reports with last login and last course activity, CSV and PDF export, and a report permission limited to the locations an admin grants.

Subject reports show users assigned, average completion, roles and teams for each course, with CSV download.
04

Migration scripts

Scripts that scraped courses, topics, tests and steps from the old platform into staging, where our team audited the result before anything reached staff.

How it works

Build

An admin builds a course from topics, steps and tests, or imports a PowerPoint deck with each slide as a step.

Assign

The admin assigns it by user, department, title or location, with a due date and an expiry.

Learn

Staff see their courses and progress on their own dashboard and work through the steps, in a fixed order where the admin sets one.

Certify

A completed course issues a certificate, and staff can request a course they need, with a reason.

Report

Admins see company and location completion, users granted locations read course and user reports, and anyone can check the Statistics tab; reports export as CSV or PDF.

A closer look

What changed

The education module replaced the third-party platform for course delivery, assignment and reporting. It went to production the day the client gave its green light, ahead of the client's own go-live date for the education tab, and training now runs on the same people records as the rest of the portal.

Ahead of the client's own go-live date
Went live
The rented training platform
Replaced

Under the hood

Datics role
Modernized a live product
Identity and people data
Staff sign in with company Google accounts, and assignments read users, titles, departments and locations from the portal's own records.
Permissions
Role and permission control per module, read-only users kept out until ready, and a separate report permission scoped to the locations an admin grants.
Migration
Courses, topics, tests and steps scraped from the old platform into staging by script, audited by our team, with a further scrape scheduled before release.
Deployment
React and Node.js with Sequelize and PostgreSQL on AWS, with separate dev, staging and production environments for an internal portal kept out of search engines.

Data and retrieval

PostgreSQL

Cloud and infrastructure

AWS

Apps and APIs

ReactNode.js

Also in the stack

SequelizeGoogle OAuth

How it shipped

  1. Requirements and design

    Training went into the portal's requirements document, and we designed the course list, course builder, tests, reports and dashboards after studying the old platform's dashboards.

  2. Module build

    Courses, topics, steps and tests came first, then assignment by department, progress and reports, built sprint by sprint on the portal's people data.

  3. Client review

    The client's IT director reviewed the module with us and set the reporting shape: company and location completion, a Statistics tab, Not Started and Not Published categories and secured course links.

  4. Migration to staging

    We moved the course library into staging, documented the title gaps and deployed dashboards, assignment, progress, reports, library and enrollment for the client to verify, with the tab hidden on live.

  5. Pre-production and release

    We fixed what the client's testing found, added its requests such as PowerPoint import and assignment modals, audited the migrated data and released to production on the client's green light.

Staging before production

Every release went to a staging site first, with issues fixed there and confirmed by the client's IT team before production.

Client feedback in writing

The client's IT director sent meeting notes after each review, and we answered each point in writing before building it.

Written test cases

We wrote QA test cases for course search, settings, topics, steps and tests, and the client's pre-production requests went into the release rather than a later phase.

What this unlocked

Later sprints added course requests with reasons, an achievements and certificates tab and email notifications. With clean people data and location-scoped permissions in place, the portal holds what any later AI training feature would need first.

Have a product with the same kind of constraints?

Tell us what already exists and what you want it to do. We will tell you what it takes.

Book a 30-minute Product Review