Paddock Setup Flow

Proposed redesign โ€” eliminates full confirm form, branches on syllabus archetype

Student input needed
Success / proceed
Error / recovery
Synthesis step
Action / re-process
flowchart TD
    START([Student drops syllabus]) --> EXTRACT[Text extraction]
    EXTRACT --> DETECT{Auto-detect format}

    DETECT -->|"high confidence"| PARSE_OK[LLM parse w/ detected format]
    DETECT -->|"low confidence"| PARSE_GUESS[LLM parse w/ best guess]

    PARSE_OK --> STREAM[Stream modules to client]
    PARSE_GUESS --> STREAM

    STREAM --> EVAL{Evaluate parse quality}

    EVAL -->|"Dated: real dates\n6+ milestones\ndays derivable"| DATED
    EVAL -->|"Numbered: week labels\n6+ milestones"| NUMBERED
    EVAL -->|"Topic-based:\ntopics only\nno temporal structure"| TOPIC
    EVAL -->|"Parse failed:\n< 4 milestones\nor garbled"| FAILED

    subgraph dated [" "]
        direction TB
        DATED["โœ… DATED SYLLABUS\nModules with real dates\nMeeting days: pre-filled\nTitle: shown in header"]
        DATED --> DATED_BTN["[Looks right]"]
    end

    subgraph numbered [" "]
        direction TB
        NUMBERED["๐Ÿ“… NUMBERED SYLLABUS\nModules with week numbers\nMeeting days: ask if not detected\nTitle: shown in header"]
        NUMBERED --> NUMBERED_BTN["[Looks right]"]
    end

    subgraph topic [" "]
        direction TB
        TOPIC["๐Ÿ“‹ TOPIC-BASED SYLLABUS\nWe found N topics\nNo weeks or dates\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\nMeeting days: REQUIRED\nSemester length: REQUIRED"]
        TOPIC --> TOPIC_BTN["[Build my plan]"]
        TOPIC_BTN --> SYNTH["๐Ÿ”ฎ Synthesize week plan\nDistribute topics across weeks\nLLM groups related topics\nInsert reading weeks"]
        SYNTH --> VALIDATE["Show synthesized plan\nWk 1: Negligence\nWk 2: Strict Liability\nWk 3: Products + Vicarious\n..."]
        VALIDATE -->|"Looks right"| TOPIC_DONE[โœ“]
        VALIDATE -->|"Adjust"| EDIT["Manual week editor\nDrag topics\nSplit / merge weeks"]
        EDIT --> TOPIC_DONE
    end

    subgraph failed [" "]
        direction TB
        FAILED["โš ๏ธ PARSE FAILED\nHmm, we had trouble.\nIs your syllabus a:\nยท Dated schedule\nยท Week-by-week list\nยท Topic outline"]
        FAILED -->|"Try again\nw/ hint"| REPARSE[Re-parse with\nexplicit format]
        FAILED -->|"Different file"| RESTART[โ†ฉ Back to upload]
    end

    DATED_BTN --> CREATE
    NUMBERED_BTN --> CREATE
    TOPIC_DONE --> CREATE
    REPARSE --> STREAM
    RESTART --> START

    CREATE[["๐Ÿš€ CREATE WORKSPACE\n+ START ENRICHMENT\n(70-200s background)"]]

    CREATE --> WHERE{Where to send student?}
    WHERE -->|"Option A\n(recommended)"| WORKSPACE["โ†’ /paddock/courseId\nCourse workspace\nWeek plan visible\nScenarios fill in live"]
    WHERE -->|"Option B"| DESK["โ†’ /dashboard\nCourseFormingDesk\nPulsing stage indicators"]

    style DATED fill:#d1fae5,stroke:#10b981,color:#064e3b
    style DATED_BTN fill:#d1fae5,stroke:#10b981,color:#064e3b
    style NUMBERED fill:#fef3c7,stroke:#f59e0b,color:#78350f
    style NUMBERED_BTN fill:#fef3c7,stroke:#f59e0b,color:#78350f
    style TOPIC fill:#fef3c7,stroke:#f59e0b,color:#78350f
    style TOPIC_BTN fill:#fef3c7,stroke:#f59e0b,color:#78350f
    style VALIDATE fill:#fef3c7,stroke:#f59e0b,color:#78350f
    style FAILED fill:#fee2e2,stroke:#ef4444,color:#7f1d1d
    style REPARSE fill:#dbeafe,stroke:#3b82f6,color:#1e3a5a
    style RESTART fill:#dbeafe,stroke:#3b82f6,color:#1e3a5a
    style SYNTH fill:#ede9fe,stroke:#8b5cf6,color:#3b0764
    style EDIT fill:#dbeafe,stroke:#3b82f6,color:#1e3a5a
    style CREATE fill:#d1fae5,stroke:#10b981,color:#064e3b
    style WORKSPACE fill:#d1fae5,stroke:#10b981,color:#064e3b
    style DESK fill:#fef3c7,stroke:#f59e0b,color:#78350f
    style TOPIC_DONE fill:#d1fae5,stroke:#10b981,color:#064e3b

