CSI Teachable Replacement App
BlogContactFAQFeaturesHow it worksIntegrationsSecurityUse cases
Join the waitlist
CSI Teachable Replacement AppJoin the waitlist
CSI Teachable Replacement App
HomeBlogContactFAQFeaturesHow it worksIntegrationsSecurityUse cases
Join the waitlist

CSI Teachable Replacement App
BlogContactFAQFeaturesHow it worksIntegrationsSecurityUse cases
TermsPrivacyData Processing

© 2026 CSI Teachable Replacement App

B2B LMS PLATFORM

Leave Teachable behind. Your courses, migrated in hours.

Connect your Teachable school, select your courses, and watch the platform scrape every lesson, video, image, and PDF — then reconstruct it faithfully inside your own branded portal. Learners sign in through SSO; no new credentials required.

Request Early Access
See how the import works
Learner dashboard showing enrolled courses and progress
84
Features shipped
SAML + OIDC
SSO protocols supported
AES-256
Credentials encrypted at rest
Multi-tenant
True org data isolation
[ HOW IT WORKS ]

From Teachable school to live portal — four steps

The import pipeline runs as an asynchronous background job. You watch real-time progress; the platform does the heavy lifting.

  1. STEP 01 — CONNECT

    Authenticate with your Teachable school

    Enter your Teachable admin credentials. The platform establishes a secure session and crawls your course catalog — titles, slugs, and publication status — presenting them for selection. Credentials are AES-256 encrypted at rest and never logged.

  2. STEP 02 — SCRAPE

    Extract the full course structure

    For each selected course, the scraper traverses every section and lesson in curriculum order — pulling HTML body text, embedded video iframes, image tags, and downloadable attachment links. The raw structure is staged before any media is touched.

  3. STEP 03 — MIGRATE ASSETS

    Download, deduplicate, and re-upload media

    Every image and PDF is downloaded from Teachable's CDN and re-uploaded to your private asset store under your organization's path prefix. Identical files are deduplicated by content hash. All Teachable CDN URLs in lesson bodies are rewritten to your new signed URLs.

  4. STEP 04 — PUBLISH

    Materialized content goes live instantly

    The staged import is written to the production course tables through the same data model used by the manual course builder. Your courses appear immediately in the learner catalog, accessible to anyone authenticated through your SSO provider.

console
0.1s$ connect teachable school: acme.teachable.com
0.4s→ Session established. Discovering course catalog…
1.2s✓ 14 courses found — credentials encrypted & stored
0.2s$ scrape course: 'Advanced Product Design' (47 lessons)
0.8s→ Sections: 6 Lessons: 47 Attachments: 12 Videos: 31
2.1s✓ Curriculum structure extracted — staging complete
0.3s$ migrate assets: 89 files queued (rate-limited)
1.1s→ Deduplicated 11 duplicate assets — uploading 78 unique
4.8s✓ All CDN URLs rewritten to signed private storage
0.1s$ materialize import-job-7f3a to production
0.6s→ Courses: 3 Sections: 18 Lessons: 47 Attachments: 12
1.0s✓ Content live — SSO learners can enroll now
[ MULTI-TENANT ARCHITECTURE ]

One deployment, genuinely isolated tenants

Every organization gets its own subdomain or path prefix, its own SSO config, its own asset storage namespace, and its own data boundary. No shared tables without org-scoped partition keys — cross-tenant data leakage is architectural impossibility, not just policy.

