← Projects

Interactive demo

Portfolio assistant

Ask about EJ’s experience and projects, then follow the sources. The chat shows the currently active response mode.

Ask about EJ

Your guide to EJ’s work

Portfolio search

Hi, welcome! I’m EJ’s portfolio guide. I can give you a quick overview of his background, walk you through a project, or share a little about his interests outside work. Where would you like to start?

0/500

Grounded in EJ’s portfolio, with links to learn more.

About this chat & privacy

This chat stays in this tab. In AI mode, questions are sent to OpenAI. Please avoid sharing personal information.

Try these interactions

  • Ask for an experience summary and open its sources.
  • Ask “What can I find here?” and reply “yes” to the overview offer.
  • Ask about the weather to see how it redirects unrelated questions.

How it works

  1. Validate the question and recent follow-up context.
  2. Retrieve relevant entries from public portfolio content.
  3. Return a curated summary or validated excerpts with source links.

The React and TypeScript interface calls a Next.js API. Search mode uses keywords and intent rules. In optional AI mode, the server validates OpenAI-selected excerpts against the retrieved source text.

Validation and limitations

Automated checks cover follow-ups, off-topic requests, source validation, request limits, and fallback when AI fails. Retrieval does not use embeddings and may miss unfamiliar phrasing. Unpublished results are not available to the assistant.

Rate limits apply per server process; a multi-instance deployment needs shared limits. Live model quality requires separate API configuration and evaluation.

Portfolio Assistant Demo | EJ Caliwag