nikeshn commited on
Commit
628312d
Β·
verified Β·
1 Parent(s): 6efae71

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +189 -24
app.py CHANGED
@@ -181,48 +181,176 @@ def _fixed_social_answer(question: str) -> str | None:
181
  return None
182
 
183
  STAFF_DIRECTORY = [
 
184
  {
185
  "full_name": "Dr. Abdulla Al Hefeiti",
186
  "role": "Library Director / Assistant Provost, Libraries",
187
  "details": "He can help with strategic and institutional matters, library leadership, and partnerships. Email: abdulla.alhefeiti@ku.ac.ae | Phone: +971 2 312 3331",
188
  "tokens": ["abdulla", "hefeiti", "abdulla al hefeiti", "al hefeiti"],
189
  },
 
190
  {
191
  "full_name": "Nikesh Narayanan",
192
  "role": "Research & Access Services Librarian",
193
- "details": "He can help with research support, Open Access publishing, Khazna, ORCID, SciVal, Scopus, research impact, AI tools for research, bibliometrics, and LibGuides. Email: nikesh.narayanan@ku.ac.ae | Phone: +971 2 312 3980",
 
 
 
 
 
194
  "tokens": ["nikesh", "narayanan", "nikesh narayanan"],
195
  },
196
  {
197
  "full_name": "Rani Anand",
198
  "role": "E-Resources Librarian",
199
- "details": "She can help with database access problems, e-resources troubleshooting, remote access, vendor issues, patents, e-books, and bibliometrics. Email: rani.anand@ku.ac.ae | Phone: +971 2 312 3935",
 
 
 
 
200
  "tokens": ["rani", "anand", "rani anand"],
201
  },
202
  {
203
  "full_name": "Jason Fetty",
204
  "role": "Medical Librarian",
205
- "details": "He can help with medical and health sciences research, systematic reviews, PubMed, Embase, CINAHL, UpToDate, and clinical databases. Email: jason.fetty@ku.ac.ae | Phone: +971 2 312 4722",
 
 
 
 
206
  "tokens": ["jason", "fetty", "jason fetty"],
207
  },
208
  {
209
  "full_name": "Walter Brian Hall",
210
  "role": "Digital & Technology Services Librarian / Systems Librarian",
211
- "details": "He can help with library website, systems, technology, digital infrastructure, ORCID, STEAM, and coding. Email: walter.hall@ku.ac.ae | Phone: +971 2 312 3163",
 
 
 
 
 
 
212
  "tokens": ["walter", "brian", "hall", "walter brian hall", "walter hall", "brian hall"],
213
  },
 
214
  {
215
  "full_name": "Alia Al-Harrasi",
216
  "role": "Manager, Technical Services",
217
- "details": "She can help with cataloguing, metadata, acquisitions processing, and technical services. Email: alia.alharrasi@ku.ac.ae | Phone: +971 2 312 3180",
 
 
 
218
  "tokens": ["alia", "harrasi", "al-harrasi", "alia al harrasi", "alia al-harrasi"],
219
  },
220
  {
221
  "full_name": "Muna Ahmad Mohammad Al Blooshi",
222
  "role": "Manager, Public Services",
223
- "details": "She can help with circulation, general library services on Main Campus, and public services. Email: muna.alblooshi@ku.ac.ae | Phone: +971 2 312 4212",
 
 
 
224
  "tokens": ["muna", "blooshi", "al blooshi", "al-blooshi", "muna al blooshi"],
225
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  ]
227
 
228
  def _normalize_name_query(text: str):
@@ -426,36 +554,63 @@ def _build_role_aliases(staff: dict):
426
  manual = {
427
  "nikesh narayanan": [
428
  "research librarian", "access services librarian", "research and access services librarian",
429
- "research access librarian", "open access librarian", "orcid librarian",
430
- "research impact librarian", "bibliometrics librarian", "scholarly communication librarian"
 
431
  ],
432
  "walter brian hall": [
433
  "systems librarian", "system librarian", "library systems librarian",
434
  "digital services librarian", "technology services librarian", "website librarian",
435
- "technology librarian", "digital librarian"
 
 
 
436
  ],
437
  "rani anand": [
438
  "e resources librarian", "e-resources librarian", "electronic resources librarian",
439
- "database librarian", "database access librarian", "resource access librarian"
440
  ],
441
  "jason fetty": [
442
  "medical librarian", "health sciences librarian", "clinical librarian",
443
- "systematic review librarian", "pubmed librarian"
444
  ],
445
  "alia al harrasi": [
446
  "acquisitions librarian", "acquisition librarian", "technical services librarian",
447
  "technical service librarian", "collection development librarian", "cataloguing librarian",
448
- "metadata librarian"
449
  ],
450
  "muna ahmad mohammad al blooshi": [
451
  "public services librarian", "public service librarian", "circulation librarian",
452
- "access services manager", "service desk librarian"
453
  ],
454
  "dr abdulla al hefeiti": [
455
- "library director", "director of library", "director libraries", "assistant provost libraries"
456
  ],
457
  "abdulla al hefeiti": [
458
- "library director", "director of library", "director libraries", "assistant provost libraries"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  ],
460
  }
461
  aliases.extend(manual.get(key, []))
@@ -481,7 +636,12 @@ def _match_staff_role(question: str):
481
  return None
482
 
483
  role_trigger_re = re.compile(
484
- r"\b(librarian|library director|director|manager|services?|service|systems?|technology|website|research|access|open access|orcid|bibliometric|bibliometrics|public services?|technical services?|acquisitions?|collection development|catalogu(?:e|ing)|metadata|database|e resources|e-resources|electronic resources|medical|clinical|systematic review|circulation)\b"
 
 
 
 
 
485
  )
486
  if not role_trigger_re.search(ql):
487
  return None
@@ -544,16 +704,17 @@ def _staff_role_answer(staff: dict, question: str) -> str:
544
 
545
 
546
  GROUNDED_LIBRARY_MAP = {
547
- "ill": "interlibrary loan ILL document delivery request article request book unavailable not in collection borrow from another library",
548
  "fulltext": "full text libkey nomad article access pdf article not available no full text get full text request article",
549
  "primo": "PRIMO discovery catalog holdings publication finder library has this journal books articles search catalog",
550
  "circulation": "borrowing circulation renew renewal loan period due date hold request fines fees my library account checked out overdue",
551
  "research_help": "Ask a Librarian research consultation reference help subject guides research skills instruction tours workshops",
552
- "orcid_oa": "ORCID open access APC publishing research impact Scopus SciVal bibliometrics Nikesh Narayanan",
553
  "database_access": "database access e-resources remote access off campus login vendor issue Rani Anand e-books patents",
554
  "medical_help": "medical librarian Jason Fetty PubMed Embase CINAHL Cochrane UpToDate systematic review clinical databases",
555
- "systems_help": "Walter Brian Hall systems website technology digital services library systems coding STEAM",
556
- "acquisitions": "Alia Al-Harrasi acquisitions request title suggest a book collection development technical services cataloguing metadata",
 
557
  "rooms": "study room reserve a room room booking group study rooms libcal book room room reservation",
558
  "visitors_alumni": "visitors visitor registration alumni alumni services external visitors access policy",
559
  "printing": "printing scanning photocopying printers scanner copy services",
@@ -1273,11 +1434,15 @@ async def _interpret_semantics(question: str, history=None) -> dict:
1273
  if re.search(r"\b(database access|e-?resources?|remote access|off campus|off-campus|login issue|access problem|vendor issue)\b", ql):
1274
  add("database_access", "Rani Anand", "E-Resources", "database access")
1275
  if re.search(r"\b(orcid|open access|apc|article processing charge|research impact|bibliometric|bibliometrics|scival|scopus metrics?)\b", ql):
1276
- add("orcid_oa", "Nikesh Narayanan", "ORCID", "Open Access", "research impact")
 
 
1277
  if re.search(r"\b(medical librarian|pubmed help|embase|cinahl|cochrane|uptodate|systematic review|clinical databases?)\b", ql):
1278
  add("medical_help", "Jason Fetty", "Medical Librarian", "PubMed", "systematic review")
1279
- if re.search(r"\b(acquisitions?|collection development|suggest a book|request a title|new title request)\b", ql):
1280
- add("acquisitions", "Alia Al-Harrasi", "Acquisitions", "collection development")
 
 
1281
  if re.search(r"\b(circulation|borrow|renew|due date|fine|hold request|my library account|public services?)\b", ql):
1282
  add("circulation", "borrowing", "renewal", "My Library Account")
1283
  if re.search(r"\b(ask a librarian|research help|research consultation|reference help|consultation)\b", ql):
@@ -1285,7 +1450,7 @@ async def _interpret_semantics(question: str, history=None) -> dict:
1285
 
1286
  # Service / resource semantics
1287
  if re.search(r"\b(inter\s*library loan|interlibrary loan|\bill\b|document delivery|full text unavailable|no full text|can't get (an )?article|cannot get (an )?article|article not available)\b", ql):
1288
- add("ill", "Interlibrary Loan", "ILL", "document delivery")
1289
  add("fulltext", "full text", "LibKey Nomad", "article access")
1290
  if re.search(r"\b(primo|catalog|discovery|holdings|publication finder|does the library have)\b", ql):
1291
  add("primo", "PRIMO", "catalog", "Publication Finder")
 
181
  return None
182
 
183
  STAFF_DIRECTORY = [
184
+ # ── Library Leadership ───────────────────────────────────────────
185
  {
186
  "full_name": "Dr. Abdulla Al Hefeiti",
187
  "role": "Library Director / Assistant Provost, Libraries",
188
  "details": "He can help with strategic and institutional matters, library leadership, and partnerships. Email: abdulla.alhefeiti@ku.ac.ae | Phone: +971 2 312 3331",
189
  "tokens": ["abdulla", "hefeiti", "abdulla al hefeiti", "al hefeiti"],
190
  },
191
+ # ── Specialist Librarians ────────────────────────────────────────
192
  {
193
  "full_name": "Nikesh Narayanan",
194
  "role": "Research & Access Services Librarian",
195
+ "details": (
196
+ "He can help with research support, Khazna institutional repository, ORCID, "
197
+ "SciVal, Scopus, research impact, AI tools for research, bibliometrics, "
198
+ "scholarly communication, and LibGuides. "
199
+ "Email: nikesh.narayanan@ku.ac.ae | Phone: +971 2 312 3980"
200
+ ),
201
  "tokens": ["nikesh", "narayanan", "nikesh narayanan"],
202
  },
203
  {
204
  "full_name": "Rani Anand",
205
  "role": "E-Resources Librarian",
206
+ "details": (
207
+ "She can help with database access problems, e-resources troubleshooting, "
208
+ "remote access, vendor issues, patents, e-books, and bibliometrics. "
209
+ "Email: rani.anand@ku.ac.ae | Phone: +971 2 312 3935"
210
+ ),
211
  "tokens": ["rani", "anand", "rani anand"],
212
  },
213
  {
214
  "full_name": "Jason Fetty",
215
  "role": "Medical Librarian",
216
+ "details": (
217
+ "He can help with medical and health sciences research, systematic reviews, "
218
+ "PubMed, Embase, CINAHL, UpToDate, and clinical databases. "
219
+ "Email: jason.fetty@ku.ac.ae | Phone: +971 2 312 4722"
220
+ ),
221
  "tokens": ["jason", "fetty", "jason fetty"],
222
  },
223
  {
224
  "full_name": "Walter Brian Hall",
225
  "role": "Digital & Technology Services Librarian / Systems Librarian",
226
+ "details": (
227
+ "He can help with library website, systems, technology, digital infrastructure, "
228
+ "ORCID, STEAM, coding, Open Access publishing, APC funding, "
229
+ "general library services, and public services. "
230
+ "Email: walter.hall@ku.ac.ae | Open Access: openaccess@ku.ac.ae | "
231
+ "Phone: +971 2 312 3163 | Mobile: 052-905-1491"
232
+ ),
233
  "tokens": ["walter", "brian", "hall", "walter brian hall", "walter hall", "brian hall"],
234
  },
235
+ # ── Managers ────────────────────────────────────────────────────
236
  {
237
  "full_name": "Alia Al-Harrasi",
238
  "role": "Manager, Technical Services",
239
+ "details": (
240
+ "She can help with cataloguing, metadata, acquisitions processing, and technical services. "
241
+ "Email: alia.alharrasi@ku.ac.ae | Phone: +971 2 312 3180"
242
+ ),
243
  "tokens": ["alia", "harrasi", "al-harrasi", "alia al harrasi", "alia al-harrasi"],
244
  },
245
  {
246
  "full_name": "Muna Ahmad Mohammad Al Blooshi",
247
  "role": "Manager, Public Services",
248
+ "details": (
249
+ "She can help with circulation, general library services on Main Campus, and public services. "
250
+ "Email: muna.alblooshi@ku.ac.ae | Phone: +971 2 312 4212"
251
+ ),
252
  "tokens": ["muna", "blooshi", "al blooshi", "al-blooshi", "muna al blooshi"],
253
  },
254
+ # ── Library Information Senior Specialists / Specialists ─────────
255
+ {
256
+ "full_name": "Suaad Al Jneibi",
257
+ "role": "Library Information Senior Specialist",
258
+ "details": (
259
+ "She can help with Interlibrary Loan (ILL) requests, document delivery, "
260
+ "and general library questions. "
261
+ "Email: suaad.aljneibi@ku.ac.ae | Phone: +971 2 312 4278 | "
262
+ "Location: SAN Habshan Building, GF Room 5017AWS01"
263
+ ),
264
+ "tokens": [
265
+ "suaad", "jneibi", "al jneibi", "suaad al jneibi",
266
+ "suuad", "suaad jneibi",
267
+ ],
268
+ },
269
+ {
270
+ "full_name": "Shamsa Saeed Salem Alhosani",
271
+ "role": "Library Information Senior Specialist",
272
+ "details": (
273
+ "She can help with library cataloguing and general library assistance. "
274
+ "Email: shamsa.alhosani@ku.ac.ae | Phone: +971 2 312 3156 | "
275
+ "Location: SAN Habshan Building, GF Room 5013WS04"
276
+ ),
277
+ "tokens": [
278
+ "shamsa", "alhosani", "shamsa alhosani",
279
+ "shamsa saeed", "shamsa salem", "shamsa saeed salem alhosani",
280
+ ],
281
+ },
282
+ {
283
+ "full_name": "William Nathaniel Hutchinson III",
284
+ "role": "Library Information Senior Specialist",
285
+ "details": (
286
+ "He can help with library cataloguing and general library assistance. "
287
+ "Email: william.hutchinsoniii@ku.ac.ae | Phone: +971 2 312 3966"
288
+ ),
289
+ "tokens": [
290
+ "william", "hutchinson", "william hutchinson",
291
+ "william nathaniel", "hutchinson iii", "william hutchinson iii",
292
+ ],
293
+ },
294
+ {
295
+ "full_name": "Shaikha Mohamed Saleem Almenhali",
296
+ "role": "Library Information Specialist",
297
+ "details": (
298
+ "She can help with general library assistance. "
299
+ "Email: shaikha.almenhali@ku.ac.ae | Phone: +971 2 312 5874"
300
+ ),
301
+ "tokens": [
302
+ "shaikha", "almenhali", "shaikha almenhali",
303
+ "shaikha mohamed", "shaikha saleem", "shaikha mohamed saleem almenhali",
304
+ ],
305
+ },
306
+ {
307
+ "full_name": "Wilfredo Arcilla",
308
+ "role": "Library Information Specialist",
309
+ "details": (
310
+ "He can help with general library assistance. "
311
+ "Email: wilfredo.arcilla@ku.ac.ae | Phone: +971 2 312 3323 | "
312
+ "Location: SAN Habshan Building, GF Room 5011WS05"
313
+ ),
314
+ "tokens": [
315
+ "wilfredo", "arcilla", "wilfredo arcilla",
316
+ ],
317
+ },
318
+ {
319
+ "full_name": "Zainab Al Ali",
320
+ "role": "Library Information Senior Specialist",
321
+ "details": (
322
+ "She can help with general library assistance. "
323
+ "Email: zainab.alali@ku.ac.ae | Phone: +971 2 312 4321 | "
324
+ "Location: SAN Habshan Building, GF Room 5017AWS02"
325
+ ),
326
+ "tokens": [
327
+ "zainab", "al ali", "zainab al ali", "alali", "zainab alali",
328
+ ],
329
+ },
330
+ {
331
+ "full_name": "Khawla Alhemeiri",
332
+ "role": "Library Information Senior Specialist",
333
+ "details": (
334
+ "She can help with general library assistance. "
335
+ "Email: khawla.alhemeiri@ku.ac.ae | Phone: +971 2 312 3959 | "
336
+ "Location: Main E Building, 1st Floor, Room E01035"
337
+ ),
338
+ "tokens": [
339
+ "khawla", "alhemeiri", "khawla alhemeiri",
340
+ ],
341
+ },
342
+ {
343
+ "full_name": "Meera K. Alnaqbi",
344
+ "role": "Library Information Specialist",
345
+ "details": (
346
+ "She can help with acquisitions, new title requests, collection development, "
347
+ "and general library assistance. "
348
+ "Email: meera.alnaqbi@ku.ac.ae | Phone: +971 2 312 3375"
349
+ ),
350
+ "tokens": [
351
+ "meera", "alnaqbi", "meera alnaqbi", "meera k alnaqbi",
352
+ ],
353
+ },
354
  ]
355
 
356
  def _normalize_name_query(text: str):
 
554
  manual = {
555
  "nikesh narayanan": [
556
  "research librarian", "access services librarian", "research and access services librarian",
557
+ "research access librarian", "orcid librarian",
558
+ "research impact librarian", "bibliometrics librarian", "scholarly communication librarian",
559
+ "khazna librarian", "scival librarian",
560
  ],
561
  "walter brian hall": [
562
  "systems librarian", "system librarian", "library systems librarian",
563
  "digital services librarian", "technology services librarian", "website librarian",
564
+ "technology librarian", "digital librarian",
565
+ "open access librarian", "open access", "oa librarian",
566
+ "apc librarian", "article processing charge",
567
+ "general librarian", "public services librarian",
568
  ],
569
  "rani anand": [
570
  "e resources librarian", "e-resources librarian", "electronic resources librarian",
571
+ "database librarian", "database access librarian", "resource access librarian",
572
  ],
573
  "jason fetty": [
574
  "medical librarian", "health sciences librarian", "clinical librarian",
575
+ "systematic review librarian", "pubmed librarian",
576
  ],
577
  "alia al harrasi": [
578
  "acquisitions librarian", "acquisition librarian", "technical services librarian",
579
  "technical service librarian", "collection development librarian", "cataloguing librarian",
580
+ "metadata librarian",
581
  ],
582
  "muna ahmad mohammad al blooshi": [
583
  "public services librarian", "public service librarian", "circulation librarian",
584
+ "access services manager", "service desk librarian",
585
  ],
586
  "dr abdulla al hefeiti": [
587
+ "library director", "director of library", "director libraries", "assistant provost libraries",
588
  ],
589
  "abdulla al hefeiti": [
590
+ "library director", "director of library", "director libraries", "assistant provost libraries",
591
+ ],
592
+ # ── New staff role aliases ──────────────────────────────────
593
+ "suaad al jneibi": [
594
+ "ill librarian", "interlibrary loan librarian", "ill specialist",
595
+ "ill contact", "document delivery", "ill staff",
596
+ ],
597
+ "shamsa saeed salem alhosani": [
598
+ "cataloguing specialist", "cataloging specialist", "cataloguer",
599
+ "library cataloguing", "library cataloging",
600
+ ],
601
+ "william nathaniel hutchinson iii": [
602
+ "cataloguing specialist", "cataloging specialist", "cataloguer",
603
+ "library cataloguing", "library cataloging",
604
+ ],
605
+ "meera k alnaqbi": [
606
+ "acquisitions specialist", "acquisitions staff", "acquisition specialist",
607
+ "new title request", "book request", "purchase request",
608
+ "collection development specialist",
609
+ ],
610
+ "meera k. alnaqbi": [
611
+ "acquisitions specialist", "acquisitions staff", "acquisition specialist",
612
+ "new title request", "book request", "purchase request",
613
+ "collection development specialist",
614
  ],
615
  }
616
  aliases.extend(manual.get(key, []))
 
636
  return None
637
 
638
  role_trigger_re = re.compile(
639
+ r"\b(librarian|library director|director|manager|services?|service|systems?|technology|website|"
640
+ r"research|access|open access|orcid|bibliometric|bibliometrics|public services?|"
641
+ r"technical services?|acquisitions?|collection development|catalogu(?:e|ing)|metadata|"
642
+ r"database|e resources|e-resources|electronic resources|medical|clinical|systematic review|"
643
+ r"circulation|interlibrary loan|ill|document delivery|"
644
+ r"cataloging|cataloguer|general library|general service)\b"
645
  )
646
  if not role_trigger_re.search(ql):
647
  return None
 
704
 
705
 
706
  GROUNDED_LIBRARY_MAP = {
707
+ "ill": "interlibrary loan ILL document delivery request article request book unavailable not in collection borrow from another library Suaad Al Jneibi",
708
  "fulltext": "full text libkey nomad article access pdf article not available no full text get full text request article",
709
  "primo": "PRIMO discovery catalog holdings publication finder library has this journal books articles search catalog",
710
  "circulation": "borrowing circulation renew renewal loan period due date hold request fines fees my library account checked out overdue",
711
  "research_help": "Ask a Librarian research consultation reference help subject guides research skills instruction tours workshops",
712
+ "orcid_oa": "ORCID open access APC publishing research impact Scopus SciVal bibliometrics Walter Brian Hall openaccess@ku.ac.ae",
713
  "database_access": "database access e-resources remote access off campus login vendor issue Rani Anand e-books patents",
714
  "medical_help": "medical librarian Jason Fetty PubMed Embase CINAHL Cochrane UpToDate systematic review clinical databases",
715
+ "systems_help": "Walter Brian Hall systems website technology digital services library systems coding STEAM open access APC",
716
+ "acquisitions": "Alia Al-Harrasi Meera Alnaqbi acquisitions request title suggest a book collection development technical services cataloguing metadata",
717
+ "cataloguing": "Shamsa Alhosani William Hutchinson Alia Al-Harrasi cataloguing cataloging metadata technical services",
718
  "rooms": "study room reserve a room room booking group study rooms libcal book room room reservation",
719
  "visitors_alumni": "visitors visitor registration alumni alumni services external visitors access policy",
720
  "printing": "printing scanning photocopying printers scanner copy services",
 
1434
  if re.search(r"\b(database access|e-?resources?|remote access|off campus|off-campus|login issue|access problem|vendor issue)\b", ql):
1435
  add("database_access", "Rani Anand", "E-Resources", "database access")
1436
  if re.search(r"\b(orcid|open access|apc|article processing charge|research impact|bibliometric|bibliometrics|scival|scopus metrics?)\b", ql):
1437
+ add("orcid_oa", "Walter Brian Hall", "ORCID", "Open Access", "APC", "openaccess@ku.ac.ae")
1438
+ if re.search(r"\b(research support|research impact|bibliometrics|scival|khazna|scholarly communication|libguides)\b", ql):
1439
+ add("research_help", "Nikesh Narayanan", "research support", "bibliometrics", "Khazna")
1440
  if re.search(r"\b(medical librarian|pubmed help|embase|cinahl|cochrane|uptodate|systematic review|clinical databases?)\b", ql):
1441
  add("medical_help", "Jason Fetty", "Medical Librarian", "PubMed", "systematic review")
1442
+ if re.search(r"\b(acquisitions?|collection development|suggest a book|request a title|new title request|purchase request|book request)\b", ql):
1443
+ add("acquisitions", "Alia Al-Harrasi", "Meera Alnaqbi", "Acquisitions", "collection development")
1444
+ if re.search(r"\b(catalogu(?:e|ing)|cataloging|metadata|cataloguer)\b", ql):
1445
+ add("cataloguing", "Shamsa Alhosani", "William Hutchinson", "cataloguing", "cataloging", "metadata")
1446
  if re.search(r"\b(circulation|borrow|renew|due date|fine|hold request|my library account|public services?)\b", ql):
1447
  add("circulation", "borrowing", "renewal", "My Library Account")
1448
  if re.search(r"\b(ask a librarian|research help|research consultation|reference help|consultation)\b", ql):
 
1450
 
1451
  # Service / resource semantics
1452
  if re.search(r"\b(inter\s*library loan|interlibrary loan|\bill\b|document delivery|full text unavailable|no full text|can't get (an )?article|cannot get (an )?article|article not available)\b", ql):
1453
+ add("ill", "Suaad Al Jneibi", "Interlibrary Loan", "ILL", "document delivery")
1454
  add("fulltext", "full text", "LibKey Nomad", "article access")
1455
  if re.search(r"\b(primo|catalog|discovery|holdings|publication finder|does the library have)\b", ql):
1456
  add("primo", "PRIMO", "catalog", "Publication Finder")