๐Ÿฆ†

Rubber Duck AI

Your Interactive Problem-Solving Companion

GitHub Repository

๐Ÿ† Google AI in Action Hackathon 2025

๐Ÿš€ GitLab Challenge Submission

๐ŸŽฎ

Try the Live Demo

Experience Rubber Duck AI in action

See how our AI responds to real GitLab issues! Visit our demo repository and explore existing conversations, or create your own issue with "Rubber Duck Help Me" to start an interactive debugging session.

View Demo Issues Create Demo Issue

๐ŸŽฏ What is Rubber Duck AI?

Rubber Duck AI is your intelligent debugging companion that helps you solve problems through guided questioning and step-by-step analysis. Instead of just giving you answers, it asks the right questions to help you think through your problem systematically, just like explaining your code to a rubber duck!

๐Ÿ† Hackathon Project: This project was developed for Google's AI in Action Hackathon 2025 as part of the GitLab Challenge. It demonstrates how AI can enhance developer productivity through intelligent, interactive problem-solving within GitLab's ecosystem.
๐Ÿง  The Philosophy: Often, the best way to solve a problem is to explain it step by step. Our AI guides you through this process by asking targeted questions that help you discover the solution yourself.
๐Ÿš€ How to Call Rubber Duck AI: Simply create an issue in your GitLab repository with a title containing "Rubber Duck Help Me" and our AI will automatically respond to guide you through solving your problem. The AI monitors your repository and jumps in whenever you need help!

๐Ÿ”ง Technical Setup & Configuration

โš™๏ธ Webhook Configuration

1. Go to your GitLab repository โ†’ Settings โ†’ Webhooks

2. Add webhook URL:

https://rubber-duck-ai-957711343120.us-central1.run.app/webhook

3. Enable triggers: Issues events, Comments, Merge request events

4. Set Secret Token for security:

Secret Token: nkcuxx7uvUsywxT
๐Ÿ’ก Security: Use GitLab's built-in Secret Token field instead of environment variables. This token will be sent as X-Gitlab-Token header with each webhook request.

๐Ÿ‘ฅ Repository Access

For private repositories, add the bot user with Reporter/Developer permissions:

Username: MayankSuthar1
(it is temporary username and it will be change in future implementations)

โš™๏ธ Getting Started

1Create Your First Issue

Start with any problem you're facing:

Rubber Duck Help Me: [Describe your challenge]
๐Ÿ’ก Example titles:
โ€ข "Rubber Duck Help Me: API returns 500 error randomly"
โ€ข "Rubber Duck Help Me: CSS animation not working on mobile"
โ€ข "Rubber Duck Help Me: Database query is too slow"

2Engage in the Process

Remember, this is a conversation, not a one-time question:

  • ๐Ÿ”„ Respond to the AI's questions
  • ๐Ÿงช Try the suggested experiments
  • ๐Ÿ“Š Share your findings
  • ๐Ÿค” Ask clarifying questions

3Learn and Grow

Each session teaches you:

  • ๐Ÿ” Better debugging techniques
  • ๐Ÿง  How to break down complex problems
  • โ“ What questions to ask yourself
  • ๐ŸŽฏ Systematic problem-solving approaches

๐Ÿ”ง Technology Stack

Rubber Duck AI is built using cutting-edge Google Cloud technologies and modern development tools to provide a robust, scalable, and intelligent problem-solving experience.

๐Ÿค– AI & Machine Learning

  • ๐Ÿง 
    Google Gemini AI
    Advanced natural language processing and reasoning capabilities for interactive problem-solving
  • โ˜๏ธ
    Google Cloud AI Platform
    Scalable infrastructure for AI model deployment and management

๐Ÿ’พ Database & Storage

  • ๐Ÿ”ฅ
    Google Cloud Firestore
    NoSQL document database for storing conversation history, user interactions, and project context

