Inspiration
Preparing for important meetings is stressful when information is scattered across LinkedIn profiles, interviews, articles, and social posts. I wanted a fast, clean way to turn public information into useful context so anyone can walk into a meeting better prepared and more confident.
What it does
ContextCard generates a structured pre-meeting brief from two inputs: who you are meeting and why. It searches public web sources, synthesizes the findings, and returns a readable card-based report with:
Who They Are What They Care About Recent Activity Conversation Starters Common Ground Watch Out (only when relevant) Sources Used
How we built it
I built ContextCard as a stateless Next.js 14 app with the App Router and Tailwind CSS. The backend flow:
- Accepts name + context from the frontend.
- Runs five Exa searches in parallel with Promise.all.
- Combines top results into a single evidence blob.
- Sends that blob to Google Gemini with a strict JSON-only prompt.
- Parses and normalizes the response, then returns structured data to the UI.
- The frontend stores the generated brief in localStorage and renders the result on a dedicated /brief page with polished cards and loading states.
Challenges we ran into
Gemini model/version changes caused endpoint compatibility errors at first. LLM outputs occasionally wrapped JSON in markdown fences, requiring robust cleanup. “Null-like” values (e.g., "null" as a string) needed normalization so the Watch Out card behaved correctly. I had to make sure partial Exa failures didn’t break the whole request.
Accomplishments that we're proud of
Built a full end-to-end product quickly with no database and no auth. Achieved resilient orchestration across two external APIs (search + synthesis). Added practical UX touches: polished loading experience, source transparency, and graceful error messaging. Kept the output focused on actionable, human-friendly meeting prep instead of generic summaries.
What we learned
Reliability matters more than happy-path demos when coordinating multiple APIs. Prompt quality and output validation are both essential for dependable AI features. Small UX decisions (clear errors, structured cards, source links) dramatically improve trust. Stateless architectures can still feel product-grade when data flow is designed carefully.
What's next for ContextCard
Add editable brief sections so users can refine output before meetings. Introduce optional “tone modes” (formal, friendly, technical) for conversation starters. Improve source ranking and deduplication for higher signal-to-noise. Add export options (PDF/Notion copy) and calendar-event integration.
Built With
- browser
- exa
- google-gemini-api
- javascript
- next.js
- react
- tailwindcss
- vercel

Log in or sign up for Devpost to join the conversation.