Lesotho CMS vs Raisd Applicant portal

Standup action (7 Oct 2026): compare the Lesotho CMS application / admissions flow with the current Raisd Applicant portal Demo. Published 8 October 2026; refreshed after Faid’s campus + two-stage letters merge and again after production SPA redeploy (532d6f0). Includes Read.ai expectations, gaps, and Applicant backlog. Demo ≠ Live. Admissions before registration (M4).

Standup closed Prod SPA 532d6f0 Login CORS done Hosted letters gated LGCSE gap
Canonical Markdown. lesotho-cms-vs-applicant-portal.md · DB Flow 1: lesotho-db-gap.md · Applicant Demo: applicant-portal.md · FE gap matrix: online-registration-gap.html.
Evidence. Newer Lesotho CMS = screenshots only (no shared schema). Older CMS = campus2_lesotho structure dump (outside git). Raisd Applicant Demo at raisd-applicant-portal.vercel.app is on main 532d6f0 (8 Oct evening prod redeploy — campus + letters from Faid 9e007f2 + review clarifications). Hosted HTTP: login works; campus field still hidden and two-stage letter accept stays local-mock-only (in-UI notice). Read.ai standup report 7 Oct 2026 (11:00–11:57 MYT).

1. Read.ai standup — 7 Oct 2026

CMS 2026 Daily Stand-up (Google Meet, 5 participants, report score 80). Summary: applicant portal readiness, Lesotho pilot application flow, and requirements for different applicant types. DSC-shown portals are front-end designs; server deployment, data migration, and API connections remain outstanding. At meeting time login was unreliable and the registration menu was still missing.

Action items (status 8 Oct evening)

OwnerActionStatus
VaraSend Cambodia QR-system code to ImanDone
ImanReview QR system → update CMS docsDone
ImanFix applicant loginDone (CORS)
FaidAnalyze CAP analysis / progress reportOpen
FaidAdd campus selectorDone — in prod SPA; hosted API still hides field
Dexter / MITRegistry consult — exchange studentsOpen
ImanLesotho CMS vs Applicant analysis (following morning)Done
FaidApplication-flow changes + push GitHubDone — 9e007f2 on main
ImanManual deploy after Faid pushDone — prod 532d6f0 (8 Oct evening; Actions billing blocked auto-deploy)

Discussion chapters that set Applicant expectations

  • Alumni / campus accounts — Previous Student ID; campus-aware apply
  • Application types & documents — New / Alumni / Transfer (not one generic path)
  • Fields, documents, fees, payment — Lesotho → LGCSE + LSL
  • Eligibility & Offer-letter workflow — two-stage path (now in local mock)
  • Student login after offer — accept → Student transition
  • Exchange students — Registry (out of Applicant alone)

2. Expectations vs Applicant now

Expectation (7 Oct)Current Applicant (post-Faid)Gap
Reliable hosted login Hosted login works Met (Demo)
Campus selector Prod SPA: campus selector in local-mock mode. Hosted HTTP: field still hidden Hosted API
New / Alumni / Transfer Enum + Alumni Previous Student ID (in prod SPA mock path) Partial
Eligibility → Offer letters Prod SPA local-mock: four-row progress + DEMO PDFs. Hosted: in-UI “local mock only” notice Hosted API
Student transition after accept Local logout → Sign in → Student handoff v2 Partial
Lesotho docs / fee rules Generic quals + Demo fee copy LGCSE · LSL
Registration menu (enrolled) Not in Applicant (Student Process B) Out

3. Three flows

[A]Newer Lesotho CMS (screenshots)
[B]Old campus2_lesotho app_*
[C]Raisd Applicant Demo

Overview — three admissions paths

flowchart TB
  subgraph A["[A] Newer Lesotho CMS — staff-centric"]
    direction LR
    A1[Applicant record] --> A2[Document Review
LGCSE extract] A2 --> A3[Admissions Review
Academic → QA → Registrar] A3 --> A4[Payment VERIFIED
Loti M] A4 --> A5[Accepted / enrolled] end subgraph B["[B] Older campus2_lesotho — online + staff"] direction LR B1[Online apply
app_* SPs] --> B2[LGCSE + fee proof] B2 --> B3[Faculty → AQA → Registry] B3 --> B4[Offer letter] B4 --> B5[Student create] end subgraph C["[C] Raisd Applicant Demo — after Faid 8 Oct"] direction LR C1[Six-step editor] --> C2[Submit] C2 --> C3[Bursary → QA → Confirm → Offer] C3 --> C4[Accept enrolment] C4 --> C5[Handoff v2 → Student] end