๐ŸŒ Backend & Integration

  • ๐Ÿ
    Python 3.12+
    Core programming language with async/await support for high-performance processing
  • ๐ŸŒถ๏ธ
    Flask Web Framework
    Lightweight web framework for handling webhook endpoints and API responses
  • ๐ŸฆŠ
    GitLab Webhooks API
    Real-time integration with GitLab for issue monitoring and automated responses

๐Ÿ” Security & Authentication

  • ๐Ÿ”‘
    Google Cloud IAM
    Identity and Access Management for secure service-to-service authentication
  • ๐Ÿ›ก๏ธ
    Webhook Security Tokens
    Secure webhook validation using GitLab's built-in token system
๐Ÿ—๏ธ Architecture Highlights: Built with a microservices approach, leveraging Google Cloud's serverless technologies for automatic scaling, high availability, and cost-effective operation. The system processes GitLab webhook events in real-time and uses Gemini AI's advanced reasoning capabilities to provide contextual, interactive problem-solving assistance.

๐Ÿš€ How Rubber Duck AI Helps You

1You Present Your Problem

Create an issue describing what you're trying to solve or what's not working. Don't worry about having all the details - just explain what you know!

Rubber Duck Help Me: My user authentication keeps failing

2AI Asks Clarifying Questions

The Rubber Duck AI will analyze your problem and ask targeted questions to understand the issue better:

  • ๐Ÿค” "What error messages are you seeing?"
  • ๐Ÿ” "Which authentication method are you using?"
  • ๐Ÿ“Š "Can you show me the relevant code section?"
  • ๐Ÿงช "What have you already tried to fix this?"

3Step-by-Step Problem Solving

As you answer the questions, the AI guides you through a systematic approach:

  • ๐ŸŽฏ Problem Isolation: "Let's check if the issue is with login validation or session management"
  • ๏ฟฝ Hypothesis Testing: "Try this small test to verify our assumption"
  • ๐Ÿ“ Evidence Gathering: "What does the console log show when this happens?"
  • ๐Ÿ› ๏ธ Solution Building: "Based on what we found, here's what we should try next"

4Hints When You're Stuck

If you can't figure out the next step, the AI provides helpful hints and explanations:

๐Ÿ” Example Hint: "It sounds like the issue might be related to session cookies. Try checking if the 'Set-Cookie' header is being sent properly. Look for the 'SameSite' attribute - it might be blocking your authentication in certain browsers."

5Solution Discovery

Through this interactive process, you either:

  • โœ… Discover the solution yourself (the best outcome!)
  • ๐Ÿ’ก Get a clear direction with specific next steps
  • ๐Ÿง  Learn the debugging process for similar future problems

๏ฟฝ Example Conversation

๐Ÿ‘ค You: Rubber Duck Help Me: My React component won't re-render when state changes
๐Ÿฆ† Rubber Duck AI: I'd be happy to help you debug this re-rendering issue! Let me ask a few questions to understand what's happening:

1. Are you using useState or useReducer to manage this state?
2. Can you show me how you're updating the state?
3. Are you directly mutating the state object/array, or creating a new one?
๐Ÿ‘ค You: I'm using useState. I have an array of items and I'm doing: items.push(newItem) then setItems(items)
๐Ÿฆ† Rubber Duck AI: Ah, I think I see the issue! You're mutating the existing array with push(), which means React doesn't detect that the state has changed (since it's the same array reference).

Can you try this instead: setItems([...items, newItem])

This creates a new array, which React will recognize as a state change. Does that fix the re-rendering?

๐Ÿ› ๏ธ Troubleshooting

Common Issues

  • AI not responding: Ensure issue title contains "Rubber Duck Help Me"
  • Permission denied: Check bot user has repository access (for private repos)
  • Webhook not working: Verify webhook URL and triggers are configured
  • Getting generic responses: Provide more specific details about your problem

Testing Your Setup

Create a test issue: "Rubber Duck Help Me: Testing my setup - can you help me understand how this works?"

You should receive an interactive response that guides you through the process.