We need to support
- quite complex product structures (10-15 customization variables)
- geographic inputs (origin, destination) and be able to process those locations to determine pricing
- self-improveming capabilities (based on success / defeat rate of previous offers)