UER

UniERP Research

Six rungs · two engines · one product
Architecture

Three abstractions

A product that spans a trade academy to a PhD university is not one product with six feature sets. It is one data model with two strategy engines and one universally-shaped object. Get these three right or you are maintaining four codebases forever.

1 · RegulatoryTrack
  • authority → stages[] → per-stage status
  • evidence pack, versioned documents, expiry date
  • validated DCF export per regulator
  • accreditation readiness scored live
2 · GradingStrategy
  • percentage marks · points
  • GPA · GPA+capped · credit pass/fail
  • thesis-weighted
  • competency / NVQF · clinical OSCE
3 · Course
  • trade · credit · nvqf_level
  • delivery_mode: theory, lab, clinical, OSCE, studio, newsroom, workshop, on-job
  • external_assessor
  • programme_version · accreditation_track

1 · RegulatoryTrack — the abstraction the sector forced

The hardest thing about Pakistani education data is not that there are many regulators. It is that every regulator asks for the same three things in the same order. Once you see that, they stop being separate features and become rows in a configuration table.

RungStage 1Stage 2Stage 3
TVETNAVTTC registrationQAB affiliation (13 bodies, per province)NAC-TVS accreditation
UniversityHEC recognition / DAIProgramme approval (PEC, NBEAC, PMC)Accreditation cycle
College / SchoolBISE / FBISE registrationBoard affiliationHEC DAI registration
Affiliated collegeCollege registrationAffiliation agreement with parent universityHEC affiliation renewal
The consequence

Adding dental costs one regulator row (PMC/PMDC) plus flipping BDS courses to delivery_mode = clinical. Adding engineering costs one row (PEC) plus delivery_mode = lab. Adding media costs nothing new — HEC is already in the table and you add delivery_mode = newsroom. A discipline is configuration, not a module.

2 · GradingStrategy — the make-or-break decision

A school grades on percentage marks with teacher-set weights and no credit. A university grades on credit-weighted GPA with a cap, prerequisite chains and a progression policy. A TVET institute grades competency-based against NVQF level descriptors. A medical college runs OSCEs marked by external examiners. If these are four code paths you will never ship six rungs. If they are one strategy interface, going academy to university becomes configuration.

GradingStrategy
├── PercentageMarks    school        weighted component sum, teacher-set weights
├── PointsBased        school/college
├── GPA                college       credit-weighted, configurable scale
├── GPA+Capped         university    min(actual, cap) — e.g. 4.0 cap on a 4.3 scale
├── CreditOnly         university    pass/fail + credit accumulation
├── ThesisWeighted     university    thesis + coursework + viva
├── Competency         TVET          NVQF / CBT&A level descriptors
└── CompetencyLevel    clinical      OSCE, level-based and non-numeric

Every grade, transcript, GPA calculation, eligibility check and progression rule routes through this interface. There is no second place this decision can be made.

3 · Course — one object, every rung

The unification came from adding the vocational rung. A trade and a course look different until you notice that both need: a theory component, a practical component, an assessment scheme, an external assessor, a level, and a place to be delivered. That is exactly the medical and media case too.

SegmentAcademic unitdelivery_modeexternal_assessorLevel
TVETTrade (450+)Workshop, on-jobQAB assessorNVQF 1–5
EngineeringCourse + labLab, drawing studio, workshopPEC OBA panelCredit hours
MedicalCourse + rotationClinical, OPD/IPD, skills labClinical supervisorCredit hours
DentalCourse + operatoryPreclinical lab, teaching clinicExternal examinerCredit hours
MediaCourse + productionNewsroom, studio, edit suiteIndustry mentorCredit hours
SchoolSubjectClassroom—Percentage

The four supporting abstractions

Versioned curriculum

A 2019 scheme and a 2024 scheme must coexist for cohorts graduating under each. Programme → ProgrammeVersion. Generic ERPs get this wrong and it is the number-one complaint in the Pakistani market.

Fee ledger, separate from GL

Cash, vouchers, partial payments, installments, sibling discounts, hardship, mid-semester proration, late fines, fund vs self finance. Naive designs break here every time.

Hold engine

Finance, academic, discipline and document holds gating course registration. This is the single most common student complaint in every Pakistani university — "my fee isn’t cleared".

Tenancy + federation

Institution → Campus → Department → Programme → Section, with an affiliated college modelled as a relationship, not a parent-child link. That distinction is the entire federation wedge.

Reference implementations to lean on

Do not rebuild these. Use them and move on:

Accounting

Double-entry GL, AP/AR, chart of accounts, fund accounting — reference ERPNext / Frappe / Odoo. Our differentiation is the fee ledger, not the general ledger.

Payroll

A multi-tenant PHP HRMS with payroll, recruitment, training, leave and performance already exists on the target infrastructure. Add EOBI and FBR specifics to it; do not rebuild the engine.

LMS

Blackboard is the HEC standard. Integrate over SCORM / xAPI / LTI 1.3. Competing with Blackboard on authoring depth is a two-year loss.