input: 
  def add_matrix(matrix1, matrix2):
      if len(matrix1) != len(matrix2):
          return 'Matrices not compatible'
      if len(matrix1[0]) != len(matrix2[0]):
          return 'Matrices not compatible'
      
      rows = len(matrix1)
      cols = len(matrix1[0])
      result = [[sum(row) for row in zip(*size)] for size in zip(matrix1, matrix2)]
      
      return result
  
  
  
  def add_matrix(matrix1, matrix2):
      """Add two matrices if they are compatible.
      >>> add_matrix([[1,2],[3,4]], [[2,3],[4,5]])
      [[3, 5], [7, 9]]
      >>> add_matrix([[1,2],[3,4]], [[2,3]])
      'Matrices not compatible'
      >>> add_matrix([[1,2],[3,4]], [[2,3],[4,5],[6,7]])
      'Matrices not compatible'
      >>> add_matrix([[1,2],[3,4]], [[2,3],[4,5]])  
      [[3, 5], [7, 9]]
      """
      if len(matrix1) != len(matrix2):
          return 'Matrices not compatible'
      if len(matrix1[0]) != len(matrix2[0]):
          return 'Matrices not compatible'
      
      rows = len(matrix1)
      cols = len(matrix1[0])
      result = [[sum(row) for row in zip(*size)] for size in zip(matrix1, matrix2)]
      
      return result
  
  Explanation:
  1. First, we check if both matrices have same number of rows and same number of columns, if not return 'Matrices not compatible'.
  2. If that criterion is passed, then we calculate the result matrix using a nested list comprehension where the inner list comprehension sums up each corresponding elements in pairs when zipped together. Thus, creating a resultant matrix with sum of elements. This avoids nested for-loops for better readability and maintainability.
output:     rows = len(matrix1)
      cols = len(matrix1[0])
      result = [[matrix1[i][j] + matrix2[i][j] for j in range(cols)] for i in range(rows)]
      
      return result