Challenge Library/Software Engineer/Build a Support Ticket Router That Scales

    Build a Support Ticket Router That Scales

    The Scenario You've just joined the engineering team at a growing SaaS company. The support team receives customer tickets from multiple channels — all of them land in a single JSON log file. Right now, support staff are manually reading…

    software
    engineer
    entry-level
    Estimated Time:
    45 minutes
    Difficulty:Intermediate
    Status:Not started
    Start this challenge

    Create a free account to upload your work. Your progress saves as a draft until you submit.

    What You'll Be Doing

    The Scenario

    You've just joined the engineering team at a growing SaaS company. The support team receives customer tickets from multiple channels — all of them land in a single JSON log file. Right now, support staff are manually reading every ticket and deciding where it goes. It's slow, error-prone, and not scaling.

    Your tech lead has asked you to build a ticket routing module: a Python script that reads the raw ticket data, assigns each ticket a priority level, routes it to the correct support queue, and outputs the processed results. This is a real, working proof-of-concept — not a diagram or design doc.

    Ticket data arrives in this format:

    {
      "tickets": [
        {
          "id": "T-1001",
          "customer_id": "C-4421",
          "customer_tier": "premium",
          "subject": "Cannot log in to account",
          "description": "Unable to access my account for two days. Urgent.",
          "submitted_at": "2026-03-15T09:32:00Z"
        },
        {
          "id": "T-1002",
          "customer_id": "C-8810",
          "customer_tier": "standard",
          "subject": "How do I export a report?",
          "description": "I cannot find the export button on the reports page.",
          "submitted_at": "2026-03-15T09:45:00Z"
        },
        {
          "id": "T-1003",
          "customer_id": "C-2233",
          "customer_tier": "standard",
          "subject": "Billing question",
          "submitted_at": "2026-03-15T10:01:00Z"
        }
      ]
    }
    

    Priority Rules

    PriorityCondition
    HIGHTicket is from a customer_tier of "premium" OR the subject or description contains any of these keywords: "urgent", "cannot", "broken", "down", "failed"
    MEDIUMAll other tickets that have a non-empty description
    LOWTickets with no description (the field is absent or empty)

    Routing Rules

    PriorityDestination Queue
    HIGH"urgent-queue"
    MEDIUM"standard-queue"
    LOW"backlog-queue"

    Expected Output Format

    Your script should print (or return) the processed tickets. The exact format is your choice — a list of dicts, a formatted print statement, or JSON — as long as it clearly shows each ticket's id, assigned priority, and destination queue.

    How Your Work Will Be Scored

    Code Correctness & Functionality - 30%Code Quality & Readability - 20%Problem Decomposition & Reasoning - 15%Testing & Edge Case Awareness - 10%Technical Communication (Video) - 10%AI Fluency - 15%

    What to Submit

    ticket_router.py

    DocumentRequired

    Format: .pdf, .doc, .docx, .rtf, .txt, .md

    • Write a Python 3 script that reads ticket data from a JSON file, applies the priority and routing rules above, and outputs the processed result

      • Your script should handle all the edge cases described in Section B of the README — the code itself should reflect your reasoning, not just the README

      • You are writing a working proof-of-concept — it does not need to be production-ready, but it must run correctly

      • Include at least two test inputs in the file (one expected-path case, one edge case) with output shown in comments or a docstring

    Sign in to upload files

    README.md

    DocumentRequired

    Format: .pdf, .doc, .docx, .rtf, .txt, .md

    • Section A — Design Decisions (300–500 words): Explain the choices you made in building your solution. What was the hardest part to get right? What trade-offs did you consider? What would you do differently with more time?

      • Section B — Edge Case Reasoning (no AI tools): In your own words, explain how your solution handles each of the three edge cases listed below. Do not use an AI assistant for this section — we want to understand how you think about the problem space, not how AI describes it.

    The three edge cases you must address in Section B:

    #Edge Case
    1A ticket where the description field is entirely absent from the JSON object (not present at all — not just an empty string)
    2A ticket where the customer_tier value is one your priority rules do not explicitly cover — for example, "enterprise" or "trial"
    3Two tickets with the same customer_id submitted within 60 seconds of each other — what does your system do, and why?

    Note: Section B must be written without AI assistance. Your code may handle these cases however you choose — what we're evaluating here is your independent reasoning about the problem, not the AI's.

    • Section C — AI Usage Log: See the mandatory template below — this section must appear verbatim.

    Section C — AI Usage Log (Mandatory)

    This is not a trick. We want to see how you work with AI — not whether you used it.

    In a short section of your README, document your AI collaboration process. For each significant interaction with an AI tool, briefly note:

    • What you asked the AI to help with
    • What it gave you
    • What you kept, changed, or rejected — and why

    Three interactions documented is sufficient. The log does not need to be exhaustive.

    Sign in to upload files

    Video Walkthrough

    Video · 3-5 minutesRequired

    Format: .mp4, .mov, .webm

    Video Submission Guide

    Your video should be 3–5 minutes. Structure it however makes sense to you — but hit these four points:


    What to Cover

    1. The problem and your solution One to two sentences on what you built.

    2. Walk through your script Explain your key design choices — not just what the code does line by line.

    3. The mandatory AI question Name a specific moment you redirected AI output.

    4. One thing you would do differently with more time Be specific.


    Communication note: Speak naturally. We're assessing your thinking process and ideas — not verbal polish. Filler words and pauses are normal and not scored against you.

    Sign in to upload files