←
Build the decisionSaved automatically
Medium · Grade 320. Intelligent Payment Routing

Route payment streams safely through changing provider conditions and pass hidden test scenarios.

Scenario

Each tick processes one payment while providers execute earlier payments in parallel.

Problem statement

Welcome to YamusaPay's Payments Engineering interview track!

Your task is to design an intelligent payment routing system. Transactions arrive with different values, types (consumer, business, refund, international), and deadlines. Meanwhile, providers vary in fees, capacity, latency, and reliability.

The visible stream teaches the contract. When you click Submit, your routing system is evaluated against hidden server-side test scenarios with unseen outages and fee changes!

Start with an empty rule set. Build decision branches: 1. Filter out ineligible or offline providers using `canRouteA`, `canRouteB`, `canRouteC`. 2. Reserve reliable, low-latency routes for urgent or high-value payments. 3. Balance routine traffic across fees, latency, and remaining capacity.

What this teaches

Combine eligibility, capacity, reliability, urgency, cost, and retry history into one general routing system.

Evaluation contract

  • Correctness and completion: 30%
  • Reliability, timeout, and priority protection: 35%
  • Cost, congestion, and throughput: 25%
  • Generalization across hidden provider identities and schedules: 10%
Scroll down to build and test your solution.

Active controller

Apply & Run executes only the selected controller.

How a rule works

A rule has two parts:

WHEN <something is true> → DO <this action>

  • WHEN is a question about what is happening right now. For example: "Is it raining?" or "Is there a wall ahead?"
  • DO is what happens when the answer is yes.
  • The simulation runs one step at a time.
  • On each step, the rules are checked from top to bottom.
  • The first rule that is true wins. The rules below it are skipped for that step.
  • To change which rule wins, move it up or down the list.
  • If no rule is true, nothing happens on that step.
  • Some actions have more than one step, like "turn right, then move". You build these in the Functions tab.
  • Once a multi-step action starts, it finishes all its steps before the rules are checked again. It only stops early if the next step is not safe.
See an example

Two rules for deciding about an umbrella:

1  WHEN isRaining  → take an umbrella
2  WHEN always     → leave the umbrella at home
  • It is raining. Rule 1 is true, so you take an umbrella. Rule 2 is skipped.
  • It is sunny. Rule 1 is false, so rule 2 is checked next. Rule 2 is always true, so you leave the umbrella at home.
  • Order matters. If rule 2 were on top, it would be true every day, and you would never take an umbrella.

Rule folders

Categorise cards without changing their global execution order.

No rules yet. Nothing will happen until you add at least one rule.