Aggregator Selection Algorithm

How Fuse chooses the best aggregator

At Fuse, we possess an extensive collection of historic performance data on various aggregators. This data is utilized to train a machine learning algorithm. Upon a user selecting an institution, we predict the metrics for all aggregators such as conversion_rate and disconnection_rate. Fuse enables you to determine the aggregator selection process based on these metrics. You can provide us with your custom logic as TypeScript code, implementing our predefined interfaces.

Below are the types and functions we provide.

FunctionsDescription
selectAggregator(metrics: Array): AggregatorThis is the function that you implement.
optimalAggregator(metrics: Array): AggregatorReturns the optimal aggregator based on Fuse’s machine learning algorithms predictions, optimising for the metrics array provided.
performanceGapFromTopAggregator(
aggregator: Aggregator,
metrics: Array
): "low" | "medium" | "high"
Returns the performance gap between the given aggregator and the best aggregator.
MetricDescription
disconnection_rateThe percentage of users that connect and get disconnected within a month
conversion_rateThe percentage of users that tap on an institution and end up connecting to it.
balance_success_rateThe percentage of successful requests to the aggregators balance endpoint
account_detail_success_rateThe percentage of successful requests to the aggregators account details endpoint

Example implementation

Here is an example implementation of the selectAggregator function that chooses Plaid if there is little difference between Plaid and the top performing aggregator for the "disconnection_rate" and "conversion_rate" metrics, otherwise it chooses the top performing aggregator for those metrics.

function selectAggregator() {  
	if (
    performanceGapFromTopAggregator("Plaid", [
      "disconnection_rate",
      "conversion_rate",
    ]) === "low"
  ) {
    return "Plaid";
  }
  return optimalAggregator(["disconnection_rate", "conversion_rate"]);
}