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 interest (number of flight jackets and denim jackets produced), formulating the objective function that represents the total profit, and listing all constraints based on production capacities.

Let's denote:
- \(x_1\) as the number of flight jackets produced per day.
- \(x_2\) as the number of denim jackets produced per day.

The objective function aims to maximize the total profit. Given that each flight jacket generates a profit of $70 and each denim jacket generates a profit of $100, the objective function can be written as:
\[ \text{Maximize: } 70x_1 + 100x_2 \]

Constraints are based on production capacities:
1. The team producing flight jackets can make at most 10 jackets per day.
2. The team producing denim jackets can make at most 25 jackets per day.
3. The sewing machine can process at most 30 jackets per day of either type.

Thus, the constraints can be formulated as follows:
1. \(x_1 \leq 10\)
2. \(x_2 \leq 25\)
3. \(x_1 + x_2 \leq 30\)

Also, since the number of jackets cannot be negative, we have:
4. \(x_1 \geq 0\)
5. \(x_2 \geq 0\)

Symbolic representation in JSON format:
```json
{
    'sym_variables': [('x1', 'number of flight jackets produced per day'), 
                      ('x2', 'number of denim jackets produced per day')],
    'objective_function': '70*x1 + 100*x2',
    'constraints': ['x1 <= 10', 'x2 <= 25', 'x1 + x2 <= 30', 'x1 >= 0', 'x2 >= 0']
}
```

Now, let's implement this optimization problem using Gurobi in Python:

```python
from gurobipy import *

# Create a new model
model = Model("Jacket_Production")

# Add variables
x1 = model.addVar(lb=0, name="flight_jackets")
x2 = model.addVar(lb=0, name="denim_jackets")

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

# Add constraints
model.addConstr(x1 <= 10, "max_flight_jackets")
model.addConstr(x2 <= 25, "max_denim_jackets")
model.addConstr(x1 + x2 <= 30, "sewing_machine_capacity")

# Optimize model
model.optimize()

# Print solution
if model.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Number of flight jackets: {x1.x}")
    print(f"Number of denim jackets: {x2.x}")
    print(f"Total profit: ${70*x1.x + 100*x2.x:.2f}")
else:
    print("No optimal solution found")
```