CLIP LearnDocs 1.0
For admins

Knowledge base & audit log

The two admin transparency tools: the Knowledge base showing every source MOEgent may answer from, and the immutable Audit log recording every privileged action.

CLIP Learn gives programme administrators two "show your working" tools that sit side by side in the admin bar: the Knowledge base, which makes visible every source your AI trainer MOEgent is allowed to answer from, and the Audit log, which records every privileged change anyone makes. Both exist so that a regulated certificate issuer can prove, at any time, exactly what the trainer knows and exactly who changed what.

This page documents both. You reach them from the admin navigation: Knowledge and Audit.

Knowledge base

The Knowledge base (/admin/knowledge, labelled Knowledge in the nav) is the visible face of CLIP's no-hallucination guarantee. MOEgent, the in-app trainer, will answer legal and course-content questions only from the sources listed here. Anything outside them is declined and escalated to your team rather than guessed at. This page lets you see precisely what that pool of sources contains.

Who can open it

RoleAccess
ADMINFull access — sees every knowledge source across the whole tenant.
CORPORATE (external sponsor)Access, but scoped — sees only the courses their own organisation is entitled to or enrolled in, never another client's materials.
FACULTY, CANDIDATENo access to this page.

Corporate scoping fails closed

For a corporate sponsor, the page first looks at the organisation's standing course entitlements; if there are none yet, it falls back to the courses the org's own members are enrolled in. If neither yields anything, the sponsor sees nothing — the page never quietly falls through to an all-tenant view.

What counts as a "source"

Two distinct things ground MOEgent, and the banner at the top of the page counts both:

Source typeWhat it isWhere it comes from
Knowledge sources (chunks)The plain-text body of each published lesson, stored as a searchable knowledge chunk with a human-readable citation.Created automatically whenever a lesson is saved in the course editor.
Published questionsPractice questions whose review status is PUBLISHED. Only published questions ground the trainer and are served to learners.Authored and reviewed in the question bank.

The top banner reads, for example: "MOEgent answers only from these N knowledge sources plus M published questions — anything outside is declined and sent to your team." The counts update to match your current search.

How lesson content becomes a source

You do not add knowledge sources by hand on this page. When a trainer saves a lesson in the course editor, CLIP strips the formatting, converts the lesson to clean plain text, and writes it as a knowledge chunk tagged with its course and lesson. Editing the lesson re-syncs the chunk; deleting the lesson removes it. This keeps the trainer's knowledge and the published materials perfectly in step.

Reading the page

Search. The single search box at the top (field q) filters sources by matching your text against both the source title and its content, case-insensitively. Submit the form to filter; clear it to see everything again.
Browse by course. Sources are grouped into a card per course. Lesson-derived sources that aren't tied to a course appear under an Unassigned group.
Read the group header. Each card header shows the course title, the number of sources in it, and its live question count (for example "12 live Q, 3 draft").
Expand the sources. Click Show N sources to open the list. Each entry shows the source title, its citation reference, and the first 220 characters of its content as a preview.

Fields shown for each source

FieldWhat it meansNotes
TitleThe lesson (or source) title.Same title MOEgent cites.
Source referenceThe human-readable citation, formatted Course › Module › Lesson.Shown in grey under the title; this is the trail MOEgent uses when it points a learner back to the material.
Content previewThe first 220 characters of the source text, truncated.Plain text only — never HTML — so full-text search stays clean.

Admin-only actions on a course card

When you are an ADMIN and a course card corresponds to a real course, two shortcut links appear on the right of the header:

LinkAppears whenWhere it goes
Edit materialsAlways, for a real course.The course editor, where authoring or editing lessons updates the grounding instantly.
Review questionsOnly when that course has one or more DRAFT questions.The question-review queue, so you can publish or reject drafts.

Corporate sponsors never see these links — the page is read-only for them.

Question review states

The live/draft counts on each card come from the question bank. A question's review status governs whether it grounds the trainer at all:

StatusServed to learners & used for grounding?
PUBLISHEDYes — this is the only status counted as a live source.
DRAFTNo — awaiting review; shown to admins as a draft count only.
ARCHIVEDNo — retired.

Empty states

  • With no search active and no sources at all: "No knowledge sources yet."
  • With a search that matches nothing: "No sources match your search."

How MOEgent actually uses these sources

