Self-directed project
Amazon Robotics - Black-Friday Fleet Coordination
Software Engineering · July 2026
Built a full warehouse fleet-coordination solution for Black Friday surge conditions: framed the bottleneck as aisle congestion and dock contention, implemented A* for single-robot routing, then extended it to centralized cooperative A* with vertex and edge reservations to prevent collisions. Validated the policy in simulation with zero collisions and deadlocks, selected staggered charging plus dispersed idle parking, and packaged the result into an executive-ready pilot recommendation.
Graded against
- Problem framing & operational stakes20%
- Algorithmic depth - A* and cooperative coordination30%
- Coordination policy realism - deadlock, charging, idle25%
- Throughput trade-off analysis15%
- Executive pitch to leadership10%
Passed · pass mark 55/100
What stood out6
- Implemented A* with Manhattan heuristic and showed it outperforming Dijkstra in node expansions
- Built a reservation table that blocks both vertex conflicts and head-on edge swaps
- Chose a realistic fleet policy: priority-watchdog deadlock handling, staggered charging, and dispersed perimeter idle parking
- Used simulator outputs to identify a concave throughput optimum at 35 robots and tied the capstone pitch to measurable operational metrics
- Leakage-Free Feature Engineering
- Honest Model Evaluation
The work I submitted12 tasks
Role And Mission
{"acknowledged":true,"zonesExplored":["pick","aisles","pack","charge"],"kpisShown":["speed","safety","throughput"]}Amazon Robotics Context
{"viewedAt":"2026-07-17T15:04:01.047Z","timeline":["2003","2012","2015","2025"],"driveUnitStats":["110 kg","450 kg","5.5 km / h"],"disclaimerShown":true,"sourcesShown":true,"sources":["Amazon, Kiva Systems acquisition (2012)","About Amazon, one millionth robot (2025)","Published Kiva / Amazon drive-unit specifications","Statista, Amazon net sales by leading market (2024)","Amazon, Bad Hersfeld (FRA1) site","Wurman, D’Andrea & Mountz (2008), AI Magazine"]}Program Overview
{"explored":["understand","plan-one","defend","coordinate-many","optimize"],"exploredCount":5,"activePhase":"optimize","totalPhases":5}Grid World Theory
{"concept":"grid-world-model","connectivity":8,"gridSize":"20x20","viewedAt":"2026-07-17T15:06:09.157Z"}State Representation Task
{"robots":[{"id":"R1","x":0,"y":0,"goal":{"x":9,"y":9},"battery":100},{"id":"R2","x":1,"y":0,"goal":{"x":8,"y":9},"battery":94},{"id":"R3","x":2,"y":0,"goal":{"x":7,"y":9},"battery":88},{"id":"R4","x":3,"y":0,"goal":{"x":6,"y":9},"battery":82},{"id":"R5","x":4,"y":0,"goal":{"x":5,"y":9},"battery":76}],"placedAt":"2026-07-17T15:13:48.644Z"}Phase1 Recap
{"phase":1,"phaseTitle":"Grid-world modeling","takeaways":[{"id":"grid-of-typed-cells","title":"Warehouse = grid of typed cells"},{"id":"state-positions-goals-batteries","title":"State = positions + goals + batteries"},{"id":"collisions-vertex-and-edge","title":"Collisions = same cell OR same edge at the same tick"}],"skillAxisTicked":"Modeling"}Astar Theory
{"heuristic":"manhattan","admissible":true,"viewed_comparison":true,"replays":0,"astar_expanded":32,"dijkstra_expanded":107}State Representation Task Validator
{"code":"# Auto-validator: every robot needs a position AND a goal.\n# The planner refuses to schedule a robot whose state is incomplete.\nimport json\n\nstate = json.loads(r\"\"\"{\n \"robots\": [\n {\n \"id\": \"R1\",\n \"x\": 0,\n \"y\": 0,\n \"goal\": {\n \"x\": 9,\n \"y\": 9\n },\n \"battery\": 100\n },\n {\n \"id\": \"R2\",\n \"x\": 1,\n \"y\": 0,\n \"goal\": {\n \"x\": 8,\n \"y\": 9\n },\n \"battery\": 94\n },\n {\n \"id\": \"R3\",\n \"x\": 2,\n \"y\": 0,\n \"goal\": {\n \"x\": 7,\n \"y\": 9\n },\n \"battery\": 88\n },\n {\n \"id\": \"R4\",\n \"x\": 3,\n \"y\": 0,\n \"goal\": {\n \"x\": 6,\n \"y\": 9\n },\n \"battery\": 82\n },\n {\n \"id\": \"R5\",\n \"x\": 4,\n \"y\": 0,\n \"goal\": {\n \"x\": 5,\n \"y\": 9\n },\n \"battery\": 76\n }\n ]\n}\"\"\")\n\ndef validate(state):\n bots = state.get('robots', [])\n issues = []\n for b in bots:\n if b.get('x') is None or b.get('y') is None:\n issues.append(f\"robot {b['id']} has no position\")\n if not b.get('goal') or b['goal'].get('x') is None:\n issues.append(f\"robot {b['id']} has no goal\")\n return issues\n\nissues = validate(state)\nif issues:\n print(\"INCOMPLETE STATE\")\n for line in issues:\n print(\" -\", line)\nelse:\n print(f\"OK, {len(state['robots'])} robots, each with position + goal.\")\n print('Planner can schedule this state.')\n","stdout":"OK, 5 robots, each with position + goal.\nPlanner can schedule this state.\n","stderr":"","error":null,"imageCount":0,"durationMs":12,"ranAt":"2026-07-17T15:26:43.324Z"}Astar Implementation Cell
{"code":"# A* path planning for one warehouse drive-unit.\n# Complete the three TODOs and click \"Run cell\" to replay your A* on the\n# 15x15 fixture grid on the right.\n#\n# The grid is a list of rows: 0 = free aisle, 1 = rack obstacle.\n# Robots move 4-connected (up/down/left/right), no diagonals.\n\nimport heapq, json, time\n\nGRID = __ASTAR_GRID__ # injected by the harness\nSTART = tuple(__ASTAR_START__) # (row, col)\nGOAL = tuple(__ASTAR_GOAL__) # (row, col)\nH, W = len(GRID), len(GRID[0])\n\n\ndef h(cell, goal):\n # Manhattan distance, admissible AND tight on a 4-connected grid.\n (r1, c1), (r2, c2) = cell, goal\n return abs(r1 - r2) + abs(c1 - c2)\n\n\ndef neighbours(cell):\n r, c = cell\n # 4-connected moves: up, down, left, right.\n for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:\n nr, nc = r + dr, c + dc\n if 0 <= nr < H and 0 <= nc < W and GRID[nr][nc] == 0:\n yield (nr, nc)\n\n\ndef reconstruct_path(came_from, current):\n path = [current]\n while current in came_from:\n current = came_from[current]\n path.append(current)\n return list(reversed(path))\n\n\ndef a_star(start, goal):\n # open_set holds (f_score, tiebreak, cell) tuples; heapq pops the smallest.\n counter = 0\n open_set = [(0, counter, start)]\n came_from = {}\n g_score = {start: 0}\n closed = set()\n visited_order = []\n expansions = 0\n\n while open_set:\n _, _, current = heapq.heappop(open_set)\n\n if current in closed:\n continue\n\n closed.add(current)\n visited_order.append(current)\n expansions += 1\n\n if current == goal:\n return reconstruct_path(came_from, current), visited_order, expansions\n\n for nb in neighbours(current):\n if nb in closed:\n continue\n\n tentative_g = g_score[current] + 1\n\n if tentative_g < g_score.get(nb, float(\"inf\")):\n came_from[nb] = current\n g_score[nb] = tentative_g\n\n # TODO 1: f-score = g + h\n f = tentative_g + h(nb, goal)\n\n # TODO 2: Tie-breaking\n # Prefer nodes with smaller heuristic value.\n counter += 1\n tiebreak = (h(nb, goal), counter)\n\n heapq.heappush(open_set, (f, tiebreak, nb))\n\n return None, visited_order, expansions\n\n\nt0 = time.perf_counter()\npath, visited, expansions = a_star(START, GOAL)\nruntime_ms = (time.perf_counter() - t0) * 1000.0\n\n# TODO 3\n# neighbours() already filters out obstacles (GRID[r][c] == 1),\n# so no further changes are needed here.\n_ = list(neighbours(START))\n\n# Emit a single line of JSON the right-side visualiser parses to animate.\nprint(\"__ASTAR_RESULT__\" + json.dumps({\n \"path\": path,\n \"visited\": visited,\n \"nodes_expanded\": expansions,\n \"path_length\": 0 if path is None else len(path),\n \"runtime_ms\": round(runtime_ms, 2),\n}))\n","passed":true,"reason":"Path is optimal and obstacle-free.","path_length":29,"nodes_expanded":31,"runtime_ms":7.7,"optimal_length":29,"attempt_count":1,"used_canonical":false,"ranAt":"2026-07-17T15:27:03.147Z"}Astar Solution Correct
trueSingle Unit Challenge
{"passed":true,"usedFallback":false,"usedHint":false,"runs":[{"maze":"Maze 1 · Open aisles","passed":true,"path_length":49,"optimal_length":49,"nodes_expanded":64,"runtime_ms":19.2},{"maze":"Maze 2 · Narrow corridors","passed":true,"path_length":49,"optimal_length":49,"nodes_expanded":61,"runtime_ms":17.1},{"maze":"Maze 3 · Dense racks","passed":true,"path_length":49,"optimal_length":49,"nodes_expanded":75,"runtime_ms":18.87}],"ranAt":"2026-07-17T15:28:18.485Z"}Phase2 Recap
{"phase":2,"phaseTitle":"Single-agent A* search","takeaways":[{"id":"astar-equals-dijkstra-plus-admissible-heuristic","title":"A* = Dijkstra + admissible heuristic"},{"id":"manhattan-on-four-connected-grid","title":"Manhattan distance on 4-connected grids"},{"id":"optimal-and-faster-than-dijkstra","title":"Optimal AND faster than Dijkstra"}],"skillAxisTicked":"A* search"}