Proposed redesign โ eliminates full confirm form, branches on syllabus archetype
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
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
| Input | Source | Confidence | Required for |
|---|---|---|---|
| Topics list | Parsed from syllabus | High | Module titles |
| Topic count | Parsed from syllabus | High | Week distribution |
| Meeting days | NOT in syllabus | None โ must ask | Calendar mapping, meetings/week |
| Semester length | Maybe from term label | Medium | Total weeks to fill |
| Semester start date | Maybe from term label | Low | Calendar date mapping |
| Topics per week | NOT in syllabus | None โ LLM infers | Distribution algorithm |
| Topic grouping | NOT in syllabus | None โ LLM infers | Combining related topics |
| Reading/exam weeks | Sometimes in syllabus | Low | Gaps in schedule |
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