Project Info
[Greylock] Best multi-turn agent (Courtside tickets to Warriors game ($10k value) Office hours with Greylock Partners)
Edamame
Inspiration
Organizations lose institutional knowledge every day. When someone leaves, years of context walk out the door. When someone joins, they spend weeks piecing together tribal knowledge scattered across Slack, Drive, email, and a dozen other tools. We wanted to build a system that creates digital twin clones of every person in your organization, so their knowledge is always accessible — even when they're not. We see Edamame becoming a simpler database for companies, where the AI clones and knowledge bases can simplify finding information like the reasoning behind past product decisions and the context that normally lives only in people’s heads. Instead of searching across fragmented tools or tracking down the right person, you can simply ask, and the system returns the exact answer with the full context behind it.
What it does
Edamame creates AI clones of every employee by ingesting their Slack messages, Google Drive docs, Gmail threads, GitHub commits, Notion pages, and Jira tickets. Each clone becomes a queryable digital twin that answers questions grounded in real data with source citations. Clones learn continuously -- every new message, conversation, and document gets absorbed in real-time. It has 4 main features: Clone Chat: Talk to anyone's digital twin in text or voice. Each clone has a distinct personality modeled after its person. A live memory panel shows facts being extracted and stored as you talk. Management Insights: Ask a strategic question and Edamame polls every clone simultaneously, generates per-person stances with confidence scores and evidence, then aggregates into themes. An animated agent network shows the multi-clone query in real-time. Onboarding Briefs: Auto-generates "here's what you need to know" docs for new hires by querying relevant clones for key people, recent decisions, and open risks. Offboarding Handoff Packs: When someone leaves, their clone preserves their knowledge -- ownership areas, unresolved work, key links, and suggested new owners. Additional features: Full voice I/O using Whisper transcription and TTS synthesis Real-time Slack webhook -- clones learn new messages as they're sent Semantic memory search across all data sources Real OAuth integrations with Slack, Google Drive, Gmail, GitHub, and Notion
How we built it
Frontend: Next.js 16 with React 19 and TypeScript, paired with Tailwind CSS for a Cursor-inspired dark theme. Agent network visualization uses animated SVG particles on bezier curves. Clone Memory: Supabase with pgvector. Unified memories table with type discriminators and source tags. IVFFlat indexing for sub-50ms semantic search. Clone Intelligence: GPT-5.3 with personality-aware system prompts. text-embedding-3-small for embeddings. Continual learning extracts facts from every conversation. Voice: Whisper for transcription, TTS for synthesis. Full spoken conversation with any clone. Integrations: Real OAuth to Slack, Google Drive, Gmail, GitHub, Notion. Live data sync with token refresh.
Challenges we ran into
Making clones sound like distinct people, not generic chatbots Supabase connection limits when querying all clones simultaneously for CEO insights Embedding dimension bug at 3am (3072-d instead of 1536-d -- slower AND less accurate) Silent OAuth token expiry causing clones to "forget" GDrive knowledge mid-demo
Accomplishments we're proud of
Built fully functional AI clones with real integrations, voice I/O, and continual learning in 12 hours Every clone response is grounded with source citations -- no hallucination Continual learning works live: send a Slack message, ask the clone seconds later, get a cited answer All integrations use real OAuth, not mocked data Code from every abandoned pivot shipped in the final product
What we learned
Personality modeling matters as much as retrieval quality for making clones feel real Real-time webhook learning is what makes a clone feel "alive" vs. static RAG Scope management is one of the hardest hackathon skills
What's next
for Me Enterprise Deployment: Multi-tenant isolation, SSO/SAML, role-based clone access control Smarter Clones: Temporal reasoning, cross-clone knowledge graphs, clone-to-clone consultation More Integrations: Calendar, meeting transcripts, Linear, Figma, etc. Our futuristic vision: notion-like database for company knowledge, but better :)
Edamame
AI clones for organizational memory. Edamame ingests knowledge from Slack, Google Drive, Gmail, GitHub, Notion, and Jira to create digital twin clones of every person in your organization - queryable 24/7 in text or voice, with source citations and continual learning.
Built at TreeHacks 2026.
Features
- Clone Chat — Talk to any employee's digital twin in text or voice. Personality-aware responses with inline source citations. Clones learn from every conversation via fact extraction and episodic memory.
- CEO Insights — Multi-clone sentiment analysis. Ask a strategic question and poll all clones simultaneously for per-person stances, confidence scores, and aggregated themes. Animated agent network visualization shows the query in real-time.
- Onboarding Briefs — Auto-generated "here's what you need to know" docs for new hires: key people, recent decisions, open risks.
- Offboarding Handoff Packs — When someone leaves, their clone generates ownership areas, unresolved work, key links, and suggested new owners.
- Knowledge Base — Semantic search across all ingested memories with source and type filtering.
- Clone-to-Clone Consultation — When a clone doesn't know something, it consults other clones via an agent-to-agent protocol.
- Voice I/O — Full spoken conversations with clones using Whisper (STT) and OpenAI TTS.
- Real-time Slack Learning — Webhook-driven ingestion. Clones absorb new Slack messages as they're sent.
- Synthetic Data Generation — Seeded deterministic generator creates realistic Slack messages, Drive docs, GitHub commits, emails, Jira tickets, and Notion pages for demos.
Architecture
├── frontend/ Next.js 16 app (UI + API routes)
│ ├── app/ Pages and API routes
│ │ ├── page.tsx Landing / auth page
│ │ ├── ceo/ CEO view (insights, clones, knowledge)
│ │ ├── employee/ Employee view (chat, coworkers, knowledge)
│ │ ├── (app)/ Dashboard, settings, clone management
│ │ └── api/
│ │ ├── edamame/ Clone chat, insights, onboarding, offboarding
│ │ ├── chat/ General chat endpoint
│ │ ├── voice/ Whisper transcription + TTS synthesis
│ │ ├── ingest/ Data ingestion + synthetic generation
│ │ ├── memory/ Memory search + compaction
│ │ ├── clones/ Clone CRUD
│ │ ├── slack/ Slack OAuth, sync, webhook events
│ │ ├── google-drive/ Drive sync
│ │ ├── gmail/ Gmail sync
│ │ ├── github/ GitHub sync
│ │ ├── notion/ Notion sync
│ │ └── auth/ Google OAuth flow
│ ├── components/
│ │ ├── edamame/ InsightsView, ClonesView, EmployeeChatView,
│ │ │ KnowledgeView, AgentNetworkView, Sidebars
│ │ ├── chat/ ChatWindow, MessageBubble, ThinkingPanel
│ │ ├── voice/ VoiceButton, Waveform
│ │ ├── dashboard/ CloneGrid, CloneCard, ConversationLog
│ │ └── clone-builder/ PersonalityForm, DocumentUpload
│ └── lib/
│ ├── agents/ OpenAI client, clone-brain prompting,
│ │ collaboration (clone-to-clone), Perplexity
│ ├── core/ Types, Supabase client, chunker, utils
│ ├── integrations/ Slack, Google, GitHub, Notion connectors
│ ├── memory/ Frontend memory search helpers
│ └── edamame/ Edamame API client + types
├── backend/
│ ├── memory/ Memory system: retrieval, compaction,
│ │ │ continual learning, episodic extraction
│ │ └── synthetic/ Synthetic data generators (Slack, Drive,
│ │ email, GitHub, Jira, Notion, world builder)
│ ├── modal/ Python modules for Modal deployment
│ │ (agent, embed, STT, TTS)
│ └── supabase/ SQL schema + migrations
└── synthetic_corpus/ Pre-generated demo data
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS |
| Database | Supabase (PostgreSQL + pgvector) |
| LLM | OpenAI GPT-4o |
| Embeddings | text-embedding-3-small (1536-d), IVFFlat indexing |
| Voice | Whisper-1 (STT), TTS-1 with Nova voice |
| Integrations | Slack API, Google OAuth (Drive + Gmail), Octokit (GitHub), Notion API |
| ML Infra | Modal (optional, for hosted inference) |
| Memory | Supabase (primary), Mem0 (optional fallback) |
Prerequisites
- Node.js 20+
- npm
- Supabase project with pgvector extension
- OpenAI API key
- Python 3.11+ (only for
backend/modal/)
Quick Start
1. Install dependencies
cd frontend
npm install
2. Configure environment
Copy .env.example to frontend/.env.local and fill in your keys (OpenAI, Supabase, and optionally Google OAuth, Slack, GitHub, Notion).
3. Initialize database
Run backend/supabase/schema.sql in your Supabase SQL editor. This creates:
clones— One per person, includes personality and expertise tagsmemories— Unified knowledge store with type discriminators (document,chunk,fact,snapshot,category,episodic) and source tags (slack,gdrive,email,github,notion,jira,voice,conversation)messages— Flat chat history grouped by conversationintegrations— OAuth credentials and sync configmatch_memories— pgvector cosine similarity search function
If migrating from an older schema, use backend/supabase/migrate.sql instead.
4. Run the app
cd frontend
npm run dev
Open http://localhost:3000.
5. (Optional) Generate synthetic data
Hit POST /api/ingest/synthetic with a clone ID to populate a clone with realistic demo data across all sources.
How Memory Works
All clone knowledge lives in a single memories table:
- Ingestion — Data from Slack, Drive, Gmail, GitHub, Notion, Jira is synced and chunked (500-token segments with 50-token overlap)
- Embedding — Each chunk/fact gets a 1536-d embedding via
text-embedding-3-small - Retrieval — Semantic vector search via
match_memoriesRPC with keyword fallback. Results are re-ranked using a composite score:similarity + recencyBonus(occurred_at) - Continual Learning — Conversations trigger fact extraction and episodic memory extraction. Near-duplicates (similarity > 0.88) are reinforced instead of duplicated
- Compaction — Weekly summarization rolls up stale facts into category summaries. Monthly rewind creates snapshots
Scripts
From frontend/:
| Command | Description |
|---|---|
npm run dev | Start dev server |
npm run build | Production build |
npm run start | Run production server |
npm run lint | Run ESLint |
Modal (Python Backend)
backend/modal/ contains optional Python modules for Modal-hosted inference:
agent.py— Clone reasoningembed.py— Embedding generationstt.py— Speech-to-texttts.py— Text-to-speechmulti_agent.py— Multi-agent orchestration
Set MODAL_BASE_URL in your env to point to the deployed Modal service.
cd backend/modal
pip install -r requirements.txt
Analysis
View
Metric
- 30
- 29
- 21
- 6
- 1
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
- AnthropicIn code
- CSSIn code
- HTMLIn code
- Next.jsIn code
- OpenAIIn code
- PostgreSQLIn code
- PythonIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Vercel AI SDKIn code
13 of 13 appear in the indexed code.
AI coding agents
- CursorCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
844 KB
Source files
119
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
angelinaquan/edamame-treehacks
135 files · 1.4 MB · @ 6892afa
Structure
Interface
39 files · 29%Screens, components and styles rendered to the user.
API & routing
28 files · 21%Request entry points: routes, handlers and controllers.
Application logic
45 files · 33%Domain rules, services and shared utilities.
Data & schema
4 files · 3%Schema definitions, migrations and data access.
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
- TypeScript95%
- HTML2%
- SQL1%
- Markdown1%
- Python1%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 24- @notionhq/client
- @octokit/rest
- @supabase/supabase-js
- ai
- class-variance-authority
- clsx
- googleapis
- lucide-react
- next
- openai
- react
- react-dom
- react-markdown
- tailwind-merge
- +10 more
backend/modal/requirements.txt
pypi · 4- anthropic
- modal
- numpy
- openai
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.