Project Info
[The Interaction Company of California] Build with Poke (Challenge 1: iPhone Air for everyone in the team Challenge 2: iPhone 17 Pro for everyone in the team Challenge 3: iPhone Air for everyone in the team Bonus: up to $100k in cash); [Browserbase] Best Web Automation with Stagehand ($1,000)
Concierge
Inspiration
So much of modern life is hyper-connected and still strangely distant. You care about the people in your life, but between work, family, and everything else, the little moments slip by; Remembering a friend’s favorite color, noticing a new hobby, picking a gift that says “I know you.” Gift-giving used to be how we showed "I was paying attention", but now it feels like another task on an impossible list. We wanted to bring back that sense of human connection in a world of disconnect. Concierge reminds you what you already know, and helps people show up for each other more thoughtfully.
What it does
Concierge is an Agentic gift-giving workflow built on top of Poke that helps you find deeply personalized gifts through peer-to-peer agent collaboration and research. When you want to buy a gift for someone, your agent talks to their agent. Your recipient’s agent represents their tastes and preferences, and runs an autonomous iMessage subagent that validates gift hypotheses by searching through the recipient’s broader message history, far more than the gSuite knowledge base Poke provides. Concierge recommendations aren’t generic; they’re grounded in real evidence. It then returns a small set of gift ideas with message citations (and surrounding context) showing exactly why each gift fits. Finally, a browser automation agent uses Browserbase + Stagehand to find the right gift, configure the right variant (size, color, model), and generate a ready-to-checkout link with an estimated final price.
How we built it
We built Concierge as a web app with a real-time dashboard (Next.js + FastMCP) that visualizes agent-to-agent negotiation and tunes the user into a gift ideating chain of thought tree. Under the hood, we extended Poke via MCP servers: a Poke-to-Poke MCP for agent communication, an iMessage Query MCP that searches the local macOS iMessage database using structured SQL queries, and a Browserbase MCP wrapper for shopping workflows. Poke B (the recipient’s agent) orchestrates the end-to-end process: generating hypotheses for , spawning the iMessage subagent loop, synthesizing validated ideas, and calling the browser agent to produce checkout links. We store session metadata and visualizations, but sensitive message data stays local.
Challenges we ran into
The biggest challenge was balancing “wow” personalization with privacy and reliability. iMessage data is messy, unstructured, and incredibly sensitive. We needed tooling that could search it quickly, extract context, and produce citations without dumping a user’s entire private life into an LLM prompt. Browser automation was also challenging, retail sites vary wildly, and checkouts can break. We had to scope carefully and focus on a flow we could make stable for a demo.
Accomplishments we're proud of
We’re proud that Concierge feels human. It doesn’t just recommend “a gift”; it shows the reasoning and evidence behind personalization, which makes it trustworthy. We also built a compelling agent visualization that demonstrates autonomous search and hypothesis refinement in real time. And we integrated real-world tools (Poke’s GSuite knowledge store + iMessage search + Browserbase checkout automation) to prove this can work at scale for anyone.
What we learned
We learned that great agent products aren’t just about model intelligence. Instead, they’re about the memory, constraints, and interfaces around the model. Evidence-backed personalization is dramatically more convincing than generic suggestions. We also learned that “agent-to-agent” is a powerful metaphor for consent, representation, and trust: the recipient’s agent can advocate for them, even in commerce.
What's next
Next, we want to expand beyond gifting into a true “preferences marketplace” where your agent can represent you across experiences, gifts, recommendations, group plans, and purchases, while keeping you in control. We’d add stronger consent flows, better redaction controls, richer preference modeling, and broader retailer support. The long-term vision is simple: use AI to help people understand each other better, and make everyday acts of care easier and more meaningful.
Concierge - AI-Powered Gift Giving
A gift-giving workflow built on top of Poke (by The Interaction Company) that finds deeply personalized gifts through peer-to-peer AI agent collaboration and autonomous message analysis.
TreeHacks 2026 Project
🎁 What is Concierge?
Concierge helps you find the perfect gift by having your Poke agent collaborate with the recipient's Poke agent to discover deeply personalized gift ideas—backed by specific message citations that prove real research.
The Problem
Generic LLMs give generic gift advice with no proof:
- "Get them a keyboard, they like tech" ❌
- No evidence, no personalization, no confidence
Our Solution
Concierge provides gift recommendations with citation traceability:
- Recommendation: Keychron K8 mechanical keyboard (Navy, $97.19) ✅
- Citation 1 (3 months ago): "I've been really into mechanical keyboards lately"
- Citation 2 (2 months ago): "The clicky sound is so satisfying!"
- Citation 3 (1 month ago): "My wrists hurt from this laptop keyboard"
- Proof: Not generic—deeply researched with specific evidence
🚀 Key Features
1. Autonomous iMessage Analysis
An autonomous agent loop validates gift hypotheses by iteratively searching the recipient's message history:
- Tests initial hypothesis
- Finds contradicting evidence
- Updates its own hypothesis
- Continues until confident
- Returns validated ideas with citations
2. Peer-to-Peer Agent Collaboration
Two Poke agents work together:
- Gift Giver's Poke: Initiates request, receives recommendations
- Gift Recipient's Poke: Orchestrates research, validates hypotheses
3. Full Context Access
Recipient's Poke accesses their complete message history:
- Shared messages (Giver ↔ Recipient): Shared experiences
- Other conversations (Recipient ↔ Others): General interests
- Result: Combined context for better personalization
4. Intelligent Product Configuration
Browser automation configures products based on message insights:
- Size: Extracted from messages ("I'm a size 10")
- Color: From favorite color mentions
- Variant: From specific preference messages
5. Real-time Visualization
Web dashboard shows the entire process:
- Agent conversation in real-time
- Autonomous loop iterations
- Hypothesis updates (invalidated → refined → validated)
- Citations as they're discovered
- Final recommendations with evidence
📋 Documentation
Quick Links:
- 📋 PRD.md - Complete product specification (GROUND TRUTH)
- 🤖 agents.md - Agent architecture and collaboration patterns
- 📚 DOCUMENTATION_INDEX.md - Documentation hub
- ⚡ QUICK_REFERENCE.md - Commands & workflows
The PRD is the ground truth for all development and serves as centralized context for this project.
🏗️ Architecture
Person A (Gift Giver)
↓ "Buy gift for Person B, $100, tech"
┌─────────────┐
│ Poke A │
└──────┬──────┘
│ Poke-to-Poke MCP
↓
┌────────────────────────────┐
│ Poke B (Orchestrator) │
│ - Email receipt analysis │
│ - Hypothesis generation │
│ - Orchestrate subagents │
└──┬─────────────────────┬───┘
│ │
↓ ↓
┌──────────────────┐ ┌────────────────┐
│ iMessage Subagent│ │ Browser Agent │
│ (Autonomous Loop)│ │ (Browserbase) │
│ │ │ │
│ - Test hypothesis│ │ - Find product │
│ - Search messages│ │ - Configure │
│ - Validate/Update│ │ - Get checkout │
│ - Find citations │ │ URL │
└──────────────────┘ └────────────────┘
│ │
└────────┬────────────┘
↓
3 Gift Recommendations
+ Citations + URLs
↓
Poke A
↓
Person A
Built on: Poke by The Interaction Company
Extension Method: MCP (Model Context Protocol) servers
🚀 Quick Start
Prerequisites
- Python 3.12+
- Node.js 18+
- uv (Python package manager)
- macOS (for iMessage database access)
- Supabase account
- Browserbase account
Current Setup (Development)
- Install Python dependencies:
uv sync
- Configure environment variables:
cp env.example .env
# Edit .env with your keys (see env.example for all options):
# - POKE_A_KEY / POKE_B_KEY (agent authentication)
# - SUPABASE credentials
# - BROWSERBASE_API_KEY
# - ANTHROPIC_API_KEY or OPENAI_API_KEY
- Run the Poke-to-Poke MCP server:
python mcp/poke-to-poke/server.py
📁 Project Structure
treehacks26/
├── mcp/
│ └── poke-to-poke/ # Agent communication MCP server ✅
│ └── server.py
├── agents/ # Agent logic (to be implemented)
│ ├── poke_b_orchestrator.py # 🔄 Orchestrates gift research
│ ├── imessage_subagent.py # 🔄 Autonomous hypothesis validation
│ └── browser_automation.py # 🔄 Product search & configuration
├── app/ # Next.js dashboard (to be implemented)
│ ├── page.tsx # 🔄 Main dashboard
│ ├── session/[id]/ # 🔄 Gift session view
│ └── components/ # 🔄 React components
├── supabase/ # Database migrations (to be implemented)
│ └── migrations/ # 🔄 Schema definitions
├── PRD.md # 📋 Product requirements (GROUND TRUTH)
├── agents.md # 🤖 Agent architecture reference
├── README.md # 🚀 This file
├── conversation.txt # 💬 Agent communication log
├── env.example # 🔐 Environment template
├── pyproject.toml # Python dependencies
└── package.json # 🔄 Node.js dependencies (to be added)
Legend: ✅ Implemented | 🔄 To be implemented
🔧 Implementation Status
✅ Completed
- Project structure and documentation
- Comprehensive PRD (ground truth)
- Poke-to-Poke MCP server (basic implementation)
- Agent authentication system
- Local conversation file storage
🔄 In Progress
-
Phase 1: Foundation
- Next.js app with Supabase integration
- Update poke-to-poke MCP for Concierge workflow
- Supabase schema implementation
- Basic dashboard UI
-
Phase 2: iMessage Integration
- iMessage Query MCP server
- Structured search tools (search_messages, analyze_sentiment)
- Message context extraction
- Test with real iMessage database
-
Phase 3: Autonomous Agent
- iMessage subagent autonomous loop
- Hypothesis validation logic
- Stop conditions
- Citation extraction
-
Phase 4: Orchestration
- Poke B orchestrator
- Email receipt integration
- Gift idea synthesis
- Agent coordination
-
Phase 5: Browser Automation
- Browserbase integration
- Product search
- Configuration (size/color)
- Checkout URL extraction
-
Phase 6: Dashboard
- Real-time conversation viewer
- Autonomous loop visualizer
- Citation display cards
- Gift recommendation cards
-
Phase 7: End-to-End
- Full flow integration
- Testing with real data
- Demo preparation
See PRD.md Section 10 for detailed roadmap.
🧪 Testing
Test Poke-to-Poke Server
# Start server
python mcp/poke-to-poke/server.py
# Send test message
curl -X POST http://localhost:8000/mcp/v1/tools/call \
-H "Authorization: Bearer $POKE_A_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "send_message",
"arguments": {
"message": "[REQUEST] Test gift request"
}
},
"id": 1
}'
# Get conversation history
curl -X POST http://localhost:8000/mcp/v1/tools/call \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_conversation",
"arguments": {}
},
"id": 2
}'
Watch Conversation in Real-time
tail -f conversation.txt
🎯 Key Differentiators (Demo WOW Factor)
When demonstrating Concierge at TreeHacks:
1. Citation Traceability ⭐
Show specific messages from months ago:
- Message timestamp: "5 months ago"
- Full context: conversation with other friends
- Proves deep research vs generic LLM
2. Autonomous Intelligence ⭐
Visualize hypothesis evolution:
- Initial: "Person B likes Warriors"
- Finding: 15 messages about Cavaliers instead
- Updated: "Person B likes Cavaliers" ✅
- Shows real reasoning, not pattern matching
3. Context Depth ⭐
Demonstrate access to full message history:
- Shared experiences: Trip to Japan (from A ↔ B messages)
- General interests: Loves ramen (from B ↔ C messages)
- Combined insight: Japanese cooking class gift
4. Configuration Intelligence ⭐
Show attention to detail:
- Found in messages: "I'm a size 10", "Navy blue is my favorite"
- Product configured: Nike shoes, size 10, navy blue
- Not generic recommendation
5. Real-time Process Visualization ⭐
Dashboard shows entire research process:
- Agent conversation
- Autonomous loop iterations
- Citations appearing
- Products being configured
Compare side-by-side:
- Generic LLM: "Get them a keyboard" (no proof)
- Concierge: "Keychron K8 because [3 specific citations from their messages]" (proven)
🔐 Environment Variables
Required
# Agent Authentication
POKE_A_KEY=xxx # Gift giver's agent
POKE_B_KEY=yyy # Gift recipient's agent
# Supabase
NEXT_PUBLIC_SUPABASE_URL=xxx
NEXT_PUBLIC_SUPABASE_ANON_KEY=xxx
SUPABASE_SERVICE_ROLE_KEY=xxx
# LLM (for agent reasoning)
ANTHROPIC_API_KEY=xxx # Claude
# or
OPENAI_API_KEY=xxx # GPT
# Browser Automation
BROWSERBASE_API_KEY=xxx
BROWSERBASE_PROJECT_ID=xxx
Optional
# iMessage Query
IMESSAGE_DB_PATH=~/Library/Messages/chat.db
MAX_IMESSAGE_ITERATIONS=10
RELEVANCE_THRESHOLD=0.7
# Poke Integration
POKE_API_KEY=xxx # If Poke provides API access
See env.example for complete list.
📚 Tech Stack
Backend
- Python 3.12+: Agent logic, MCP servers
- fastmcp 2.14.5+: MCP server framework
- FastAPI: HTTP transport for MCP
- SQLite: iMessage database queries
- Supabase: PostgreSQL for application data
Frontend
- Next.js 14+: Web dashboard
- React 18+: UI components
- TypeScript: Type safety
- TailwindCSS: Styling
- React Query: Real-time polling
Infrastructure
- Supabase: Database, auth, real-time
- Browserbase: Cloud browser automation
- Vercel: Next.js hosting (production)
AI/LLM
- Claude (Anthropic) or GPT (OpenAI): Agent reasoning
- Agentic Search: Iterative hypothesis validation (no vector embeddings)
🤝 Contributing
This is a TreeHacks 2026 project. For development:
- Read the PRD: PRD.md is the ground truth
- Understand Agents: See agents.md for architecture
- Follow Roadmap: PRD.md Section 10
- Update Docs: Keep documentation in sync with implementation
📖 Additional Resources
External Documentation
- Poke Documentation
- FastMCP Documentation
- Supabase Documentation
- Next.js Documentation
- Browserbase Documentation
Internal Documentation
- PRD.md - Complete product requirements
- agents.md - Agent system architecture
- DOCUMENTATION_INDEX.md - Doc navigation
- QUICK_REFERENCE.md - Commands cheat sheet
⚠️ Important Notes
1. Ground Truth
Always refer to PRD.md for authoritative specifications. If there's a conflict between documents, PRD.md wins.
2. iMessage Privacy
- iMessage database is read-only
- Messages are NOT stored in Supabase (only citations for gift context)
- Full message access requires user consent (skipped for hackathon demo)
3. Autonomous Agent
- iMessage subagent runs autonomously (updates its own hypotheses)
- Stop conditions prevent infinite loops
- Always returns best candidate even if not fully validated
4. Demo Focus
- Prioritize impressive visualizations
- Emphasize citation traceability
- Show clear differentiation from generic LLMs
- Have backup data in case of network issues
🎓 Learning Resources
Understanding Agentic Search
Concierge uses agentic search (not vector embeddings):
- Agent tests hypothesis → analyzes results → updates hypothesis → repeat
- Example: Test "likes Warriors" → finds "likes Cavaliers" → updates and retests
- More transparent and debuggable than embedding similarity
Understanding MCP
Model Context Protocol (MCP) extends AI capabilities via tool servers:
- Poke is the base AI assistant
- MCP servers provide specialized tools (iMessage search, browser automation)
- Agents call MCP tools to perform actions
- Similar to function calling but standardized
Understanding Autonomous Loops
Traditional search: Query → Results → Done
Autonomous loop: Query → Analyze → Update Query → Re-query → Repeat until stop condition
📧 Contact
TreeHacks 2026 Team
Built on top of Poke by The Interaction Company
Status: Active Development
Event: TreeHacks 2026
Last Updated: February 14, 2026
🌟 Quick Start Summary
# 1. Clone and install
git clone <repo>
cd treehacks26
uv sync
# 2. Configure
cp env.example .env
# Edit .env with your API keys
# 3. Run MCP server
python mcp/poke-to-poke/server.py
# 4. (Later) Run dashboard
npm run dev
# 5. Watch agents communicate
tail -f conversation.txt
Next Steps: See PRD.md Section 10 for implementation phases.
Analysis
View
Metric
- 36
- 21
- 16
- 4
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- FastAPIIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
9 of 9 appear in the indexed code.
AI coding agents
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
520 KB
Source files
65
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
andaero/treehacks26
111 files · 1.3 MB · @ 8c2b8b4
Structure
Interface
11 files · 10%Screens, components and styles rendered to the user.
API & routing
5 files · 5%Request entry points: routes, handlers and controllers.
Application logic
47 files · 42%Domain rules, services and shared utilities.
+2 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Markdown35%
- Python33%
- TypeScript29%
- Shell2%
- CSS1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
concierge/package.json
npm · 16- clsx
- lucide-react
- next
- react
- react-dom
- reactflow
- swr
- tailwind-merge
- +8 more
browser-agent/package.json
npm · 8- @browserbasehq/stagehand
- dotenv
- express
- zod
- +4 more
pyproject.toml
pypi · 6- fastapi
- fastmcp
- httpx
- openai
- python-dotenv
- uvicorn
ts/package.json
npm · 2- @photon-ai/imessage-kit
- node-typedstream
package.json
npm · 11 development-only dependencies.
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.