Understanding the retrieval behaviour helps you reason about answers learners receive:

  • For each learner question, MOEgent runs a full-text search over the knowledge sources, scoped to the courses that learner is entitled to — a learner enrolled in one course cannot be grounded on another course's content.
  • Retrieved sources are handed to the trainer as numbered SOURCES. The trainer cites them inline (for example [S1]) after each substantive claim.
  • If the sources do not cover a legal or materials question, the trainer does not guess. It tells the learner warmly that the question is outside today's materials and escalates it to your team (an internal escalation marker, <<ESCALATE>>, is appended). Questions about the learner's own account or progress are answered directly and are not escalated.

Audit log

The Audit log (/admin/audit, labelled Audit in the nav) is an append-only record of every privileged action taken in CLIP. As a KHDA-regulated certificate issuer, CLIP cannot allow roles, suspensions, answers or announcements to be changed silently — so each such action is written here with who did it, what they did, and the before/after where relevant.

Immutable by design

Entries are only ever appended — there is no edit or delete on the audit log. Audit writing is also wrapped so that a logging failure can never break or roll back the underlying action; the action still happens, and the log records what it can.

Who can open it

ADMIN only. Corporate sponsors and faculty cannot view the audit log. The Audit nav link is hidden for every role except admin.

Reading the table

The log shows the most recent 200 entries, newest first. Each row has four columns:

ColumnWhat it showsNotes
WhenTimestamp, formatted YYYY-MM-DD HH:MM.Shown in UTC (not localised), to the minute.
WhoThe actor — the email of the person who performed the action.If no email was captured, the first 8 characters of their user ID are shown instead.
ActionA friendly label for the action, sometimes with extra detail (for example a role change shows → ADMIN).Not every action has a friendly label — see below.
TargetWho or what the action was aimed at.Resolved to the target's name for user actions; otherwise the announcement title in quotes, or a short ID, or a dash.

Target resolution order: if the action targeted a user, the row shows that user's name (looked up live). Otherwise, if the action carried a title in its metadata (for example an announcement), it shows that title in quotation marks. Failing that, it shows the first 8 characters of the target ID, and if there is no target at all, a dash ().

Empty state

If nothing privileged has happened yet, the table shows: "No privileged actions recorded yet."

What gets recorded

Every entry stores the actor, an action code, an optional target type and ID, an optional free-form metadata object, and the timestamp. The following actions are logged:

Action codeDisplayed labelWhat triggers itExtra detail recorded
ROLE_CHANGEChanged roleAn admin changes a user's role.The new role (shown as → ROLE).
SUSPEND_USERSuspended userAn admin suspends (deactivates) a user.Target user.
RESTORE_USERRestored userAn admin restores (reactivates) a suspended user.Target user.
ANSWER_TICKETAnswered a learner questionA team member answers an escalated learner question.Target ticket.
ANNOUNCEPosted an announcementAn admin posts an announcement.Announcement title.
EDIT_USEREDIT_USER (raw code)An admin edits a user's name, email or WhatsApp phone.Target user.
RESET_PASSWORDRESET_PASSWORD (raw code)An admin resets a user's password to a fresh temporary one.Target user.
ASSIGN_COHORTASSIGN_COHORT (raw code)An admin bulk-assigns learners to a cohort.Cohort ID and the number of learners assigned.
COPILOT_ACTIONCOPILOT_ACTION (raw code)The admin copilot (MOEgent's build assistant) performs any action that changes data.The tool used, its inputs, and its result.

Why some rows show a code and others a phrase

Only a handful of action types have a human-friendly label (Changed role, Suspended user, Restored user, Answered a learner question, Posted an announcement). Every other action — EDIT_USER, RESET_PASSWORD, ASSIGN_COHORT, COPILOT_ACTION — is displayed as its raw code. This is expected, not a bug; the action is still fully recorded.

Copilot actions in detail

The admin copilot can build and change your programme structure on your behalf. Every one of its mutating operations is logged as a COPILOT_ACTION, recording not just which tool ran but exactly what it changed — the tool name, its inputs (bulky lesson content is stripped out), and the result, including the ID of anything it created. The mutating tools that produce an audit entry are:

create_client, grant_org_access, create_course, create_program, add_courses_to_program, assign_program, add_module, add_lesson, edit_lesson, delete_lesson, set_program_published, create_trainee, and schedule_session.

Read-only copilot queries do not create audit entries — only actions that change data do.

On this page