ORG-PROVISIONacme-corp onboarded — SSO config saved, subdomain activejust now
IMPORT-JOBadvanced-design-course scrape complete — 47 lessons staged2m ago
ASSET-MIGRATE78 unique assets re-uploaded to org/acme-corp/ prefix3m ago
SSO-SESSIONlearner j.smith@acme.com authenticated via Okta SAML5m ago
ENROLLMENT32 learners bulk-enrolled via CSV — advanced-design-course8m ago
AUDIT-LOGadmin published 'Q4 Compliance Training' — 3 sections, 12 lessons11m ago
PROGRESSlearner m.chen@beta-org.com completed course — certificate state set14m ago
ORG-PROVISIONacme-corp onboarded — SSO config saved, subdomain activejust now
IMPORT-JOBadvanced-design-course scrape complete — 47 lessons staged2m ago
ASSET-MIGRATE78 unique assets re-uploaded to org/acme-corp/ prefix3m ago
SSO-SESSIONlearner j.smith@acme.com authenticated via Okta SAML5m ago
ENROLLMENT32 learners bulk-enrolled via CSV — advanced-design-course8m ago
AUDIT-LOGadmin published 'Q4 Compliance Training' — 3 sections, 12 lessons11m ago
PROGRESSlearner m.chen@beta-org.com completed course — certificate state set14m ago
ORG-PROVISIONacme-corp onboarded — SSO config saved, subdomain activejust now
IMPORT-JOBadvanced-design-course scrape complete — 47 lessons staged2m ago
ASSET-MIGRATE78 unique assets re-uploaded to org/acme-corp/ prefix3m ago
SSO-SESSIONlearner j.smith@acme.com authenticated via Okta SAML5m ago
ENROLLMENT32 learners bulk-enrolled via CSV — advanced-design-course8m ago
AUDIT-LOGadmin published 'Q4 Compliance Training' — 3 sections, 12 lessons11m ago
PROGRESSlearner m.chen@beta-org.com completed course — certificate state set14m ago
ORG-PROVISIONacme-corp onboarded — SSO config saved, subdomain activejust now
IMPORT-JOBadvanced-design-course scrape complete — 47 lessons staged2m ago
ASSET-MIGRATE78 unique assets re-uploaded to org/acme-corp/ prefix3m ago
SSO-SESSIONlearner j.smith@acme.com authenticated via Okta SAML5m ago
ENROLLMENT32 learners bulk-enrolled via CSV — advanced-design-course8m ago
AUDIT-LOGadmin published 'Q4 Compliance Training' — 3 sections, 12 lessons11m ago
PROGRESSlearner m.chen@beta-org.com completed course — certificate state set14m ago

Ready to move your courses off Teachable?

Join the early access list. We'll walk you through a live import against your real Teachable school so you can see the result before committing to anything.

Questions? Email us at sf-core-org-support-csi-teachable-replacement-app@saas-factory.ai

[ IMPORT ENGINE ]

Real-time import monitoring — no black box

Watch the pipeline stage-by-stage: assets migrated, errors surfaced, estimated completion. Failed asset downloads don't abort the job — partial success is logged, the rest completes. A full history of past imports sits one click away.

  • Per-lesson error reporting without aborting the full run

  • Paginated import history with status and source school URL

  • Rate-limited scraping — no IP blocks, no CAPTCHAs

[ IDENTITY & ACCESS ]

Learners use the login they already have

Every organization connects its own identity provider — Okta, Azure AD, Google Workspace, or any SAML 2.0 / OIDC-compliant IdP. Sessions expire with the IdP token. No separate credentials to manage, reset, or audit.

Team members directory with SSO login status

One identity provider, one admin panel

[ LEARNER EXPERIENCE ]

A course portal that feels like yours

Branded catalog

Upload your logo and set a primary color — the learner-facing catalog, lesson player, and dashboard inherit your brand without touching code.

Progress that persists

Lesson completions, percentage progress, and course completion timestamps are stored per learner and surfaced as visual progress bars on their dashboard.

[ ADMIN TOOLS ]

Built for the people who run the program

Admins get a full suite of management tools — without needing to contact support for every change.

Enrollment management

View all learners on a course, manually add or remove individuals, or bulk-enroll via CSV upload. Filter by enrollment status to spot who hasn't started.

Progress reports & CSV export

Per-course progress tables show every learner's completion percentage, lessons finished, and enrollment date. Export as CSV for HR reporting — no third-party BI tool needed.

[ COURSE BUILDER ]

Build new content alongside what you imported

The import engine and the manual course builder write through the same data model. Imported courses are immediately editable — restructure sections, replace video URLs, upload new attachments, or write new lessons from scratch.

  • Drag-and-drop reordering Visually reorder sections and lessons with optimistic updates.

  • WYSIWYG lesson editor Rich text with headings, lists, code blocks, and inline image upload.

  • Video from any provider Paste a YouTube, Vimeo, Wistia, or Loom URL — embed generated automatically.

[ FAQ ]

Common questions

Content-hash deduplication reduces storage and import time
Import jobs dashboard showing pipeline progress
  • SAML 2.0 and OIDC both supported — configure once per org

  • Admin UI for mapping IdP attributes to learner profile fields

  • Connection-test button verifies config before saving

  • Session expiry tied directly to IdP token lifetime

  • Member directory shows last login date and enrollment count

