Best structure to manage complex product options in quote system

Hi everyone,

I’m building a quoting system using Big Tables. The core structure is simple:
• Product library
• Quotes
• Quote items

Where things get complicated is with product options.
Each product can have its own set of options, and these options:
• Include quantities and other data
• May become inactive or change over time — so I can’t just link them using a static choice component
• Sometimes influence eligibility for subsidies, especially when combined with other products or specific option sets

I’ve tried adding products first, then manually adding one option at a time afterward. But this flow leads to a poor user experience and is prone to errors — especially since I can’t enforce required options in that flow.

Other things I’ve explored:
• Using a helper table
• Pre-creating product groups with possible options (simplest but extremely time consuming)
• Creating one row per option
• Storing selected options in a JSON column

But I keep running into issues, especially when it comes to:
• Adding and modifying multiple rows at once
• Displaying all possible options (even if not selected initially) in the edit flow
• Keeping the structure flexible and scalable

I’m open to any suggestions. What structure or logic has worked well for you in similar cases?

Thanks!

So each product has multiple options, and some of those options are required for a specific product.

Each quote can have multiple products, which is represented in the Quote Items table, and each quote item must represent the options as well.

Is that correct?

Exactly. I’m having a hard time setting up a good user experience to add/edit items with multiple options.