{
  "id": "competency:murb-planning--property",
  "code": "CDU-ENG-URB-900",
  "level": "MSc",
  "name": "MUrb Planning & Property",
  "faculty": "Faculty of Engineering and the Built Environment",
  "lineage": [
    {
      "institution": "Conquest Designer University",
      "year": 2026,
      "note": "authored from the brief, the SACPLAN competencies and the RICS standards; no prior institution is claimed"
    }
  ],
  "researchProject": "What a site can carry and what it is worth: zoning yield, residual value, capitalised income and housing need",
  "description": "The calculations that join planning to property: the permissible floor area, footprint, storeys and unit yield of a site under its floor-area ratio and coverage; the residual land value of a development (RICS); the capital value of an income property by direct capitalisation; and the dwelling demand implied by a projected population and household size.",
  "syllabus": [
    "Land-use controls: floor-area ratio (bulk), coverage, height, efficiency and unit yield (SPLUMA land use schemes)",
    "Development appraisal: gross development value, costs, finance, developer’s profit, the residual (RICS)",
    "Income valuation: effective gross income, net operating income, capitalisation rate",
    "Planning for growth: geometric population projection, household size, dwelling demand"
  ],
  "reference": {
    "Gross floor area": "site area × floor-area ratio",
    "Residual land value": "GDV − sales costs − build − fees − contingency − finance − developer’s profit",
    "Finance (simplified)": "(build + fees + contingency) × rate × years × ½ (costs drawn evenly)",
    "Direct capitalisation": "value = NOI ÷ capitalisation rate; NOI = gross × (1 − vacancy) − operating expenses",
    "Population projection": "P_t = P_0 × (1 + r)^t; households = P_t ÷ persons per household"
  },
  "role": "You are a town planner and registered valuer advising a municipality or a developer. State the control or the valuation basis, show the arithmetic, and say which assumption moves the answer most.",
  "feeUsd": 1,
  "version": "1.0.0",
  "qualification": {
    "award": "MUrb",
    "nqfLevel": 9,
    "qualificationType": "Master's Degree (HEQSF qualification type 9a)",
    "totalCredits": 180,
    "minCreditsAtExitLevel": 120,
    "iscedFields": [
      "073",
      "031"
    ],
    "standards": [
      "South African Council for Planners (SACPLAN) competencies for planners; Spatial Planning and Land Use Management Act 16 of 2013 (land use schemes)",
      "RICS Valuation – Global Standards (Red Book); RICS professional standard, Valuation of development property (2019) — the residual method",
      "Appraisal Institute, The Appraisal of Real Estate — direct capitalisation"
    ],
    "registration": "not registered"
  },
  "modules": [
    {
      "code": "CDU-ENG-URB-900-901",
      "title": "Coursework — the executable units",
      "nqfLevel": 9,
      "credits": 60,
      "prerequisites": [],
      "coRequisites": [],
      "outcomes": [
        "answer every unit of the qualification against its published reference, with the working shown"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "every unit passed once through the seeded assessment (the seeded assessment room)",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [
        "bulk_yield",
        "residual_land_value",
        "direct_capitalisation",
        "household_projection"
      ],
      "notionalHours": 600
    },
    {
      "code": "CDU-ENG-URB-900-902",
      "title": "Research report",
      "nqfLevel": 9,
      "credits": 120,
      "prerequisites": [
        "CDU-ENG-URB-900-901"
      ],
      "coRequisites": [],
      "outcomes": [
        "What a site can carry and what it is worth: zoning yield, residual value, capitalised income and housing need"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "the research report, assessed against the qualification’s published reference block",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [],
      "notionalHours": 1200
    }
  ],
  "units": [
    {
      "id": "bulk_yield",
      "name": "Development yield under zoning controls",
      "answers": "How much floor area, how many storeys and how many units can this site carry under its floor-area ratio and coverage?",
      "example": {
        "siteArea": 4000,
        "floorAreaRatio": 2.5,
        "coverage": 0.6,
        "efficiency": 0.85,
        "averageUnitSize": 65
      },
      "reference": "Land use scheme controls under SPLUMA 16 of 2013: floor-area ratio (bulk) and coverage; storeys = GFA ÷ footprint (rounded up); net lettable = GFA × efficiency",
      "signature": {
        "input": {
          "siteArea": {
            "type": "number",
            "describe": "Site area, m²",
            "min": 1
          },
          "floorAreaRatio": {
            "type": "number",
            "describe": "Permitted floor-area ratio (bulk factor)",
            "min": 0.01,
            "max": 50
          },
          "coverage": {
            "type": "number",
            "describe": "Permitted coverage, 0–1",
            "min": 0.01,
            "max": 1
          },
          "efficiency": {
            "type": "number",
            "describe": "Net-to-gross efficiency, 0–1",
            "min": 0.1,
            "max": 1,
            "default": 0.85
          },
          "averageUnitSize": {
            "type": "number",
            "describe": "Average net unit size, m²",
            "min": 1
          }
        },
        "output": {
          "grossFloorArea": {
            "type": "number",
            "describe": "m²"
          },
          "maxFootprint": {
            "type": "number",
            "describe": "m²"
          },
          "storeys": {
            "type": "number",
            "describe": "Storeys needed to use the bulk"
          },
          "netArea": {
            "type": "number",
            "describe": "m²"
          },
          "units": {
            "type": "number",
            "describe": "Whole units that fit"
          }
        }
      }
    },
    {
      "id": "residual_land_value",
      "name": "Residual land value",
      "answers": "After every cost and the developer’s profit, what can the developer afford to pay for the land?",
      "example": {
        "gdv": 60000000,
        "buildCost": 32000000,
        "feesRate": 0.12,
        "contingencyRate": 0.05,
        "financeRate": 0.11,
        "constructionYears": 2,
        "profitRate": 0.2,
        "salesCostRate": 0.03
      },
      "reference": "RICS professional standard, Valuation of development property (2019): the residual method; finance on half the cost base over the build (even draw-down), land finance and acquisition costs excluded",
      "signature": {
        "input": {
          "gdv": {
            "type": "number",
            "describe": "Gross development value",
            "min": 0
          },
          "buildCost": {
            "type": "number",
            "describe": "Construction cost",
            "min": 0
          },
          "feesRate": {
            "type": "number",
            "describe": "Professional fees as a fraction of build",
            "min": 0,
            "max": 1
          },
          "contingencyRate": {
            "type": "number",
            "describe": "Contingency as a fraction of build",
            "min": 0,
            "max": 1
          },
          "financeRate": {
            "type": "number",
            "describe": "Annual finance rate",
            "min": 0,
            "max": 1
          },
          "constructionYears": {
            "type": "number",
            "describe": "Build period in years",
            "min": 0,
            "max": 20
          },
          "profitRate": {
            "type": "number",
            "describe": "Developer’s profit as a fraction of GDV",
            "min": 0,
            "max": 1
          },
          "salesCostRate": {
            "type": "number",
            "describe": "Agency and legal costs of sale as a fraction of GDV",
            "min": 0,
            "max": 1
          }
        },
        "output": {
          "costBase": {
            "type": "number",
            "describe": "Build + fees + contingency"
          },
          "financeCost": {
            "type": "number",
            "describe": "Cost base × rate × years × ½"
          },
          "developerProfit": {
            "type": "number",
            "describe": "GDV × profit rate"
          },
          "residualLandValue": {
            "type": "number",
            "describe": "What is left for the land (negative: unviable)"
          }
        }
      }
    },
    {
      "id": "direct_capitalisation",
      "name": "Capital value by direct capitalisation",
      "answers": "What is this income-producing property worth at the market capitalisation rate?",
      "example": {
        "grossIncome": 4800000,
        "vacancyRate": 0.08,
        "operatingExpenses": 1150000,
        "capRate": 0.095
      },
      "reference": "RICS Valuation – Global Standards (Red Book); Appraisal Institute, The Appraisal of Real Estate — direct capitalisation of net operating income",
      "signature": {
        "input": {
          "grossIncome": {
            "type": "number",
            "describe": "Potential gross income per year",
            "min": 0
          },
          "vacancyRate": {
            "type": "number",
            "describe": "Vacancy and collection loss, 0–1",
            "min": 0,
            "max": 1
          },
          "operatingExpenses": {
            "type": "number",
            "describe": "Non-recoverable operating expenses per year",
            "min": 0
          },
          "capRate": {
            "type": "number",
            "describe": "Market capitalisation rate",
            "min": 0.001,
            "max": 1
          }
        },
        "output": {
          "effectiveGrossIncome": {
            "type": "number",
            "describe": "Gross × (1 − vacancy)"
          },
          "netOperatingIncome": {
            "type": "number",
            "describe": "EGI − expenses"
          },
          "capitalValue": {
            "type": "number",
            "describe": "NOI ÷ cap rate"
          }
        }
      }
    },
    {
      "id": "household_projection",
      "name": "Population projection and dwelling demand",
      "answers": "How many people and households will the area hold in t years, and how many more dwellings does that need?",
      "example": {
        "basePopulation": 250000,
        "annualGrowthRate": 0.021,
        "years": 10,
        "personsPerHousehold": 3.4,
        "existingDwellings": 68000
      },
      "reference": "Geometric (compound) population projection; the persons-per-household method of converting population to households",
      "signature": {
        "input": {
          "basePopulation": {
            "type": "number",
            "describe": "Population now",
            "min": 0
          },
          "annualGrowthRate": {
            "type": "number",
            "describe": "Annual growth rate (negative for decline)",
            "min": -0.2,
            "max": 0.2
          },
          "years": {
            "type": "number",
            "describe": "Projection horizon",
            "min": 0,
            "max": 100
          },
          "personsPerHousehold": {
            "type": "number",
            "describe": "Average household size",
            "min": 1,
            "max": 20
          },
          "existingDwellings": {
            "type": "number",
            "describe": "Dwellings now",
            "min": 0
          }
        },
        "output": {
          "projectedPopulation": {
            "type": "number",
            "describe": "P0 × (1 + r)^t"
          },
          "projectedHouseholds": {
            "type": "number",
            "describe": "Population ÷ household size"
          },
          "additionalDwellings": {
            "type": "number",
            "describe": "Households − existing dwellings (negative: surplus)"
          }
        }
      }
    }
  ]
}