To address the given problem, we need to break down the natural language description into a symbolic representation and then formulate it as a Gurobi optimization model. The variables of interest are 'hours worked by Laura' and 'hours worked by Peggy', which will be represented symbolically as $x_1$ and $x_2$, respectively.

The objective function aims to minimize $2x_1 + 7x_2$ under several constraints:

1. **Work Quality Rating Constraints:**
   - The total combined work quality rating should be at least 73.
   - The total combined work quality rating must not exceed 127.
   
2. **Organization Score Constraints:**
   - The total combined organization score should be at least 31.
   - The total combined organization score must not exceed 99.

3. **Additional Linear Constraint:**
   - $-5x_1 + 8x_2 \geq 0$

Given the resource attributes:
- Laura's work quality rating contribution per hour is 6, and her organization score contribution per hour is 5.
- Peggy's work quality rating contribution per hour is 12, and her organization score contribution per hour is 7.

The symbolic representation of the problem can be encapsulated as follows:

```json
{
  'sym_variables': [('x1', 'hours worked by Laura'), ('x2', 'hours worked by Peggy')],
  'objective_function': '2*x1 + 7*x2',
  'constraints': [
    '6*x1 + 12*x2 >= 73', 
    '6*x1 + 12*x2 <= 127', 
    '5*x1 + 7*x2 >= 31', 
    '5*x1 + 7*x2 <= 99', 
    '-5*x1 + 8*x2 >= 0'
  ]
}
```

Now, let's formulate the Gurobi code for this optimization problem:

```python
from gurobipy import *

# Create a new model
m = Model("Work_Hours_Optimization")

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

# Set the objective function
m.setObjective(2*x1 + 7*x2, GRB.MINIMIZE)

# Add constraints
m.addConstr(6*x1 + 12*x2 >= 73, "Work_Quality_Rating_Min")
m.addConstr(6*x1 + 12*x2 <= 127, "Work_Quality_Rating_Max")
m.addConstr(5*x1 + 7*x2 >= 31, "Organization_Score_Min")
m.addConstr(5*x1 + 7*x2 <= 99, "Organization_Score_Max")
m.addConstr(-5*x1 + 8*x2 >= 0, "Additional_Linear_Constraint")

# Optimize the model
m.optimize()

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