
Inside the project
Explanatory diagram · Project workflow
Find the evidence. Then write the answer.
The assistant separates source material, search, and answer generation. This diagram shows the implementation in this portfolio.
- 01
Curated knowledge
Markdown facts become indexed passages through an authenticated ingestion pipeline.
- 02
Hybrid search
Vectorize matches meaning. D1 matches keywords. The server combines their rankings to select relevant passages.
- 03
Grounded response
OpenRouter writes the answer from selected context. The interface streams the response with source links. Guarded tools handle contact actions separately.
Evidence before generation
Search selected passages. Combine semantic and keyword search so different question styles can find relevant facts.
Checks outside the model
Validate tool input on the server. Report delivery results accurately. Use a fallback when answer generation fails.
01
The problem
Visitors may want different details about my work. A hiring team may look for role experience. A project client may want to understand how I approach a problem. I wanted visitors to find relevant information through a conversation.
02
My role
I defined the product direction and designed the portfolio experience. I used AI-assisted development to build the interface, knowledge pipeline, and server safeguards. The work includes testing how the assistant finds evidence and handles contact requests.
03
The approach
The assistant searches a curated knowledge base. Semantic search finds passages by meaning. Keyword search finds direct term matches. The server combines both result sets before sending selected evidence to the language model. The interface streams the answer with source links. Follow-up questions are rewritten as standalone search queries, so the assistant can use conversation context during retrieval.
04
Challenges
The assistant needs the right passage, not only the right document. Follow-up questions also need context before search. Contact actions need server-side checks. The assistant must report whether an action succeeds. Input checks do not prove that an email address belongs to the visitor.
05
What I learned
A reliable answer depends on every step from source material to retrieval and display. Each step needs its own checks. I separated search embeddings from answer generation. I added a fallback for generation failures and versioned caching, so content changes do not keep serving old answers.
06
Outcomes
The portfolio includes a chat interface, hybrid search, streamed answers, source links, guarded contact tools, and versioned caching. Automated checks cover retrieval, conversation history, caching, and contact safeguards. These checks do not prove live answer quality, provider availability, notification delivery, or visitor conversion.
Tech stack
- TanStack Start
- React 19
- TypeScript
- Cloudflare Workers
- Vectorize
- D1
- KV
- Workers AI
- OpenRouter
- Pushover API