Quick answer
TL;DR
| The problem | A growing filter vocabulary was being handled with inline logic inside the component that rendered each rule |
| What I did | Extracted operator sets and timeframe options into one data module; rebuilt the rule-row UI to read from it |
| Outcome | Adding a new rule type became a data change rather than new branching logic in the component |
| Trade-off | An extra layer of indirection between what a rule type is and how it renders |
| Timeline | Part of the same build as the state-management work |
| Team | Shared codebase; the rule engine itself was owned separately |
The situation
What changed
The decision
What I'd confirm before calling this settled
FAQ
Part of the Product Recommendations admin builder case study series →