## Step 1: Define the optimization problem and its constraints
The problem requires minimizing the objective function $5x_0 + 8x_1 + 8x_2$, where $x_0$, $x_1$, and $x_2$ represent the hours worked by Bobby, Peggy, and George, respectively. The constraints include:
- $13x_0$ for Bobby's dollar cost per hour
- $8x_0$ for Bobby's paperwork competence rating
- $10x_1$ for Peggy's dollar cost per hour
- $9x_1$ for Peggy's paperwork competence rating
- $26x_2$ for George's dollar cost per hour
- $6x_2$ for George's paperwork competence rating
- $10x_1 + 26x_2 \geq 99$
- $13x_0 + 10x_1 \geq 97$
- $13x_0 + 10x_1 + 26x_2 \geq 64$
- $13x_0 + 10x_1 + 26x_2 \geq 64$ (redundant with the previous constraint)
- $9x_1 + 6x_2 \geq 68$
- $8x_0 + 9x_1 \geq 86$
- $8x_0 + 6x_2 \geq 41$
- $8x_0 + 9x_1 + 6x_2 \geq 41$ (redundant with the previous constraint)
- $-6x_0 + 4x_1 \geq 0$
- $-7x_1 + 6x_2 \geq 0$
- $8x_0 + 6x_2 \leq 272$
- $9x_1 + 6x_2 \leq 191$
- $x_0, x_1, x_2$ are non-negative integers.

## 2: Convert the problem into Gurobi code
To solve this problem using Gurobi, we first need to import the Gurobi library and create a new model. Then, we define the variables, objective function, and constraints.

```python
import gurobi as gp

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

# Define the variables
x0 = m.addVar(name="hours_worked_by_Bobby", vtype=gp.GRB.INTEGER)
x1 = m.addVar(name="hours_worked_by_Peggy", vtype=gp.GRB.INTEGER)
x2 = m.addVar(name="hours_worked_by_George", vtype=gp.GRB.INTEGER)

# Define the objective function
m.setObjective(5*x0 + 8*x1 + 8*x2, gp.GRB.MINIMIZE)

# Define the constraints
m.addConstr(10*x1 + 26*x2 >= 99, name="dollar_cost_Peggy_George")
m.addConstr(13*x0 + 10*x1 >= 97, name="dollar_cost_Bobby_Peggy")
m.addConstr(13*x0 + 10*x1 + 26*x2 >= 64, name="dollar_cost_total")
m.addConstr(9*x1 + 6*x2 >= 68, name="paperwork_Peggy_George")
m.addConstr(8*x0 + 9*x1 >= 86, name="paperwork_Bobby_Peggy")
m.addConstr(8*x0 + 6*x2 >= 41, name="paperwork_Bobby_George")
m.addConstr(-6*x0 + 4*x1 >= 0, name="Bobby_Peggy_tradeoff")
m.addConstr(-7*x1 + 6*x2 >= 0, name="Peggy_George_tradeoff")
m.addConstr(8*x0 + 6*x2 <= 272, name="paperwork_Bobby_George_limit")
m.addConstr(9*x1 + 6*x2 <= 191, name="paperwork_Peggy_George_limit")

# Optimize the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Hours worked by Bobby: {x0.varValue}")
    print(f"Hours worked by Peggy: {x1.varValue}")
    print(f"Hours worked by George: {x2.varValue}")
    print(f"Objective function value: {m.objVal}")
else:
    print("No optimal solution found.")
```