Filtering/sorting with complex pricelist priority

We have a complex requirement with our pricelists. I hope this example will sufficiently demonstrate how it works.

[
	{
		"name":"ProductA",
		"pricelists": {
			"PriceList_CUSTOMER_A": 50,
			"PriceList_CUSTOMER_B": 10,
			"PriceList_SALE:" 20,
			"PriceList_NORMAL:" 20
		}
	},{
		"name":"ProductB",
		"pricelists": {
			"PriceList_SALE": 20,
			"PriceList_NORMAL": 30
		}
	},{
		"name":"ProductC",
		"pricelists": {
			"PriceList_CUSTOMER_B": 30,
			"PriceList_SALE": 30,
		}
	}
]

Customer A has pricelists PriceList_NORMAL, PriceList_CUSTOMER_A

Products have all possible pricelists that apply to them but not all products have all pricelists.
Customers have a (much smaller) subset of the pricelist that exists on products.
There is a priority in the pricelists, from high to low: PriceList_CUSTOMER_X → PriceList_SALE → PriceList_NORMAL

When filtering or sorting on price, both the subset that applies to the customer as well as the priority needs to be taken into account.

In this example, that means the prices that apply to customer A are:
ProductA → PriceList_CUSTOMER_A → 50 (highest prio pricelist, even though it is more expensive. Not realistic but I want to make the point on the priority rules)
ProductB → PriceList_NORMAL → 30 (even though PriceList_SALE is cheaper, it does not apply to the customer)
ProductC → Not returned because none of the relevant pricelists are on the product

I do have a solution for filtering the relevant products for a search where the price is not a factor (just whether it HAS a price for that customer).
That is to have a separate array of the pricelist names (for Product B that would be "pricelistnames":["PriceList_SALE","PriceList_NORMAL"] ) and then pass the subset the customer has as a facetfilter. I have made that work in a real implementation.

What I don’t have a solution for is how to sort and filter on those prices with these rules.
The docs mention that if the pricing logic is too complex, it should be done outside of Algolia. But that means the algolia paging cannot be used, meaning multiple calls need to be done every time to collect all the pages and then do the paging manually on my end which will be detrimental to performance. Unless I’m missing something?