[A] Newer Lesotho CMS — staff-centric

flowchart TD
  REC["Applicant record
programme · score · rank · intake"] DOC["Document Review
LGCSE scan + extract · Sesotho subjects"] subgraph REVIEW["Admissions Review"] direction LR ACAD[Academic recommend] --> QA[QA recommend] --> REG[Registrar recommend] end PAY["Admissions payment VERIFIED
Loti M"] DONE["Accepted / enrolled
offer artefacts campus-local"] REC --> DOC --> REVIEW --> PAY --> DONE

Staff desks: Admissions Review, Document Review, Applicants, Payments, Intake/Certificate settings.

[B] Older Lesotho CMS — online + staff statuses

flowchart TD
  UI[Applicant UI]
  ONLINE["app_applicationform_online
+ education / guardian SPs"] DOCS["LGCSE docs
app_docfile · Subject1–6"] FEE["Fee proof
b_paymentverification · LSL/M"] subgraph STAFF["Staff statuses"] direction LR FAC[FacultyStatus] --> AQA[AQA*] --> REGST[RegistryStatus] end OFFER["Offer
r_stdofferletter*"] STU[Student create] LATER[Later enrolment / NMDS] UI --> ONLINE ONLINE --> DOCS ONLINE --> FEE DOCS --> STAFF FEE --> STAFF STAFF --> OFFER --> STU --> LATER

SPs: InsertOnlineApp*, UpdateOnlineApp*, FetchOnline*. Rank/score not in old dump.

[C] Raisd Applicant Demo — apply steps

flowchart LR
  LOGIN[Sign-in
Demo accounts] --> CONSENT[Consent] CONSENT --> STUDY["Study
Campus* · type · 3 prefs"] STUDY --> PERS[Personal] PERS --> ACAD[Academic] ACAD --> DOCS[Documents] DOCS --> FEE[Fee] FEE --> SUB[Submit]

* Campus, Alumni Previous Student ID, and letter workflow run in the local mock path of the prod SPA. Hosted HTTP hides campus and shows the two-stage letter notice.

[C] Raisd Applicant Demo — Application Progress → Student

flowchart TD
  SUB[Submitted application]
  subgraph PROG["Application Progress — four rows"]
    direction TB
    P1["1 · Payment Proof
Bursary verify-payment"] P2["2 · Document Check
QA → DEMO Eligibility Letter"] P3["3 · Confirm Eligibility
Applicant confirmApplicationEligibility"] P4["4 · Offer Letter
Registry release-offer"] P1 --> P2 --> P3 --> P4 end ACCEPT[Accept Enrolment] LOGOUT[Auto logout · Sign in] HAND["Handoff v2
campus + letters"] STU["Student Profile Documents
Offer then Eligibility — local mock"] SUB --> PROG P4 --> ACCEPT --> LOGOUT --> HAND --> STU

Live Demo URL: raisd-applicant-portal.vercel.app — production 532d6f0 (Faid 9e007f2 campus/letters + review clarifications on main; redeployed 8 Oct evening).

4. Step matrix

# Lesotho CMS [A]/[B] Raisd Applicant [C] Verdict M4 note
1 Online / desk application Six-step editor (Consent…Fee) Mismatch Do not force CY 4-step order for Lesotho
2 Intake + Opt1/Opt2 Campus + intake + 3 prefs + types (local) Partial Campus shipped locally; pin real Lesotho catalogue; expose on hosted
3 LGCSE extract (Sesotho, cert #) Generic qualifications + evidence Gap Highest Lesotho credential gap
4 Flat Subject1–6 × schools Repeated quals + optional English Partial Map extract outputs into Raisd rows
5 Fee + proof → VERIFIED (M) Fee step + Bursary Admin verify Partial Currency LSL/M + durable file store
6 Academic → QA → Registrar Bursary → QA → Applicant confirm → Registry Mismatch Confirm Eligibility Letter with Registry
7 Rank / overall score (newer UI) Not modelled Gap Schema + staff if Admissions requires
8 Offer letter artefacts DEMO Offer Letter PDF Partial Official print/sign/QR is Live
9 Accepted / student create Accept → handoff v2 → Student mock Partial No Live CMS provisioning yet
10 Staff Document Review queues Dev Admin Actions only Gap Staff portal Not started
11 OnlineAppEmailNotification None Gap Notifications out of Demo
12 New / Alumni / Transfer paths Applicant type enum + Alumni Previous Student ID Partial Per-type docs + exchange (Registry) still open
13 NMDS after accept Out of applicant journey Out See DB gap Flow 4

5. Role mapping

Lesotho CMS desks → Raisd Demo progress

flowchart LR
  subgraph CMS["Lesotho CMS"]
    direction TB
    CB[Bursary / payment]
    CQ[Document / QA desks]
    CF[Faculty / Academic]
    CR[Registrar / Registry]
    CA[Applicant]
  end
  subgraph DEMO["Raisd Demo progress rows"]
    direction TB
    DB["Payment Proof — Bursary"]
    DQ["Document Check — QA
+ Eligibility Letter"] DF["No applicant row
Staff / CMS only"] DR["Prepare and Release Offer"] DA["Confirm and Proceed
Demo gate"] end CB -->|aligned| DB CQ -->|aligned| DQ CF -.->|gap| DF CR -->|aligned| DR CA -->|Demo-only| DA
Lesotho CMSRaisd Demo progress rowComment
Bursary / payment verificationPayment Proof — BursaryAligned (8 Oct)
Document / QA desksDocument Check — Quality AssuranceEligibility Letter is Demo-generated
Faculty / Academic recommendation(no applicant row)Staff / CMS only
Registrar / RegistryPrepare and Release Offer LetterAligned for offer release
ApplicantConfirm and Proceed with EnrolmentDemo gate; no direct CMS twin

6. Critical gaps for Lesotho M4 Live

  1. LGCSE / Sesotho extract — model + UI + staff Document Review parity.
  2. LSL application fee verification — campus finance profile + durable proof store.
  3. Staff Academic → QA → Registrar — Staff portal / Portal API; not Applicant-only.
  4. Rank/score — confirm with Admissions; Schema if required.
  5. Official offer letter — replace DEMO PDF with campus print/sign path.
  6. CMS write-back (CAP-53) — Applicant never writes CMS directly.
  7. Hosted campus + letter methods — Portal API must catch up to local mock (standup “working prototype”).
  8. Eligibility Letter product fit — validate with Registry vs CMS recommend chain.
  9. Per-type document matrices + Registry exchange-student rules.
  10. Real Lesotho catalogue — programmes / fees / intakes (not Design clones).

What Raisd Demo already covers well (post-Faid)

  • Validated multi-step apply, drafts, messages, immutable snapshots
  • Campus selector + New/Alumni/Transfer (+ Alumni Previous Student ID) — in prod SPA mock path
  • Sequential payment → document verification
  • Two-stage letter mock + four-row Application Progress + Student letter docs (mock path)
  • Hosted login + explicit notice that letter acceptance is local-mock-only
  • Production SPA on Vercel at 532d6f0 (8 Oct evening)
  • Clear DEMO labelling on generated PDFs

7. What to add / complete on Applicant portal

AHosted Demo parity — campus + letters on Portal API
BLesotho content — LGCSE, LSL, real catalogue, type docs
COutside Applicant — Staff desks, exchange, QR

A — Hosted Demo parity

  1. Persist campusId / previousStudentId over HTTP; show campus on hosted UI.
  2. Portal API: Eligibility confirm, QA/Registry letter release, guarded accept.
  3. Durable issued-letter resources (or signed URLs) for Student Documents.
  4. Keep hosted limitation notice until the above land.

B — Lesotho / M4 applicant content

  1. LGCSE extract fields (Sesotho, certificate #, institution, exam board).
  2. LSL/M fee copy and verification rules.
  3. Pin Lesotho programmes / intakes / fees (stop Design clones as “Lesotho”).
  4. Document checklists by New / Alumni / Transfer.
  5. Confirm Eligibility Letter product fit with Registry.

C — Outside Applicant (still M4)

  • Staff portal: Bursary / Document Review / Academic→QA→Registrar
  • Exchange students — Dexter/MIT ↔ Registry
  • Cambodia QR docs — certificate-qr.html (CMS + QR System + Verification inventoried)
  • Enrolled registration menu / Add-Drop — Student, not Applicant

8. Recommended next work

  1. Confirm with Registry whether Eligibility Letter + applicant confirm are Lesotho policy or Demo scaffolding.
  2. Portal API: hosted campus + letter workflow so Demo matches local mock.
  3. Specify LGCSE extract fields in Schema + CAP-03.
  4. Applicant type document matrices + Registry exchange answer.
  5. Staff portal MVP: payment/document verify, Academic/QA/Registrar recommend, release offer.
  6. Keep updating FE gap matrix and #gap-x — do not fork a third spreadsheet.
Standup closure. Action “compare Lesotho CMS application flow with current applicant portal” — done (this page + Markdown, 8 Oct 2026; refreshed after Faid campus/letters merge and prod SPA 532d6f0 redeploy).