3D House Prefab doesn't get transparent red or green whether it overlaps or not

I have a building placement project which works fine with Unity’s default 3D Objects, like 3D capsule, sphere, box objects however when I work on other 3D objects it doesn’t work. The objects all have rigidbody and box collider components while only the house prefab objects have child objects.
My scripts are like this:

public class BuildingManager : MonoBehaviour
{
      private GameObject pendingObject;
      [SerializeField] private Material[] materials;
      public bool canPlace;

void Update()
{
     if (pendingObject != null)
     {
         UpDateMaterials();
           
      pendingObject.transform.position = pos;

         if (Input.GetMouseButtonDown(0) && canPlace)
         {
             PlaceObject();
         }
     }
}

public void PlaceObject()
{
     pendingObject.GetComponent<MeshRenderer>().material = materials[2];
     pendingObject = null;
}

public void UpDateMaterials()
{
     if (canPlace)
     {
         pendingObject.GetComponent<MeshRenderer>().material = materials[0];
      
     }
     if (!canPlace)
     {
         pendingObject.GetComponent<MeshRenderer>().material = materials[1];
      
     }
}
}
public class CheckPlacement : MonoBehaviour
{
    BuildingManager buildingManager;

    void Start()
    {
        buildingManager = GameObject.Find("BuildingManager").GetComponent<BuildingManager>();
    }

   private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Building"))
        {
            Debug.Log("Can't Place Building");
            buildingManager.canPlace = false;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.CompareTag("Building"))
        {
            Debug.Log("Can Place Building");
             buildingManager.canPlace = true;
       }
    }
}

Any suggestions are welcome…

As always, it is… Time to start debugging!

By debugging you can find out exactly what your program is doing so you can fix it.

Use the above techniques to get the information you need in order to reason about what the problem is.

You can also use Debug.Log() to find out if any of your code is even running. Don’t assume it is.

Once you understand what the problem is, you may begin to reason about a solution to the problem.