The following based on code I have posted before assumes that client names may have a hyphen (which complicates things). It creates the folders if missing and moves the item to the appropriate folder.
The script MoveToClientFolder could be run from a rule to process messages as they arrive.

Option Explicit
'Graham Mayor - https://www.gmayor.com - Last updated - 11 May 2021

Sub TestMacro()
'select a messageand run the process
Dim olMsg As MailItem
    On Error Resume Next
    Select Case Outlook.Application.ActiveWindow.Class
        Case olInspector
            Set olMsg = ActiveInspector.currentItem
        Case olExplorer
            Set olMsg = Application.ActiveExplorer.Selection.Item(1)
    End Select
    MoveToClientFolder olMsg
lbl_Exit:
    Exit Sub
End Sub

Sub MoveToClientFolder(olItem As MailItem)
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.Folder
Dim sClient As String, sRef As String
Dim vSubject As Variant

    If TypeName(olItem) = "MailItem" Then
        Set olNS = GetNamespace("MAPI")
        vSubject = Split(olItem.Subject, "-")

        'Get the client name
        Select Case UBound(vSubject)
            Case Is = 3
                sClient = Trim(vSubject(1))
            Case Is = 4
                sClient = Trim(vSubject(1)) & "-" & Trim(vSubject(2))
            Case Else
                Beep
                GoTo lbl_Exit
        End Select

        'get the ref number
        If InStr(1, CStr(vSubject(0)), "Ref#") = 0 Then
            Beep
            GoTo lbl_Exit
        End If
        sRef = GetNum(CStr(vSubject(0)))
        'create the client folder, if missing
        AddOutlookFolder sClient
        'create the REFnumber folder if missing
        AddRefFolder sClient, sRef

        Set olFolder = olNS.GetDefaultFolder(6).folders(sClient).folders(sRef)
        'move the item to the folder
        olItem.Move olFolder
    End If
lbl_Exit:
    Set olNS = Nothing
    Set olFolder = Nothing
    Set olItem = Nothing
    Exit Sub
End Sub

Private Sub AddClientFolder(strFolderName As String)
Dim i As Long
Dim olNS As NameSpace
Dim iFolder As Folder
Dim bExists As Boolean

    Set olNS = GetNamespace("MAPI")
    For i = olNS.GetDefaultFolder(6).folders.Count To 1 Step -1
        Set iFolder = olNS.GetDefaultFolder(6).folders(i)
        If iFolder.Name = strFolderName Then
            bExists = True
            Exit For
        End If
    Next i

    If Not bExists Then
        Set iFolder = olNS.GetDefaultFolder(6)
        iFolder.folders.Add (strFolderName)
    End If

    Set iFolder = Nothing
    Set olNS = Nothing
lbl_Exit:
    Exit Sub
End Sub

Private Sub AddRefFolder(strClient As String, strRef As String)
Dim i As Long
Dim olNS As NameSpace
Dim iFolder As Folder
Dim bExists As Boolean

    Set olNS = GetNamespace("MAPI")
    bExists = False
    For i = olNS.GetDefaultFolder(6).folders(strClient).folders.Count To 1 Step -1
        Set iFolder = olNS.GetDefaultFolder(6).folders(strClient).folders(i)
        If iFolder.Name = strRef Then
            bExists = True
            Exit For
        End If
    Next i

    If Not bExists Then
        Set iFolder = olNS.GetDefaultFolder(6).folders(strClient)
        iFolder.folders.Add strRef
    End If

    Set iFolder = Nothing
    Set olNS = Nothing
lbl_Exit:
    Exit Sub
End Sub

Private Function GetNum(sText As String) As String
Dim i As Integer
    For i = 1 To Len(sText)
        If Mid(sText, i, 1) >= "0" And Mid(sText, i, 1) <= "9" Or Mid(sText, i, 1) = "." Then
            GetNum = GetNum + Mid(sText, i, 1)
        End If
    Next
lbl_Exit:
    Exit Function
End Function