To solve the given optimization problem, we first need to convert the natural language description into a symbolic representation. This involves defining variables for the quantities of scooters and bikes to be produced, formulating the objective function that represents the profit, and listing the constraints based on the machine hours available.

Let's denote:
- \(x_1\) as the number of scooters to produce,
- \(x_2\) as the number of bikes to produce.

The profit per scooter is $100, and per bike is $50. Thus, the objective function to maximize profit can be written as:
\[ \text{Maximize:} \quad 100x_1 + 50x_2 \]

Given the constraints:
- One scooter requires 2 hours on the grinder and 3 hours on the polisher.
- One bike requires 4 hours on the grinder and 3 hours on the polisher.
- Each machine can be used for a maximum of 10 hours per day.

The constraints can be formulated as follows:
1. Grinder constraint: \(2x_1 + 4x_2 \leq 10\)
2. Polisher constraint: \(3x_1 + 3x_2 \leq 10\)
3. Non-negativity constraints (since we cannot produce a negative number of items): \(x_1 \geq 0, x_2 \geq 0\)

Therefore, the symbolic representation of the problem is:
```json
{
    'sym_variables': [('x1', 'number of scooters'), ('x2', 'number of bikes')],
    'objective_function': '100*x1 + 50*x2',
    'constraints': ['2*x1 + 4*x2 <= 10', '3*x1 + 3*x2 <= 10', 'x1 >= 0', 'x2 >= 0']
}
```

To solve this problem using Gurobi in Python, we can use the following code:

```python
from gurobipy import *

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

# Create variables
x1 = m.addVar(vtype=GRB.CONTINUOUS, name="scooters", lb=0)
x2 = m.addVar(vtype=GRB.CONTINUOUS, name="bikes", lb=0)

# Set the objective function
m.setObjective(100*x1 + 50*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(2*x1 + 4*x2 <= 10, "grinder")
m.addConstr(3*x1 + 3*x2 <= 10, "polisher")

# Optimize model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Number of scooters: {x1.x}")
    print(f"Number of bikes: {x2.x}")
    print(f"Maximum profit: ${m.objVal}")
else:
    print("No optimal solution found")
```