-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprogram_finder_routing.json
More file actions
177 lines (177 loc) · 6.62 KB
/
program_finder_routing.json
File metadata and controls
177 lines (177 loc) · 6.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
{
"program_finder": {
"description": "MVP Program Finder: simple filters (degree, language), one interests input, GPT evaluation, up to 3 suggestions.",
"detect_keywords": {
"en": [
"program finder",
"find programs",
"study program",
"which program",
"recommend a program",
"compare programs",
"programs for me",
"discover programs"
],
"de": [
"programmfinder",
"studiengang finden",
"studiengangsuche",
"studienangebot",
"welcher studiengang",
"programme vergleichen",
"passender studiengang",
"studiengänge entdecken"
]
},
"questions_set": {
"degree_type": {
"type": "enum",
"values": ["bachelor", "master"],
"questions": {
"en": "🦉 Which degree level are you interested in: Bachelor or Master?"
},
"slot": "degree_type"
},
"language_constraint": {
"type": "enum",
"values": ["english-only", "german-only", "either"],
"questions": {
"en": "🦉 Which language of instruction do you prefer or require? (German, English, or either)"
},
"slot": "language_constraint",
"notes": "Do not assume language knowledge; always ask explicitly."
},
"field_interest": {
"type": "free-text",
"questions": {
"en": "🦉 What field or interests should the program fit?"
},
"slot": "field_interest"
}
},
"fields": {
"title": {
"source": "study_program_webpages.json",
"action": "Extract EXACT value of `title` from the candidate object. Do not rewrite or translate."
},
"degree": {
"source": "study_program_webpages.json",
"action": "Extract the value of `Degree` inside `sections.headings.tables.rows` from the SAME candidate object."
},
"language": {
"source": "study_program_webpages.json",
"action": "Extract the value of `Language of instruction` inside `sections.headings.tables.rows` from the SAME candidate object."
},
"admission": {
"source": "study_program_webpages.json",
"action": "Extract the value of `Admission` inside `sections.headings.tables.rows` from the SAME candidate object."
},
"program_overview": {
"source": "study_program_webpages.json",
"action": "Summarize factual `paragraphs` under the `Program overview` heading from the SAME candidate object."
},
"acquired_skills": {
"source": "study_program_webpages.json",
"action": "Summarize factual `paragraphs` under the `Acquired skills` heading from the SAME candidate object, if present."
}
},
"actions": {
"scan_the_programs": {
"description": "Load all program objects from study_program_webpages.json as candidates."
},
"filter_by_degree": {
"description": "Keep candidates whose `degree` matches slot `degree_type` (bachelor/master). Read `degree` from fields.degree of the SAME object."
},
"filter_by_language": {
"description": "Apply slot `language_constraint`: english-only → include programs where `language` contains English (or bilingual); german-only → include programs where `language` contains German (or bilingual); either → no filter."
},
"gpt_evaluate": {
"description": "Let GPT, using slot `field_interest` and candidate fields (title, program_overview, acquired_skills), decide which programs fit best. No explicit ranking formula; choose up to 3 results."
},
"present_table": {
"description": "Render a bullet list for up to 3 programs (0–3 allowed) using fields: `title`.",
"constraints": {
"use_exact_values": ["title"],
"validation": "Before rendering each row, assert row.title === candidate.title; if not, drop the row."
}
},
"disclaimer": {
"description": "Present disclaimer about all studies offered by TU Berlin."
},
"present_details": {
"description": "Show concise details for the selected program using fields: `title` plus a short summary from `program_overview`.",
"constraints": {
"use_exact_values": ["title"]
}
},
"present_comparison_table": {
"description": "Render a bullet list comparing 2–3 selected programs using fields: `title`.",
"constraints": {
"use_exact_values": ["title"]
}
},
"confirm_reset": {
"description": "Ask user to confirm restarting Program Finder.",
"phrases": {
"en": "Do you want to restart Program Finder?"
}
},
"clear_state": {
"description": "Clear collected slots and transient state."
},
"restart_flow": {
"description": "Return to the first question in questions_set (degree_type)."
},
"handoff_to_general_help": {
"description": "Exit Program Finder and route to general help.",
"phrases": {
"en": "Switching to general TU Berlin help to answer your question."
}
}
},
"intents": {
"program.find": {
"notes": "Ask minimal questions, apply simple filters, let GPT evaluate fit, and present up to three programs.",
"ask": ["degree_type", "language_constraint", "field_interest"],
"actions": [
"scan_the_programs",
"filter_by_degree",
"filter_by_language",
"gpt_evaluate",
"present_table"
],
"present": {
"fields": ["title"]
}
},
"program.detail": {
"notes": "Provide concise info for a selected program.",
"inputs": ["selected_program"],
"actions": ["present_details"],
"present": {
"fields": ["title", "degree", "duration", "admission"]
}
},
"program.compare": {
"notes": "Compare 2–3 selected programs side by side with verified facts. Enforce count: 2–3.",
"inputs": ["selected_programs"],
"actions": ["present_comparison_table"],
"present": {
"fields": ["title", "degree", "duration", "admission"]
},
"constraints": {
"selected_programs_count_min": 2,
"selected_programs_count_max": 3
}
},
"program.reset": {
"notes": "Clear collected slots and restart Program Finder.",
"actions": ["confirm_reset", "clear_state", "restart_flow"]
},
"program.exit": {
"notes": "Exit Program Finder and hand off to general help.",
"actions": ["handoff_to_general_help"]
}
}
}
}