01
The problem
Static portfolios make visitors scan documents or wait for replies to specific questions. That gap between interest and contact creates friction and missed opportunities.
02
The approach
Built a serverless conversational assistant grounded in a curated biography and work history. Structured tools capture verified contact details and record unknown questions, while server-side guards, rate limiting and strict input handling reduce abuse and fabricated submissions.
03
Challenges
Early versions fabricated placeholder emails, free models failed on tool calls, and a raw forwarded-IP header could be spoofed. Deterministic email checks, a reliable model and trusted platform IP values corrected those weaknesses.
04
What I learned
For a small knowledge base, full context can be simpler and more accurate than retrieval. Deterministic server checks are stronger than prompt-only rules, and infrastructure-provided identity signals should replace client-controlled headers.
05
Outcomes
The assistant runs continuously, answers portfolio questions immediately and can notify Terry when a visitor provides verified contact details. The architecture remains inexpensive and security-conscious.
Tech stack
- React
- TypeScript
- Python
- DeepSeek
- OpenRouter
- Vercel Serverless
- Pushover API