Designed to be used with the keyboard, the screen reader, or the voice.
The site is built on semantic HTML — landmark elements (header, nav, main, section[id], footer), heading hierarchy, and ARIA labels for non-text controls. Every interactive element is reachable by Tab, and the focus ring (a 2px cityu-red outline at 2px offset) respects the keyboard path.
What we've checked:
- Keyboard navigation through hero · Ask shell · faculty discovery · programme list · all modals.
- Body-text contrast: ink #0A0E1A on paper #FAF8F3 ≈ 17:1; cityu-red #B1092B on paper ≈ 7.0:1. Both clear WCAG 2.1 AAA for normal text.
prefers-reduced-motionis honored — animations collapse to ~0ms when the OS-level preference is set.- Voice input (Web Speech API) on every Ask surface. Hidden if the browser doesn't expose it.
- Mobile bottom-sheet modals for the avatars, with the keyboard escape path preserved.
Known limitations we're not pretending we've solved:
- The faculty filter chip strip on phone widths uses horizontal scroll. Keyboard-friendly, but harder for very-low-vision users — a vertical-stack alternative is on the roadmap.
- Avatar modal focus trap is light: focus returns to the launcher on close, but isn't aggressively contained while open.
- The streaming AI answer is read by a live region (
aria-live="polite") — but very long answers may still feel verbose to a screen reader. We're considering an "answer ready" announcement mode.
Found something we missed? Email isgo@cityu.edu.hk with the page, the device/AT, and what failed. We'll respond within five working days.
For City University of Hong Kong's institutional accessibility commitment — covering buildings, examinations, and university-wide services — see CityU's master legal & policy page ↗.
What this site stores, what it sends, what it doesn't do.
What this site stores on your device — only two keys in localStorage, scoped to your browser, never sent anywhere by us:
is.ask.recent— your last three ask-shell questions, so a returning visit shows them as ghost previews. Cleared by the "clear ↺" button in the Ask shell, or any time you clear browser storage.is.lang— your language preference (en / 繁 / 简). Cleared the same way.
What this site does NOT do in the current build:
- No tracking cookies. We don't write to
document.cookieat all. - No analytics scripts (no Google Analytics, no Hotjar, no Mixpanel, no Meta pixel — verifiable in the page source).
- No geolocation requests.
- No service worker, no background sync.
- No persistent server-side log of who asked what — your Q&A is generated live and not stored beyond the request lifecycle.
What gets sent when you use the AI assistant: your question text and any prior conversation turns from the same session are POSTed to our backend, which forwards them to Alibaba Cloud's Qwen API (DashScope) for generation. The response — including source-citation URLs — streams back to your browser. Standard HTTP request metadata (your IP address, user-agent, time) is visible to whichever process logs HTTP traffic in the deployed environment; we don't log it ourselves at the application layer.
External resources we load: the Tailwind CSS CDN (cdn.tailwindcss.com), Google Fonts (fonts.googleapis.com, fonts.gstatic.com), and scholar headshots from cb.cityu.edu.hk/portfolio/photos/. These are CDN fetches — their servers see your IP and user-agent, like any image or stylesheet load. We don't pass them anything else about you.
If this site is later deployed inside CityU's managed environment, additional access logging, retention, and analytics may apply per CityU's master privacy policy. Whatever those are, they take precedence over this page; check CityU's master policies ↗ for the binding version.
Questions, requests, complaints about data handling on this site: isgo@cityu.edu.hk.
The AI's job is to be honest about what it knows. Yours is to verify the citations.
Every answer the assistant gives carries an "AI-generated · grounded in departmental sources" watermark and a list of source URLs. Each [1] [2] in the answer text refers to a specific page the model read. The model is instructed to refuse a question rather than guess if no source supports the answer.
That said:
- The model can still misread, misattribute, or compress in ways that subtly distort the source. For high-stakes decisions — applying for a programme, contacting a supervisor, attending an event — open the cited source and confirm.
- "Grounded" means the answer is constrained to public departmental pages indexed in our knowledge base. It does not mean the answer is exhaustive — pages that aren't yet indexed (or pages behind Imperva / login walls we couldn't reach) are invisible to the assistant.
- Programme avatars and scholar avatars only see the subset of pages relevant to their scope. They will say so if a question falls outside what they can read.
- Operational logistics (current fees, application deadlines, room assignments) change faster than indexing. Treat them as advisory, then confirm with the named human contact before relying on them.
Authoritative sources for departmental information remain CityU's official channels: cb.cityu.edu.hk/en/is for departmental pages and scholars.cityu.edu.hk for individual academic profiles. This homepage is a redesign — when this page and an official page disagree, the official page wins.
Reporting an answer that's wrong: the 🐛 button beside every AI answer. Or email isgo@cityu.edu.hk with the question, the answer, and what was off — that's how we tighten the system.