feat(ai): answer grounded portfolio questions through a streaming assistant

Closed
#640 2 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript

Research direction

Start with parent issue #330 and trace the canonical portfolio content, then map the visitor-to-model-to-rendered-response path through the provider-neutral server boundary. Use the contract and component tests as the first validation point, and use Preview to demonstrate first token, grounded answer, refusal, cancellation, and navigation.

Written by the indexing model from the issue text.

Description

frontend integration needs-info p3-medium type:feature

Parent

#330

What to build

A visitor can open an accessible assistant, ask about the portfolio, receive a streaming answer grounded only in canonical portfolio content, follow relevant destinations, and get an honest refusal when the answer is unsupported.

Acceptance criteria

  • Derive assistant knowledge from canonical portfolio content instead of a second manually drifting biography.
  • Validate bounded message input and stream through a server-only provider boundary.
  • Render accessible launcher, dialog, messages, sample prompts, pending state, cancellation, clear history, and recovery UI.
  • Include relevant internal destinations while rejecting unsupported claims and out-of-scope requests.
  • Keep provider credentials server-only and environment-validated.
  • Cover grounded response, refusal, malformed input, streaming cancellation, and keyboard interaction.

Validation evidence

Provide contract/component tests and a Preview demonstration of first token, grounded answer, refusal, cancellation, and navigation.

Out of scope

Long-term conversation storage, autonomous actions, open-web retrieval, and provider-specific branding in the core interface.

Blocked by

None. This ticket can start immediately.

Ownership boundary

Own the named visitor-to-model-to-rendered-response slice through a provider-neutral server boundary. Grounding, safety, accessibility, and observability remain explicit contracts rather than prompt-only assumptions.

Coordination

Coordinate through #330. The grounded streaming path lands before hardening; production evaluation consumes both and must not replace deterministic contract tests.

Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
1h 18m
Merged PRs (30d)
586

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from fderuiter/deruiter.dev

All issues in fderuiter/deruiter.dev

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.