Torn OC roles minmax

Add role hints to OC slots in Torn requires https://greasyfork.org/en/scripts/526824-oc-role-display

// ==UserScript==
// @name         Torn OC roles minmax
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Add role hints to OC slots in Torn requires https://greasyfork.org/en/scripts/526824-oc-role-display
// @author       Noobling
// @license MIT
// @match        https://www.torn.com/factions.php?step=your#/tab=crimes*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const roleMap = {
      // OC7
      "Muscle": 36,
      "Engineer": 25,
      "Bomber": 19,
      "Picklock #1": 10,
      "Hacker": 9,
      "Picklock #2": 2,
      //OC8
      "Muscle #3": 25,
      "Thief #2": 24,
      "Robber": 21,
      "Muscle #1": 19,
      "Muscle #2": 7,
      "Thief #1": 5,
    };

    function addRedNumbers() {
        const titles = document.querySelectorAll("span.title___UqFNy");
        titles.forEach(titleSpan => {
            const roleName = titleSpan.textContent.trim();
            if (roleMap.hasOwnProperty(roleName)) {
                // Check if we've already added it
                if (!titleSpan.dataset.modified) {
                    const redNumber = document.createElement("span");
                    redNumber.textContent = ` (${roleMap[roleName]})`;
                    redNumber.style.color = "red";
                    redNumber.style.marginLeft = "4px";
                    titleSpan.appendChild(redNumber);
                    titleSpan.dataset.modified = "true";
                }
            }
        });
    }

    // Keep retrying because this content loads dynamically
    const interval = setInterval(() => {
        const crimesTab = document.querySelector(".contentLayer___IYFdz");
        if (crimesTab) {
            addRedNumbers();
        }
    }, 1000);
})();