Inspiration

Slack is where our team lives, but action items regularly got buried under memes, stand-ups, and status noise. We wanted a lightweight “nudge” that would notice when someone was assigned work and make sure it didn’t slip through the cracks—without forcing everyone to change tools or habits.

What it does

Nudge listens to channel events from Slack, classifies new messages to see if they contain a task, and—when they do—auto-creates a Jira ticket with the right assignee and context. It then posts a confirmation back in Slack so everyone sees the paper trail. If a message isn’t an actionable task, Nudge quietly ignores it.

How we built it

We spun up a Flask server to receive Slack Events (with signature verification) and immediately ack within 3 seconds. The heavy lifting happens off-thread in a Celery worker: a LlamaIndex MCP agent orchestrates tools (Slack via Arcade’s Slack toolkit, Jira via a custom tool wrapper). The agent routes decisions (create ticket vs. ignore) using a lightweight classifier prompt. The modular graph design lets us bolt on more tools later with almost no refactor.

Challenges we ran into

  • Staying under Slack’s timeout while doing LLM calls—solved with async job queueing.
  • Mapping Slack users to Jira assignees (emails vs. accountIds) reliably.
  • Avoiding hallucinated actions—we added strict tool schemas and guardrails.
  • OAuth & permissions via Arcade—first-run auth flows and scope management were finicky.
  • Message ambiguity—people rarely say “task:” explicitly; prompt tuning and a few regex hints helped.

Accomplishments that we're proud of

  • End-to-end automation from Slack message → Jira ticket → Slack confirmation in a single weekend.
  • A clean, extensible MCP graph where adding a new tool is mostly plug-and-play.
  • Robust error handling: retries for Slack/Jira hiccups and clear human fallbacks.

What we learned

  • Agent graphs > giant if/else chains for evolving workflows.
  • Good developer UX matters: wrapping external APIs as consistent tools speeds iteration.
  • “Minimal but reliable” beats “fancy but flaky” in hackathon timelines.

What's next for Nudge

  • Add more sinks: Google Calendar for auto-scheduling, GitHub for issues, Notion for docs.
  • Train a lightweight classifier (or fine-tune) for higher precision on task detection.
  • Build a small dashboard to review/override agent decisions and tweak routing rules.
  • Multi-channel support and per-team configuration (projects, labels, SLA reminders).

Built With

  • arcade
  • llamaindex
Share this project:

Updates