💡 Inspiration
Every engineering team has the same silent killer: the meeting that never made it to the codebase.
We've all been there — a 45-minute architecture review where three critical decisions were made, two bugs were root-caused, and one security flaw was discussed. Then everyone closes their laptops, and the context evaporates.
The developer who joins next week has no idea why auth.ts uses Redis instead of an in-memory store. The junior engineer repeats the same N+1 query mistake that was debated two sprints ago.
Inspired by the Bee AI Wearable, a device designed to capture conversations, we asked ourselves: What if your IDE could listen to your standup? What if VS Code already knew what your team had decided before you even opened a file?
That question led to EchoLog.
🏗️ How We Built It
EchoLog is a three-service monorepo that transforms conversations into actionable engineering context through a real-time intelligence pipeline:
Bee Wearable → Event Gateway → AI Engine → VS Code Extension
1. Event Gateway — Node.js, Express and WebSocket
The gateway acts as the central nervous system of EchoLog.
- Ingests transcript chunks from the wearable through
POST /webhook/bee-stream. - Forwards transcript data to the AI engine for decision extraction.
- Broadcasts structured decisions to connected VS Code clients over WebSocket.
- Includes a built-in simulator that generates realistic developer conversations every 15 seconds, allowing the entire demo to run without physical hardware.
2. AI Engine — Python, FastAPI and AWS Bedrock
The AI engine converts unstructured conversations into structured engineering knowledge.
Each transcript chunk is processed using Claude 3.5 Sonnet through AWS Bedrock and boto3. A carefully designed system prompt instructs the model to return a structured DecisionExtraction JSON object, validated using Pydantic.
Each extracted decision includes its category, topic, summary, decision and, most importantly, the target_file associated with it. This allows EchoLog to connect what a team discussed with the code it affects.
We also designed a confidence-scoring function using a sigmoid curve:
C = 1 / (1 + e^(-k(s - s₀)))
Here, s represents semantic specificity, s₀ = 0.5 is the midpoint threshold, and k controls the steepness of the curve.
Graceful fallback: When AWS credentials are unavailable, EchoLog cycles through a deterministic corpus of eight predefined decisions. The same pipeline remains functional, allowing the demo to run without cloud dependencies.
3. VS Code Extension — TypeScript and Webpack
The extension brings the extracted knowledge directly into the developer's workflow.
- Uses exponential backoff for WebSocket reconnection, with delays capped at 30 seconds.
- Displays incoming decisions as theme-aware cards using native VS Code CSS variables.
- Adds inline phantom-text decorations to matching open files, surfacing relevant decisions in context.
- Exports session history as a structured Markdown report in
.echolog-history.md.
Instead of forcing developers to search through meeting recordings or scattered notes, EchoLog brings relevant decisions to where they are needed: the code itself.
🧠 What We Learned
1. VS Code Webview security
VS Code's Content Security Policy is restrictive. We learned to build self-contained webview interfaces, manage script permissions carefully and avoid relying on external resources.
2. Integrating Claude through AWS Bedrock
Bedrock uses a request format that differs from the direct Anthropic API, including the anthropic_version: bedrock-2023-05-31 field. Getting the request structure right required several iterations.
3. Reliable WebSocket reconnection
Reconnection is more than simply opening a new socket. We had to manage connection state and clean up event listeners to prevent duplicate handlers and memory leaks.
4. Designing for graceful degradation
Building mock mode early helped us establish a clean interface between the AI engine and the rest of the system. It also made testing possible without cloud credentials or physical hardware.
⚔️ Challenges
Non-deterministic LLM output: We used a strict system prompt, a low temperature of 0.1 and JSON-only output instructions to encourage consistent, structured responses.
Duplicate decorations after reconnecting: We maintained a Map of document URIs to sets of decision IDs, allowing the extension to deduplicate decorations.
Cross-platform file paths: We used path.basename() for filename comparisons instead of assuming a particular path separator.
AI processing latency: The gateway uses a fire-and-forget processing pattern, returning HTTP 202 Accepted immediately rather than making transcript ingestion wait for AI processing.
Running without AWS: We created a deterministic mock corpus with a rotating index that follows the same processing pipeline, keeping the demo functional without cloud access.
🚀 What's Next?
EchoLog is designed as a platform that can evolve beyond a single developer's IDE.
Our next steps include:
- Real wearable integration: Replace the simulator with the Bee MCP SDK for live transcript ingestion.
- Multi-speaker diarization: Attribute decisions and action items to individual speakers.
- Automated GitHub Issues: Convert action-item decisions into GitHub Issues.
- Team-wide decision sharing: Build a shared live feed so developers can access the same engineering context across the team.
The long-term vision is to make engineering knowledge persistent, searchable and available exactly when developers need it.
The best documentation is the one that writes itself.
Built With
- bedrock
- claude
- echo-streamserver
- express.js
- javascript
- node.js
- python
- vscode
- websockets
Log in or sign up for Devpost to join the conversation.