To solve this optimization problem, we first need to identify and translate all components into a symbolic representation. We have two variables: 'hours worked by Bobby' and 'hours worked by Peggy'. Let's denote these as `x0` (Bobby) and `x1` (Peggy).

The objective function is to minimize `2.56*x0 + 4.52*x1`.

Constraints are as follows:
- Organization score constraints: `16*x0 + 17*x1 >= 25` and `16*x0 + 17*x1 <= 147`.
- Computer competence rating constraints: `18*x0 + 23*x1 >= 51` and `18*x0 + 23*x1 <= 103`.
- Additional constraint: `-8*x0 + 6*x1 >= 0`.

Given these, the symbolic representation of the problem is:
```json
{
    'sym_variables': [('x0', 'hours worked by Bobby'), ('x1', 'hours worked by Peggy')],
    'objective_function': '2.56*x0 + 4.52*x1',
    'constraints': [
        '16*x0 + 17*x1 >= 25',
        '16*x0 + 17*x1 <= 147',
        '18*x0 + 23*x1 >= 51',
        '18*x0 + 23*x1 <= 103',
        '-8*x0 + 6*x1 >= 0'
    ]
}
```

Now, let's implement this problem using Gurobi in Python. We'll use the `gurobipy` library to model and solve the optimization problem.

```python
from gurobipy import *

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

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

# Set the objective function
m.setObjective(2.56*x0 + 4.52*x1, GRB.MINIMIZE)

# Add constraints
m.addConstr(16*x0 + 17*x1 >= 25, "organization_score_min")
m.addConstr(16*x0 + 17*x1 <= 147, "organization_score_max")
m.addConstr(18*x0 + 23*x1 >= 51, "computer_competence_rating_min")
m.addConstr(18*x0 + 23*x1 <= 103, "computer_competence_rating_max")
m.addConstr(-8*x0 + 6*x1 >= 0, "additional_constraint")

# Optimize the model
m.optimize()

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