```json
{
  "sym_variables": [
    ("x0", "hours worked by Paul"),
    ("x1", "hours worked by Ringo")
  ],
  "objective_function": "8.09*x0 + 3.83*x1",
  "constraints": [
    "28*x0 + 8*x1 >= 56",
    "25*x0 + 29*x1 >= 65",
    "5*x0 + 5*x1 >= 28",
    "3*x0 + 16*x1 >= 51",
    "-3*x0 + 10*x1 >= 0",
    "28*x0 + 8*x1 <= 139",
    "25*x0 + 29*x1 <= 122",
    "5*x0 + 5*x1 <= 147",
    "3*x0 + 16*x1 <= 205"
  ]
}
```

```python
import gurobipy as gp
from gurobipy import GRB

try:
    # Create a new model
    model = gp.Model("optimize_work_hours")

    # Create variables
    paul_hours = model.addVar(vtype=GRB.INTEGER, name="paul_hours")
    ringo_hours = model.addVar(vtype=GRB.CONTINUOUS, name="ringo_hours")

    # Set objective function
    model.setObjective(8.09 * paul_hours + 3.83 * ringo_hours, GRB.MAXIMIZE)

    # Add constraints
    model.addConstr(28 * paul_hours + 8 * ringo_hours >= 56, "paperwork_min")
    model.addConstr(25 * paul_hours + 29 * ringo_hours >= 65, "productivity_min")
    model.addConstr(5 * paul_hours + 5 * ringo_hours >= 28, "quit_index_min")
    model.addConstr(3 * paul_hours + 16 * ringo_hours >= 51, "organization_min")
    model.addConstr(-3 * paul_hours + 10 * ringo_hours >= 0, "custom_constraint")
    model.addConstr(28 * paul_hours + 8 * ringo_hours <= 139, "paperwork_max")
    model.addConstr(25 * paul_hours + 29 * ringo_hours <= 122, "productivity_max")
    model.addConstr(5 * paul_hours + 5 * ringo_hours <= 147, "quit_index_max")
    model.addConstr(3 * paul_hours + 16 * ringo_hours <= 205, "organization_max")


    # Optimize model
    model.optimize()

    # Check for infeasibility
    if model.status == GRB.INFEASIBLE:
        print("The model is infeasible.")
    else:
        # Print optimal solution
        print(f"Optimal objective value: {model.objVal}")
        print(f"Paul's hours: {paul_hours.x}")
        print(f"Ringo's hours: {ringo_hours.x}")


except gp.GurobiError as e:
    print(f"Error code {e.errno}: {e}")

except AttributeError:
    print('Encountered an attribute error')
```