Recruiters on mobile shouldn't have to read the whole portfolio to find the right project. Astra is the portfolio concierge on this site — Groq tool-calling over public résumé and project data, scroll-to-section, scheduling hooks, and optional voice. Grounded answers from what's actually on this site, not a bolted-on generic chatbot.
Ask about my work. Jump to a section. Stay grounded.
Project overview
The challenge
Visitors needed a faster way to explore projects and résumé facts on phones than scrolling every section — without a third-party chat widget that invents employers or stack.
My role
I designed and shipped the agent loop, tool definitions, grounded knowledge slices, chat UI (tool trace, suggestions), voice strip, eval harness, and multi-profile résumé lenses that Astra reads.
Three pillars
- Grounding: replies use public resume.json + project knowledge only; tools retrieve slices on demand.
- Actions: navigate_to_section, calendar summary, contact/booking tools with clear failure modes.
- Trust UX: tool trace in the panel so recruiters see what ran, not a black box.
Exploration & discovery
Trust rules first
Before agent mode, the hard constraint was set: no invented credentials, keep prompts small, retrieve facts via tools. That rule shaped every later UX choice.
Multi-profile lenses
Five résumé Focus profiles (fullstack, software-engineer, applied-ai, ux-engineer, ux) let Astra answer in the lens a recruiter cares about — without swapping sites.
Interview demo needs
The story had to be demoable in 90 seconds: ask a project question, show tools used, scroll to the section, then optional voice and booking.
Build & process
Server-side Groq tool loop behind ASTRA_AGENT_MODE: get_knowledge, get_project, get_calendar_summary, navigate_to_section (plus contact/booking tools). Client shows tool trace and applies ui_actions for scroll. Eval cases live under npm run astra:eval.
Tool loop
The model chooses tools; the server executes and returns structured results; synthesis falls back to grounded copy when the loop fails.
Voice & scheduling
TTS/STT strip when configured; Cal.com hooks for America/Chicago availability without inventing slots.

Impact
Honest applied-AI story
- Live on this portfolio: no separate product URL required for the demo
- Tool trace + eval harness for interview credibility
- Cuts "where do I click?" friction for recruiters on phones
Pair with Relay
Optional RELAY_GATE_URL routes Astra LLM calls through the Relay policy gateway — so the same session appears in AgentOps audit. Agent plus platform story.
Reflections
- Tools beat long system prompts: retrieve facts; don't paste the whole résumé every turn.
- Show the trace: recruiters trust what they can see running.
- Keep failures honest: missing APIs and rate limits should surface as clear UI, not hallucinated success.
Product shots
Swipe for more →

