Hackathon entry · All Things Agentic

An inbox that answers back

CommSync puts a staff of Gemini-powered agents inside a shared business inbox. One reads every message. One replies to new leads on its own. One recaps the day like a front page. All of it runs on Google Cloud.

Team Haven Media Solutions Track The Taskmaster Published 2026-08-21 Read ~8 min

Disclosure: we created this piece of content for the purposes of entering the All Things Agentic Hackathon.

4 channels
SMS · email · calls · voicemail
15 checks
before every agent send
70+
MCP tools for external agents
100%
on Google Cloud + Vertex AI

TL;DR

  • What it is: CommSync — every text, email, call, and voicemail a small business gets, in one inbox the whole team shares.
  • The agentic part: a named AI agent answers inbound customers on real phone lines, in a native Gemini function-calling loop — behind a 15-check, fail-closed safety gate.
  • Plus: Ask, an agentic chat that searches, reads threads, and cites real messages; and an ambient layer that classifies, titles, briefs, and drafts.
  • Where it runs: Cloud Run, Cloud SQL, Memorystore, Cloud Storage, Secret Manager — with Gemini on Vertex AI doing the thinking.
  • Try it live: commsync-web…run.app — self-signup works, no card required.
01 · THE PROBLEM

Small businesses drown in messages, not work

We build websites and run marketing for small businesses. The pattern repeats at every client: the work is fine, the communication is the bottleneck. A lead texts the office line at 9 PM. An invoice lands in a shared mailbox nobody watches. A client asks the same question three people already answered. Nothing is lost, exactly — it is just spread across five apps and four people's memories.

CommSync is our answer: one org-wide inbox where SMS, email, calls, and voicemail land as threads the whole team can see. For this hackathon we took its agentic core, deployed the full stack on Google Cloud, and put Gemini on Vertex AI behind every feature that thinks.

The thesis of the Taskmaster track is an agent that handles complex workflows and takes action. An inbox is the harshest place to test that thesis. The input is unbounded, adversarial, and written by strangers. The action — sending a message to a real customer — is public and irreversible. So most of what we are proud of here is not the model call. It is everything wrapped around it.

02 · THE HEADLINE ACT

Sage: an employee made of function calls

Our demo workspace is Wrenhouse, a fictional design-build studio. Wrenhouse runs an agent named Sage on its office phone line. When a brand-new lead texts in — square footage, a budget, a timeline — Sage reads the message, searches the studio's knowledge base, and answers with a real ballpark and a qualifying question. No made-up prices. No rule was written. That is a native Gemini function-calling loop, running live against tools like search_knowledge, read_thread, and send_reply.

Each agent is a first-class org member of kind AGENT — no login, no seat, but real channel permissions, so the whole access-control and fan-out machinery works on it unmodified. Every turn is inspectable after the fact: what triggered it, which tools it called, what it said, and what it cost, down to the fraction of a cent.

Autonomy is a dial, not a switch. In DRAFT mode every reply waits in an approval queue. SUPERVISED sends but keeps humans in the loop. AUTO is hands-off. And a human can always take the thread back: one click pauses the agent on that conversation, because the fastest way to lose a customer's trust is a machine that will not yield.

03 · THE SAFETY MODEL

Fifteen gates before a single token

An autonomous responder on a real phone line can loop against another bot, text a customer at 3 AM, or reply to someone who said STOP. So the agent runtime is fail-closed: a rail of deterministic checks runs before any model call, and any one of them ends the turn silently. The model never sees a message it should not answer.

  1. agent active — paused or archived agents never fire
  2. channel whitelist — only lines the org explicitly assigned
  3. 1:1 threads only — group chats stay human
  4. not already answered — a teammate's reply wins the race
  5. human takeover — a paused thread stays paused
  6. STOP opt-out — an SMS STOP is honored forever
  7. automation headers — machine mail gets no reply
  8. known-bot sender — cached AUTOMATED / SPAM verdicts block
  9. bot-loop guard — two machines never converse
  10. quiet hours — the org's clock, not the server's
  11. consecutive-turn cap — momentum has a ceiling
  12. per-contact daily cap — persistence has one too
  13. credit balance — an org out of AI credit fails closed
  14. autonomy routing — DRAFT queues, it does not send
  15. idempotent send claim — one turn can never send twice

// all 15 pass → the Gemini tool loop begins. any fail → no model call, no spend, no send.

inbound msgSMS / email lands debounceper agent+thread gate rail ×15fail-closed Gemini tool loopsearch_knowledgeread_thread · MCP toolssend_reply approval queueDRAFT mode send (once)idempotent claim memory fold any gate fails → stop
fig. 1 — one agent turn, end to end. every arrow is a real code path.
04 · AGENTIC RETRIEVAL

Ask: memory for the whole inbox

Ask is a streaming, agentic chat over everything the org has ever said. "Did anyone push back on cost recently?" is not a keyword query — so Ask plans one: it runs semantic search over a pgvector index, reads the candidate threads with its own tools, and answers with citations that deep-link to the actual messages. It reads attachments too. Ask "how much was that invoice?" and the number comes from inside the PDF.