The Topic-Based Problem

What the syllabus gives us vs. what we need to build a week plan

flowchart LR
    subgraph input ["What the syllabus gives us"]
        direction TB
        T1["Negligence"]
        T2["Strict Liability"]
        T3["Products Liability"]
        T4["Vicarious Liability"]
        T5["Damages"]
        T6["Defenses"]
        T7["Causation"]
        T8["Duty of Care"]
        T9["Emotional Distress"]
        T10["Economic Torts"]
        T11["Review"]
    end

    subgraph output ["What we need to build"]
        direction TB
        W1["Wk 1 ยท Mon 1/13\nNegligence"]
        W2["Wk 2 ยท Mon 1/20\nStrict Liability"]
        W3["Wk 3 ยท Mon 1/27\nProducts + Vicarious"]
        W4["Wk 4 ยท Mon 2/3\nDamages + Defenses"]
        W5["..."]
        W14["Wk 14 ยท Mon 4/14\nReview"]
    end

    subgraph missing ["Missing inputs โ€” must ask student"]
        direction TB
        M1["Meeting days?\nMon/Wed? Tue/Thu?"]
        M2["Semester length?\n14 weeks? 15?"]
        M3["Start date?\nJan 13? Jan 21?"]
    end

    input -->|"LLM groups\n+ distributes"| output
    missing -->|"required for\ncalendar mapping"| output

    style input fill:#1e1e2e,stroke:#3a3a5a,color:#c0c0d0
    style output fill:#1a2e1a,stroke:#2a5a2a,color:#a0d0a0
    style missing fill:#2e1a1a,stroke:#5a2a2a,color:#d0a0a0

Missing Inputs for Topic-Based Syllabi

InputSourceConfidenceRequired for
Topics listParsed from syllabusHighModule titles
Topic countParsed from syllabusHighWeek distribution
Meeting daysNOT in syllabusNone โ€” must askCalendar mapping, meetings/week
Semester lengthMaybe from term labelMediumTotal weeks to fill
Semester start dateMaybe from term labelLowCalendar date mapping
Topics per weekNOT in syllabusNone โ€” LLM infersDistribution algorithm
Topic groupingNOT in syllabusNone โ€” LLM infersCombining related topics
Reading/exam weeksSometimes in syllabusLowGaps in schedule

Key Design Questions

flowchart TD
    Q1{"When to ask\nmeeting days?"}
    Q1 -->|"Before parse"| A1["Parser can use days\nfor week mapping\nBUT student hasn't seen\nanything yet"]
    Q1 -->|"After stream"| A2["Show what we found first\nAsk only what's missing\nPre-fill if detected\nBETTER for dated/numbered"]
    Q1 -->|"During stream"| A3["Ask while modules appear\nParallel UX\nBUT parse already running"]

    Q2{"How to verify\nformat was right?"}
    Q2 -->|"Implicit"| B1["Student sees modules\nIf they look right โ†’ format OK\nIf garbled โ†’ offer re-parse"]
    Q2 -->|"Explicit"| B2["Ask: dated / numbered / topic?\nStudents may not understand\nBUT catches edge cases"]
    Q2 -->|"Hybrid"| B3["Show result + ask only\nif confidence is low\nBEST of both"]

    Q3{"What about\npartially temporal\nsyllabi?"}
    Q3 -->|"Common case"| C1["Weeks 1-5 mapped\nTopics after midterm: TBD\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\nSome structure + some floating"]
    Q3 -->|"Approach"| C2["Parse the structured part\nSynthesize the rest\nShow combined plan\nMark synthesized weeks"]

    style Q1 fill:#1a1a24,stroke:#6366f1,color:#c0c0ff
    style Q2 fill:#1a1a24,stroke:#6366f1,color:#c0c0ff
    style Q3 fill:#1a1a24,stroke:#6366f1,color:#c0c0ff
    style A2 fill:#1a2e1a,stroke:#2a5a2a,color:#a0d0a0
    style B3 fill:#1a2e1a,stroke:#2a5a2a,color:#a0d0a0
    style C2 fill:#1a2e1a,stroke:#2a5a2a,color:#a0d0a0