Inspiration
Every sprint, our team spent 30+ minutes copying standup notes into GitHub Issues. Comments like "fix the auth bug" or "update the docs" would get lost in Slack threads. I wanted an agent that actually does the work instead of just chatting.
What it does
DevPulse listens to GitHub webhooks (issue comments & PR comments), reads the conversation with Gemini Flash, extracts action items / blockers / decisions, and automatically creates real GitHub Issues with proper titles, context, and labels. It then posts a summary back to Slack.
How we built it
- Google ADK orchestrates the agent and tool calling
- Gemini 3.5 Flash extracts structured action items from unstructured developer chatter
- Cloud Run hosts the Flask webhook receiver (scales to zero, costs nothing when idle)
- GitHub API creates real issues in a sandbox repo
- In-memory session service manages agent state (architecture supports Firestore migration for production)
Challenges we ran into
The Python ADK's FirestoreSessionService doesn't exist (it's Java-only), so I had to pivot to InMemorySessionService and design the architecture so Firestore can be swapped in later without touching agent logic. I also fought Cloud Run cold starts until I realized the agent imports must be lazy-loaded.
Accomplishments that we're proud of
- The agent actually creates real tickets on real GitHub — not a mock demo
- End-to-end latency is under 12 seconds from comment to ticket
- Zero idle cost: Cloud Run sleeps when no webhooks are firing
What we learned
- ADK's tool-calling is powerful but requires extremely explicit prompts ("You MUST call the tools")
- Event-driven agents are more reliable than polling architectures
- Lazy initialization is critical for serverless deployments
What's next for DevPulse
- Wire real Slack API (currently stubbed)
- Migrate to Firestore for cross-session memory
- Add a dashboard to review agent-created tickets before they go live
Log in or sign up for Devpost to join the conversation.