What this demo proves
- Answers are trustworthy. A confident match returns the office’s approved wording verbatim. Comparisons and eligibility checks are rendered from database fields, so the model never types a dollar amount or a GPA.
- Staff can change it themselves. Q&As, program facts, colours and every visible string are editable in Admin, with draft/publish and one-click revert.
- It embeds two ways. The panel on the right is the exact
/embedroute Google Sites loads. The floating button in the corner of this page is the same widget, loaded bywidget.js— which only works where you can add a script tag.
Try these
- “Do I need a faculty mentor?” → the office’s approved answer, word for word
- “Compare CRSP, BFF and CSTEP Scholars on stipend, GPA and length” → a table whose numbers come from the database, not the model
- “I’m an international student with a 2.7 GPA, what can I apply to?” → per-program eligibility checklist
- “I’ve never done research and can only commit one semester” → a composed answer with its sources shown
- “Where do I park on campus?” → honest miss + how to reach a human
Putting it on Google Sites
Insert → Embed. Both tabs work — this route sends frame-ancestors allowing Google’s sandbox origins, and no X-Frame-Options.
By URL — simplest
Paste the embed URL, then drag the element to about 420 × 640 in the Sites editor.
https://bmcc-research-bot.aitechhub.tech/embed?key=demo&mode=inlineEmbed code — recommended
Same result, but you set the height and border explicitly instead of dragging.
<iframe
src="https://bmcc-research-bot.aitechhub.tech/embed?key=demo&mode=inline"
title="BMCC Research Office Assistant"
width="100%"
height="640"
style="border:1px solid #D7DEE5; border-radius:12px; display:block;"
></iframe>Google Sites is HTTPS, so a localhost URL won’t reliably load there — use a deployed URL or a tunnel to test it for real. And the widget stays inside the box you place. Nothing escapes Google’s sandboxed iframe: not a floating bubble, and not fullscreen — measured on a published Site, its wrapper grants no fullscreen permission. That is why the always-open panel is the default here. A launcher (mode=bubble) would cost the same box, plus the scrolling it takes to notice the button.
On a site whose HTML you control
One script tag, and the chat becomes a button that floats over the page and follows the scroll — the thing Google Sites cannot do. The panel still runs in a cross-origin iframe, so the host page can never read the conversation.
<script src="https://bmcc-research-bot.aitechhub.tech/widget.js" data-key="demo" defer></script>Options are data- attributes: key, position, offset, z-index. The page can also open it from its own button with ResearchOfficeChat.open(). See the README.
BMCC Office of Research AI Assistant
Research Office Assistant