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).
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)
| Owner | Action | Status |
|---|---|---|
| Vara | Send Cambodia QR-system code to Iman | Done |
| Iman | Review QR system → update CMS docs | Done |
| Iman | Fix applicant login | Done (CORS) |
| Faid | Analyze CAP analysis / progress report | Open |
| Faid | Add campus selector | Done — in prod SPA; hosted API still hides field |
| Dexter / MIT | Registry consult — exchange students | Open |
| Iman | Lesotho CMS vs Applicant analysis (following morning) | Done |
| Faid | Application-flow changes + push GitHub | Done — 9e007f2 on main |
| Iman | Manual deploy after Faid push | Done — 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
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 CMS | Raisd Demo progress row | Comment |
|---|---|---|
| Bursary / payment verification | Payment Proof — Bursary | Aligned (8 Oct) |
| Document / QA desks | Document Check — Quality Assurance | Eligibility Letter is Demo-generated |
| Faculty / Academic recommendation | (no applicant row) | Staff / CMS only |
| Registrar / Registry | Prepare and Release Offer Letter | Aligned for offer release |
| Applicant | Confirm and Proceed with Enrolment | Demo gate; no direct CMS twin |
6. Critical gaps for Lesotho M4 Live
- LGCSE / Sesotho extract — model + UI + staff Document Review parity.
- LSL application fee verification — campus finance profile + durable proof store.
- Staff Academic → QA → Registrar — Staff portal / Portal API; not Applicant-only.
- Rank/score — confirm with Admissions; Schema if required.
- Official offer letter — replace DEMO PDF with campus print/sign path.
- CMS write-back (CAP-53) — Applicant never writes CMS directly.
- Hosted campus + letter methods — Portal API must catch up to local mock (standup “working prototype”).
- Eligibility Letter product fit — validate with Registry vs CMS recommend chain.
- Per-type document matrices + Registry exchange-student rules.
- 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
A — Hosted Demo parity
- Persist
campusId/previousStudentIdover HTTP; show campus on hosted UI. - Portal API: Eligibility confirm, QA/Registry letter release, guarded accept.
- Durable issued-letter resources (or signed URLs) for Student Documents.
- Keep hosted limitation notice until the above land.
B — Lesotho / M4 applicant content
- LGCSE extract fields (Sesotho, certificate #, institution, exam board).
- LSL/M fee copy and verification rules.
- Pin Lesotho programmes / intakes / fees (stop Design clones as “Lesotho”).
- Document checklists by New / Alumni / Transfer.
- 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
- Confirm with Registry whether Eligibility Letter + applicant confirm are Lesotho policy or Demo scaffolding.
- Portal API: hosted campus + letter workflow so Demo matches local mock.
- Specify LGCSE extract fields in Schema + CAP-03.
- Applicant type document matrices + Registry exchange answer.
- Staff portal MVP: payment/document verify, Academic/QA/Registrar recommend, release offer.
- Keep updating FE gap matrix and #gap-x — do not fork a third spreadsheet.
532d6f0 redeploy).