Inspiration
Operations teams lose hours every day to a repetitive loop: read an email, decide what to do, draft a reply, log the action. This process is slow, inconsistent, and leaves almost no audit trail. I wanted to close the gap between "inbox thread" and "auditable, policy-compliant action" — and do it with AI that explains itself rather than acting as a black box.
What it does
Agentic Workspace is a copilot control room for operations teams. It ingests email threads, triages them into typed tasks, runs specialist AI agents (Listing Health, Margin & Negotiation, Returns & Complaints, Payments), and surfaces a structured draft to an operator for review before anything is sent.
Every agent run produces: a draft response, a confidence score, a risk level, missing-information flags, and citations. That structure powers safe automation — the system gates actions, shows why a decision was made, and forces human review when thresholds aren't met.
How I built it
- Elastic Agent Builder + A2A (JSON-RPC) — the worker calls Agent Builder to generate structured decisions; Kibana APIs list and create agents from the UI
- Elasticsearch — inbox, outbox, and queue data backed by ES indexes with
dense_vector/semantic_textmappings for hybrid and semantic search - Node.js + Express backend with a BullMQ worker and a scheduler for morning digests
- TanStack Start + React 19 + Tailwind CSS v4 frontend with type-safe routing
- Gmail API for thread-aware email ingestion and reply sending; SendGrid as idempotent fallback
- SQLite as the zero-config default store (PostgreSQL-ready for production)
Challenges I ran into
Policy enforcement in the state machine — making autonomy levels (draft_only vs auto_send), risk gates, and per-type thresholds apply consistently without restarting the server required careful design of the config layer and task lifecycle.
Thread-aware sending without duplicates — safely replying into the original Gmail thread while preventing duplicate sends and maintaining a full audit trail required idempotency keys, provider-level deduplication, and careful handling of "To" address mismatches.
Accomplishments I'm proud of
The explainability-first workflow — confidence %, risk badge, reasoning, missing info, and citations — makes AI decisions feel trustworthy rather than opaque. And the System Health dashboard validates all integrations (Elastic, A2A, Gmail, queue, worker heartbeat) in one place, making the project genuinely operable.
What I learned
Structuring agent output as typed data (not just text) is what makes safe automation possible. When confidence, risk, and missing-info are first-class fields, the UI can gate actions, filter queues, and show operators exactly what they need to approve — without parsing nested JSON at render time.
What's next
Expanding the specialist agent library, adding semantic retrieval over the knowledge base using Elasticsearch vector search, and building a multi-agent review loop where one agent verifies another's draft before it reaches the operator.
Built With
- a2a
- bullmq
- elastic-agent-builder
- elasticsearch
- express.js
- gmail-api
- kibana
- node.js
- react
- sendgrid
- sqlite
- tailwind-css
- tanstack-router
- tanstack-start
- typescript
Log in or sign up for Devpost to join the conversation.