{"type":"excalidraw","version":2,"source":"https://AwesomeSystemDesign.dev","elements":[{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-1"}],"updated":0,"link":null,"locked":false,"id":"shape-0","type":"rectangle","seed":41,"x":30,"y":30,"width":438.772,"height":68,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-1","type":"text","seed":114,"x":50,"y":52.3,"width":398.772,"height":23.400000000000002,"fontSize":18,"fontFamily":1,"text":"Matching Engine — Finding the Best Driver","originalText":"Matching Engine — Finding the Best Driver","textAlign":"left","verticalAlign":"middle","containerId":"shape-0","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-3"}],"updated":0,"link":null,"locked":false,"id":"shape-2","type":"rectangle","seed":187,"x":30,"y":123,"width":445.98424,"height":68,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-3","type":"text","seed":260,"x":50,"y":145.3,"width":405.98424,"height":23.400000000000002,"fontSize":18,"fontFamily":1,"text":"Input: Rider at (lat, lng), requesting UberX","originalText":"Input: Rider at (lat, lng), requesting UberX","textAlign":"left","verticalAlign":"middle","containerId":"shape-2","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#9180ac","backgroundColor":"#f4effb","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-5"}],"updated":0,"link":null,"locked":false,"id":"shape-4","type":"rectangle","seed":333,"x":30,"y":216,"width":615.7580800000001,"height":82.80000000000001,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-5","type":"text","seed":406,"x":50,"y":234,"width":575.7580800000001,"height":46.800000000000004,"fontSize":18,"fontFamily":1,"text":"Step 1: Candidate Generation\nGEORADIUS within 5 km → 20 nearby available UberX drivers","originalText":"Step 1: Candidate Generation\nGEORADIUS within 5 km → 20 nearby available UberX drivers","textAlign":"left","verticalAlign":"middle","containerId":"shape-4","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-4"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-7"}],"updated":0,"link":null,"locked":false,"id":"shape-6","type":"rectangle","seed":479,"x":30,"y":323.8,"width":630.22072,"height":129.60000000000002,"customData":{"revealStep":4}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-4"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-7","type":"text","seed":552,"x":50,"y":341.8,"width":590.22072,"height":93.60000000000001,"fontSize":18,"fontFamily":1,"text":"Step 2: ETA Calculation\nFor each candidate: compute driving ETA from driver → pickup\nUse: pre-computed road network graph (OSRM/Valhalla)\n→ Candidate list with actual ETAs (not straight-line distance)","originalText":"Step 2: ETA Calculation\nFor each candidate: compute driving ETA from driver → pickup\nUse: pre-computed road network graph (OSRM/Valhalla)\n→ Candidate list with actual ETAs (not straight-line distance)","textAlign":"left","verticalAlign":"middle","containerId":"shape-6","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":4}},{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-5"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-9"}],"updated":0,"link":null,"locked":false,"id":"shape-8","type":"rectangle","seed":625,"x":30,"y":478.40000000000003,"width":524.89912,"height":199.8,"customData":{"revealStep":5}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-5"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-9","type":"text","seed":698,"x":50,"y":496.40000000000003,"width":484.89912000000004,"height":163.8,"fontSize":18,"fontFamily":1,"text":"Step 3: Scoring\nscore = w1 × (1/pickup_eta) // closer = better\nw2 × driver_rating // higher rated = preferred\nw3 × acceptance_rate // reliable drivers preferred\nw4 × (1/idle_time) // fairness: long-waiting\nw5 × heading_alignment // driver heading toward\n// pickup = less U-turn","originalText":"Step 3: Scoring\nscore = w1 × (1/pickup_eta) // closer = better\nw2 × driver_rating // higher rated = preferred\nw3 × acceptance_rate // reliable drivers preferred\nw4 × (1/idle_time) // fairness: long-waiting\nw5 × heading_alignment // driver heading toward\n// pickup = less U-turn","textAlign":"left","verticalAlign":"middle","containerId":"shape-8","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":5}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-6"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-11"}],"updated":0,"link":null,"locked":false,"id":"shape-10","type":"rectangle","seed":771,"x":30,"y":703.2,"width":573.5722000000001,"height":68,"customData":{"revealStep":6}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-6"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-11","type":"text","seed":844,"x":50,"y":725.5,"width":533.5722000000001,"height":23.400000000000002,"fontSize":18,"fontFamily":1,"text":"Typical weights: w1=0.5, w2=0.15, w3=0.1, w4=0.15, w5=0.1","originalText":"Typical weights: w1=0.5, w2=0.15, w3=0.1, w4=0.15, w5=0.1","textAlign":"left","verticalAlign":"middle","containerId":"shape-10","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":6}},{"angle":0,"strokeColor":"#9180ac","backgroundColor":"#f4effb","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-7"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-13"}],"updated":0,"link":null,"locked":false,"id":"shape-12","type":"rectangle","seed":917,"x":30,"y":796.2,"width":591.48832,"height":129.60000000000002,"customData":{"revealStep":7}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-7"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-13","type":"text","seed":990,"x":50,"y":814.2,"width":551.48832,"height":93.60000000000001,"fontSize":18,"fontFamily":1,"text":"Step 4: Dispatch\nSelect top-scoring driver → send offer (15 second timeout)\nIf declined/timeout → next best driver (up to 3 attempts)\nIf no driver after 3 attempts → \"No drivers available\"","originalText":"Step 4: Dispatch\nSelect top-scoring driver → send offer (15 second timeout)\nIf declined/timeout → next best driver (up to 3 attempts)\nIf no driver after 3 attempts → \"No drivers available\"","textAlign":"left","verticalAlign":"middle","containerId":"shape-12","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":7}},{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-8"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-15"}],"updated":0,"link":null,"locked":false,"id":"shape-14","type":"rectangle","seed":1063,"x":30,"y":950.8000000000001,"width":613.71652,"height":176.4,"customData":{"revealStep":8}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-8"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-15","type":"text","seed":1136,"x":50,"y":968.8000000000001,"width":573.71652,"height":140.4,"fontSize":18,"fontFamily":1,"text":"Advanced: Batch Matching (Uber's approach for high demand)\nInstead of matching one ride at a time:\nCollect ride requests over a 2-second window\nSolve global assignment: minimize total pickup ETAs\nUsing Hungarian algorithm or greedy assignment\n→ Better global optimality than greedy one-at-a-time","originalText":"Advanced: Batch Matching (Uber's approach for high demand)\nInstead of matching one ride at a time:\nCollect ride requests over a 2-second window\nSolve global assignment: minimize total pickup ETAs\nUsing Hungarian algorithm or greedy assignment\n→ Better global optimality than greedy one-at-a-time","textAlign":"left","verticalAlign":"middle","containerId":"shape-14","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":8}}],"appState":{"viewBackgroundColor":"#fbfbf8","gridSize":null},"files":{}}