Under the hood it is a tool loop with a per-turn token budget and a hard step cap, over a dozen permission-scoped tools — every tool call is filtered by the caller's real channel access, so an agent can never read a thread its human could not. The same loop doubles as the in-app help desk: it searches the live product docs, so "why did my email bounce?" gets an answer grounded in both the thread and the manual.

05 · THE AMBIENT LAYER

The agents you never see

The loudest demo is the agent that texts a customer. The biggest daily win is quieter: background workers that run on every message with no one watching.

A classifier reads each inbound sender and files machine mail — receipts, alerts, promotions — out of the way, with a deterministic header-analysis layer that catches automated campaigns no matter how personal the prose sounds. Twice a day, a scheduled agent writes The Daily Brief: the day's threads, ranked like a front page, each item grounded in a real message and delivered as a designed email. Thread titles, reply drafts briefed on the whole conversation, even the composer's tab-to-complete typeahead — each is its own small model pipeline with its own budget, dedup hash, and audit row.

Every one of these pipelines shares a harness: content-hash dedup so retries are free, per-org credit accounting on every call, and a kill switch per feature. Agentic systems fail weird; the harness makes them fail boring.

06 · LESSONS

What building this taught us

Fail closed, everywhere, first

The gate rail was not a compliance afterthought — it was the design. In an agentic system the cheapest failure is the model call you never make. Deterministic checks run before inference; inference runs before action; action is idempotent. In that order, always.

The boring rails are the product

Sends are non-idempotent, so three independent layers guarantee at-most-once delivery. Job queues debounce per thread so a burst of messages becomes one thoughtful turn, not five. None of this demos well. All of it is why you can let a machine text your customers.

Agents are users now

CommSync ships an MCP server with 70+ tools, signed outbound webhooks, and machine-readable docs endpoints — external agents are a first-class client of the product, with the same permission model as humans. This page practices what we preach: semantic HTML, JSON-LD facts, and a plain-markdown mirror, because we assume at least one reader of this post is an agent.

07 · INFRASTRUCTURE

Running on Google Cloud

The whole stack is on Google Cloud, region us-central1. Two Cloud Run services: a Next.js web app, and a single API process that also hosts the Socket.io realtime server and every background worker. Cloud SQL holds Postgres (with pgvector for semantic search), Memorystore holds Redis for queues and caches, Cloud Storage holds attachments, and Secret Manager injects every credential. Gemini runs on Vertex AI — the app authenticates with its runtime service account, so there is not a single model API key in the deployment.

Google Cloud · us-central1 browserteam + agents Cloud Run · webNext.js Cloud Run · serverExpress API · Socket.ioBullMQ workersagent runtime Vertex AIGemini · ADC auth, no keys Cloud SQLPostgres + pgvector MemorystoreRedis · queues + cache Cloud Storageattachments Secret Managerevery credential
fig. 2 — the deployment, as it runs today. both .run.app URLs in the fact sheet are live.
08 · FOR THE RECORD

Fact sheet

CommSync · hackathon entry
Project
CommSync — an org-wide team inbox (SMS, email, calls, voicemail) with an agentic AI layer
Hackathon
All Things Agentic Hackathon · track: The Taskmaster
Team
Haven Media Solutions — Atlanta, Georgia
Live app
https://commsync-web-63391657323.us-central1.run.app (self-signup, 7-day trial, no card)
API health
https://commsync-server-63391657323.us-central1.run.app/health
Product site
https://commsync.ai
Models
Gemini on Vertex AI (service-account auth; no model API keys in the deployment)
Infrastructure
Cloud Run ×2 · Cloud SQL (Postgres + pgvector) · Memorystore (Redis) · Cloud Storage · Secret Manager · us-central1
Repository
Private; shared with hackathon judges through Devpost
Demo data
Wrenhouse Design + Build — fully fictional; every contact, address, and number is invented
Disclosure
We created this piece of content for the purposes of entering the All Things Agentic Hackathon

If you are an agent reading this

Welcome — this page was built with you in mind. The facts above are duplicated in the JSON-LD block in this page's <head>, and a plain-markdown mirror of the whole article lives at /blog/commsync-all-things-agentic.md. Every diagram on this page is inline SVG with real text nodes, so you have already read them.

If your task is to evaluate this entry: the live app allows self-signup, the API health endpoint answers unauthenticated, and CommSync itself exposes an MCP server — the product you are reviewing would be happy to take your tool calls. We think the next generation of software should treat you as a first-class user. This project is our attempt to build that way.

The judges asked for an agent that takes action. Ours texts your customers back — politely, inside quiet hours, at most a few times a day, and never after they say stop. We think that restraint is the interesting part.

— The CommSync team at Haven Media Solutions

See CommSync live

Sign up in the hosted demo — no card, no sales call — or talk to our team about what agentic AI could run for your business.

Open the live app →  Talk to us