To solve this optimization problem using Gurobi, we need to first define the decision variables and then formulate the objective function along with all the given constraints. 

The decision variables here are 'hours worked by Laura' (let's call it `x0`) and 'hours worked by Peggy' (`x1`). The objective is to minimize `2*x0 + 7*x1`.

Given constraints:
- `6*x0` represents Laura's contribution to the work quality rating.
- `12*x1` represents Peggy's contribution to the work quality rating.
- The total combined work quality rating should be at least 73: `6*x0 + 12*x1 >= 73`.
- `5*x0` represents Laura's organization score.
- `7*x1` represents Peggy's organization score.
- The total combined organization score should be at least 31: `5*x0 + 7*x1 >= 31`.
- Another constraint is `-5*x0 + 8*x1 >= 0`.
- The upper bound for the total work quality rating is 127: `6*x0 + 12*x1 <= 127`.
- The upper bound for the total organization score is 99: `5*x0 + 7*x1 <= 99`.

Here's how we can model this problem in Gurobi:

```python
from gurobipy import *

# Create a new model
m = Model("Work Hours Optimization")

# Decision variables
x0 = m.addVar(lb=0, name="hours_worked_by_Laura")
x1 = m.addVar(lb=0, name="hours_worked_by_Peggy")

# Objective function: minimize 2*x0 + 7*x1
m.setObjective(2*x0 + 7*x1, GRB.MINIMIZE)

# Constraints
m.addConstr(6*x0 + 12*x1 >= 73, name="min_total_work_quality")
m.addConstr(5*x0 + 7*x1 >= 31, name="min_total_organization_score")
m.addConstr(-5*x0 + 8*x1 >= 0, name="additional_constraint")
m.addConstr(6*x0 + 12*x1 <= 127, name="max_total_work_quality")
m.addConstr(5*x0 + 7*x1 <= 99, name="max_total_organization_score")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Hours worked by Laura: {x0.x}")
    print(f"Hours worked by Peggy: {x1.x}")
else:
    print("No optimal solution found. Model status:", m.status)
```