```json
{
  "sym_variables": [
    ("x0", "hours worked by John"),
    ("x1", "hours worked by Hank"),
    ("x2", "hours worked by Peggy"),
    ("x3", "hours worked by Bill"),
    ("x4", "hours worked by Paul"),
    ("x5", "hours worked by George")
  ],
  "objective_function": "1*x0 + 7*x1 + 1*x2 + 4*x3 + 2*x4 + 8*x5",
  "constraints": [
    "13*x2 + 3*x4 >= 35",
    "13*x2 + 17*x3 >= 27",
    "13*x2 + 17*x3 + 3*x4 >= 41",
    "13*x0 + 19*x1 + 13*x2 >= 41",
    "13*x0 + 3*x4 + 5*x5 >= 41",
    "19*x1 + 17*x3 + 5*x5 >= 41",
    "13*x0 + 13*x2 + 5*x5 >= 41",
    "13*x2 + 3*x4 + 5*x5 >= 41",
    "13*x0 + 17*x3 + 3*x4 >= 41",
    "19*x1 + 13*x2 + 5*x5 >= 41",
    "19*x1 + 3*x4 + 5*x5 >= 41",
    "13*x0 + 17*x3 + 5*x5 >= 41",
    "13*x2 + 17*x3 + 5*x5 >= 41",
    "19*x1 + 17*x3 + 3*x4 >= 41",
    "13*x0 + 13*x2 + 17*x3 >= 41",
    "6*x2 + 18*x4 <= 287",
    "13*x4 + 5*x5 <= 194",
    "13*x2 + 17*x3 <= 140",
    "19*x1 + 13*x2 <= 269",
    "19*x1 + 3*x4 <= 123",
    "13*x2 + 5*x5 <= 270",
    "13*x0 + 17*x3 + 3*x4 <= 147",
    "17*x3 + 3*x4 + 5*x5 <= 222",
    "13*x2 + 17*x3 + 5*x5 <= 245",
    "19*x1 + 13*x2 + 5*x5 <= 237",
    "13*x0 + 19*x1 + 5*x5 <= 133",
    "19*x1 + 3*x4 + 5*x5 <= 220",
    "19*x1 + 17*x3 + 3*x4 <= 126",
    "13*x0 + 19*x1 + 17*x3 <= 157",
    "13*x0 + 19*x1 + 13*x2 + 17*x3 + 3*x4 + 5*x5 <= 157",
    "12*x0 + 2*x5 <= 105",
    "2*x1 + 15*x3 <= 150",
    "12*x0 + 18*x4 <= 233",
    "2*x1 + 18*x4 <= 227",
    "6*x2 + 2*x5 <= 188",
    "12*x0 + 6*x2 <= 97",
    "2*x1 + 2*x5 <= 254",
    "6*x2 + 15*x3 <= 73",
    "12*x0 + 2*x1 + 2*x5 <= 95",
    "12*x0 + 18*x4 + 2*x5 <= 130",
    "12*x0 + 6*x2 + 18*x4 <= 66",
    "2*x1 + 6*x2 + 15*x3 <= 267",
    "2*x1 + 15*x3 + 18*x4 <= 89",
    "6*x2 + 15*x3 + 18*x4 <= 285",
    "15*x3 + 18*x4 + 2*x5 <= 182",
    "12*x0 + 15*x3 + 2*x5 <= 140",
    "12*x0 + 15*x3 + 18*x4 <= 197",
    "12*x0 + 6*x2 + 15*x3 <= 51",
    "12*x0 + 2*x1 + 6*x2 + 15*x3 + 18*x4 + 2*x5 <= 51"
  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("resource_allocation")

# Create variables
john = m.addVar(vtype=gp.GRB.INTEGER, name="john")
hank = m.addVar(vtype=gp.GRB.INTEGER, name="hank")
peggy = m.addVar(vtype=gp.GRB.INTEGER, name="peggy")
bill = m.addVar(vtype=gp.GRB.INTEGER, name="bill")
paul = m.addVar(vtype=gp.GRB.INTEGER, name="paul")
george = m.addVar(vtype=gp.GRB.INTEGER, name="george")


# Set objective function
m.setObjective(1 * john + 7 * hank + 1 * peggy + 4 * bill + 2 * paul + 8 * george, gp.GRB.MAXIMIZE)


paperwork_competence = {
    "john": 13,
    "hank": 19,
    "peggy": 13,
    "bill": 17,
    "paul": 3,
    "george": 5
}

organization_score = {
    "john": 12,
    "hank": 2,
    "peggy": 6,
    "bill": 15,
    "paul": 18,
    "george": 2
}

# Add constraints

m.addConstr(13 * peggy + 3 * paul >= 35)
m.addConstr(13 * peggy + 17 * bill >= 27)
m.addConstr(6*peggy + 18*paul <= 287)


# ... (rest of the constraints from the JSON "constraints" field)

m.optimize()

if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == gp.GRB.INFEASIBLE:
    print("Model is infeasible")
else:
    print("Optimization ended with status %d" % m.status)

```