Each tenant's SSO config is isolated — one org's IdP never affects another's.

Attachments with access control

PDFs and downloads are served through short-lived signed URLs generated per request — not public permanent links. Admins see which resources learners actually download.

Resume where you left off — on any device

The lesson player is mobile-optimized with a collapsible curriculum sidebar. Previous and next lesson controls traverse the full curriculum in order; clicking 'Next' marks the current lesson complete automatically.

  • YouTube, Vimeo, Wistia, and Loom video embeds

  • Rich text lesson body rendered from structured content

  • Completion badge on the dashboard when every lesson is done

Learner course catalog showing enrolled courses and progress bars

Audit log

Every significant admin action — SSO config changes, course publishing, enrollment edits, import starts — is recorded with a timestamp. One tab for compliance and troubleshooting.

Org-scoped settings

Branding, SSO configuration, member directory, and a controlled deletion workflow — all under a single admin settings area, fully isolated from other tenants.

Admin activity log showing recent platform events

Pre-publish checklist The platform validates at least one section and lesson exist before going live.

  • Attachment lifecycle Upload, manage, and delete lesson attachments — access tracked per download.

  • Thumbnail upload JPEG, PNG, and WebP supported with server-side size validation.

  • Less painful than you might expect. The import pipeline authenticates with your Teachable school, crawls your full course catalog, and lets you select which courses to bring over before a single byte moves. It extracts section and lesson hierarchy, scrapes full lesson content (video embeds, rich text, images, attachments), re-hosts every asset under your organization's private storage, and replaces all Teachable CDN URLs with the new ones automatically. A real-time progress monitor shows you exactly which pipeline stage is running, how many assets have migrated, and flags any partial failures — without aborting the whole job if one file hits an error. Your credentials are encrypted with AES-256 at rest and never appear in logs or API responses.
    Each organization connects its own identity provider independently — configurations for one tenant never touch another. The platform supports both OIDC and SAML 2.0, covering Okta, Azure AD, ADFS, and any standards-compliant IdP. Admins configure their provider through a dedicated UI that accepts a discovery URL or SAML metadata, maps attributes, and runs a connection test before saving. Sessions expire in alignment with your IdP's token lifetime; when a token goes stale, learners are forced to re-authenticate rather than coasting on an indefinite session.
    No on both counts. Every learner-facing page performs an org-membership check and redirects anyone outside the organization to the SSO login flow before a course title is rendered. The multi-tenant data model partitions every table by organization ID, so queries are structurally scoped to the authenticated tenant — there is no query path that reaches across organizations. Asset downloads are served via short-lived signed URLs generated server-side on each page render, so there are no permanent public links to share or guess. Role-based access control keeps the course builder, enrollment management, and reporting pages off-limits to non-admin members.
    Admins get three layers of visibility. First, an organization-wide dashboard widget showing total enrollments, completion rates, and active learner counts across all courses — a quick health check without opening individual reports. Second, a per-course progress table listing every enrolled learner with their completion percentage, lessons completed count, and enrollment date, so you can spot who is stuck or inactive. Third, a full CSV export of that learner progress data for offline analysis or HR reporting. On top of that, an immutable audit log records significant admin actions — SSO config changes, enrollment edits, course publishing, import job starts — giving you an accountability trail for compliance reviews.
    Video embeds from YouTube, Vimeo, Wistia, and Loom are explicitly allowed via Content Security Policy headers on lesson pages; iframe sources outside those providers are blocked. For downloadable files — PDFs, images, any lesson attachment — every download is served through a server-side signed URL with a short expiration window, so there are no permanent public asset links. The platform also records a timestamped event each time a learner downloads an attachment, giving admins visibility into which resources are actually being accessed rather than just uploaded.
    Organization admins can upload a logo and set a primary brand color that applies across all learner-facing pages: the course catalog, lesson player, and dashboard. Routing supports either a subdomain (yourcompany.platform.com) or a path prefix without requiring a separate deployment per tenant. Course URLs are built from auto-generated slugs derived from course titles, with uniqueness enforced per organization and support for custom slug overrides. Deep white-label theming beyond logo and brand color is not currently listed as a shipped feature — contact us for details on roadmap plans.