Skip to content

arnavahuja/RapidReach

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โšก RapidReach โ€” AI-Powered SDR Agent System

Google Geminiย ย ย  Google Cloudย ย ย  BigQueryย ย ย  Dedalusย ย ย  Google Mapsย ย ย  ElevenLabsย ย ย  Brave Searchย ย ย  Gmailย ย ย  Google Calendarย ย ย  FastAPI

Dedalus ADK ยท Google Cloud ยท ElevenLabs ยท Brave Search MCP ยท FastAPI

๐Ÿค– 14 Specialized AI Agents ย ยทย  ๐Ÿ› ๏ธ 12+ Integrated Tools ย ยทย  ๐Ÿ—๏ธ 5 Microservices ย ยทย  ๐ŸŽจ 8 Agentic Design Patterns

Find. Research. Call. Close. โ€” A comprehensive multi-agent system of 14 specialized AI agents working in concert to automate the entire sales development lifecycle, from geographic lead discovery to AI-powered phone calls and branded email outreach.

Built with Dedalus ADK at Columbia ADI DevFest 2026.


๐Ÿ“‹ Table of Contents


๐ŸŽฏ What It Does

RapidReach is not just a single application โ€” it's a comprehensive system of 14 specialized AI agents working in concert across 5 microservices. It replaces the entire manual SDR workflow โ€” prospecting, research, cold-calling, proposal writing, and email outreach โ€” with an intelligent multi-agent pipeline that runs autonomously end-to-end:

  ๐Ÿ” DISCOVER          ๐Ÿง  RESEARCH          ๐Ÿ“ž CALL             ๐Ÿ“ง EMAIL
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚  Google  โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  Brave  โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚Eleven   โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Gmail   โ”‚
  โ”‚  Maps    โ”‚         โ”‚  Search โ”‚         โ”‚  Labs   โ”‚         โ”‚  API    โ”‚
  โ”‚  Places  โ”‚         โ”‚  + LLM  โ”‚         โ”‚  Voice  โ”‚         โ”‚ + Deck  โ”‚
  โ”‚  API     โ”‚         โ”‚(Dedalus)โ”‚         โ”‚   AI    โ”‚         โ”‚(Dedalus)โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  Google Maps API      Brave Search MCP    ElevenLabs           Gmail API +
  โ†’ find businesses    + Dedalus ADK       Conversational AI    python-pptx
  without websites     (GPT-4.1/Claude)    phone calls          via Dedalus ADK
Step Agent Tool / API What Happens
1 Lead Finder Google Maps Places API + Dedalus ADK Searches for local businesses without websites in a target city
2 SDR โ†’ Research Brave Search MCP via Dedalus ADK Deep-researches each business โ€” reviews, competitors, pain points
3 SDR โ†’ Proposal Dedalus ADK (Claude Sonnet 4) Generates a tailored website proposal (generator-critic pattern)
4 SDR โ†’ Call ElevenLabs Conversational AI Places an AI phone call and retrieves transcript
5 SDR โ†’ Classify Dedalus ADK (GPT-4.1 + Pydantic) LLM classifies call outcome: interested / agreed_to_email / not_interested
6 SDR โ†’ Deck Dedalus ADK (GPT-4.1) + python-pptx Generates a professional PowerPoint business solution deck
7 SDR โ†’ Email Gmail API via Google Cloud Sends branded HTML email with .pptx deck + .ics calendar invite

๐Ÿ—๏ธ Architecture & Scale

RapidReach is built as a production-grade multi-agent system with impressive scale for a hackathon project:

๐Ÿค– 14 Specialized AI Agents

# Agent Type Model / Runtime
1 Lead Finder Coordinator LLM Orchestrator Dedalus โ†’ GPT-4.1
2 SDR Pipeline Coordinator Sequential Orchestrator Direct Python (8-step pipeline)
3 Research Agent LLM + MCP Tool Dedalus โ†’ GPT-4.1 + Brave Search MCP
4 Proposal Draft Agent LLM (Creative) Dedalus โ†’ Claude Sonnet 4
5 Fact-Check Agent LLM (Analytical) Dedalus โ†’ GPT-4.1
6 Phone Call Agent External API ElevenLabs Conversational AI
7 Conversation Classifier LLM + Pydantic Dedalus โ†’ GPT-4.1 + Structured Outputs
8 Deck Generator Agent LLM + Code Gen Dedalus โ†’ GPT-4.1 + python-pptx
9 Email Outreach Agent API + Template Gmail API + HTML renderer
10 Lead Manager Orchestrator Sequential Orchestrator Python + Dedalus LLM
11 Email Checker Sub-Agent API Reader Gmail API (fetch + filter)
12 Email Analyzer Sub-Agent LLM Classifier Dedalus โ†’ GPT-4.1 (intent + confidence)
13 Calendar Organizer Sub-Agent API Writer Google Calendar API + Meet
14 Post-Action Sub-Agent Data Pipeline BigQuery + Gmail (mark read)

๐Ÿ—๏ธ System Architecture

High-Level Service Map

graph TB
    %% โ”€โ”€ ROW 1: Three blocks across the top โ”€โ”€
    subgraph "๐Ÿ–ฅ๏ธ Dashboard"
        UI["๐Ÿ–ฅ๏ธ UI Client<br/><i>FastAPI + WebSocket</i>"]
    end

    subgraph "๐Ÿ” Lead Discovery"
        LF["๐Ÿ” Lead Finder Agent<br/><i>Dedalus ADK (GPT-4.1)</i>"]
        MAPS["๐Ÿ—บ๏ธ Google Maps<br/><i>Places API</i>"]
    end

    subgraph "๐Ÿ“ž Voice & Email"
        XI["๐Ÿ“ž AI Phone Call<br/><i>ElevenLabs Conv. AI</i>"]
        GMAIL["๐Ÿ“ง Email Sender<br/><i>Gmail API (Google Cloud)</i>"]
    end

    %% โ”€โ”€ ROW 2: SDR Pipeline spans full width below โ”€โ”€
    subgraph "๐Ÿง  SDR Outreach Pipeline  ยท  8-Step Sequential"
        SDR["๐Ÿง  SDR Coordinator<br/><i>Dedalus ADK (GPT-4.1)</i>"]
        RA["๐Ÿ“š Research Agent<br/><i>Brave Search MCP + Dedalus ADK (GPT-4.1)</i>"]
        PA["โœ๏ธ Proposal Agent<br/><i>Dedalus ADK (Claude Sonnet 4)</i>"]
        FA["โœ… Fact-Check Agent<br/><i>Dedalus ADK (GPT-4.1)</i>"]
        CA["๐Ÿท๏ธ Classifier Agent<br/><i>Dedalus ADK (GPT-4.1) + Pydantic</i>"]
        DA["๐Ÿ“Š Deck Generator<br/><i>Dedalus ADK (GPT-4.1) + python-pptx</i>"]

        SDR --> RA --> PA --> FA --> CA --> DA
    end

    %% โ”€โ”€ ROW 3: Data Layer at the bottom โ”€โ”€
    subgraph "๐Ÿ’พ Data Layer"
        BQ["๐Ÿ’พ BigQuery<br/><i>Google Cloud</i>"]
    end

    %% User triggers (top โ†’ middle)
    UI -->|"Find Leads"| LF
    UI -->|"Run SDR"| SDR

    %% Lead Finder โ†’ Maps + BigQuery
    LF -->|"discover"| MAPS
    LF -->|"persist leads"| BQ

    %% SDR โ†’ Voice & Email (middle โ†’ top-right)
    SDR -->|"4. call"| XI
    DA -->|"7. email + deck"| GMAIL

    %% SDR โ†’ BigQuery (middle โ†’ bottom)
    SDR -->|"save session"| BQ

    %% Callbacks (dashed, back to UI)
    LF -.->|"callback"| UI
    SDR -.->|"callback"| UI

    %% Styles
    style UI fill:#6366f1,stroke:#4f46e5,color:#fff
    style LF fill:#10b981,stroke:#059669,color:#fff
    style MAPS fill:#4285F4,stroke:#1a73e8,color:#fff
    style XI fill:#1a1a2e,stroke:#16213e,color:#fff
    style GMAIL fill:#4285F4,stroke:#1a73e8,color:#fff
    style SDR fill:#f59e0b,stroke:#d97706,color:#000
    style RA fill:#fbbf24,stroke:#f59e0b,color:#000
    style PA fill:#fbbf24,stroke:#f59e0b,color:#000
    style FA fill:#fbbf24,stroke:#f59e0b,color:#000
    style CA fill:#fbbf24,stroke:#f59e0b,color:#000
    style DA fill:#8b5cf6,stroke:#7c3aed,color:#fff
    style BQ fill:#4285F4,stroke:#1a73e8,color:#fff
Loading

๐Ÿ› ๏ธ 12+ Integrated Tools

Tool API / Library Purpose
Google Maps Search Places API (New) Discover businesses without websites
Brave Search MCP MCP Server Deep web research on prospects
Google Search MCP MCP Server Fallback research when Brave unavailable
ElevenLabs Phone Conversational AI API AI-powered cold calls with transcripts
Gmail Send Gmail API (OAuth2) Branded HTML email with attachments
Gmail Read Gmail API (OAuth2) Fetch & filter inbound emails
Calendar Create Google Calendar API Schedule meetings with Meet links
BigQuery CRUD BigQuery API (ร—3 tables) Persist leads, sessions, meetings
Deck Generator python-pptx + LLM Professional PowerPoint decks
ICS Generator Custom Python Calendar invite attachments
Email Extractor Regex + NLP Parse dictated emails from transcripts
Meeting Time Parser Regex + NLP Extract scheduling from spoken text
UI Callback HTTP POST + WebSocket Real-time dashboard event streaming

๐Ÿ—๏ธ 5 Microservices

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        MICROSERVICE TOPOLOGY                            โ”‚
โ”‚                                                                         โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”‚
โ”‚   โ”‚  UI Client   โ”‚   โ”‚ Lead Finder  โ”‚   โ”‚  SDR Agent   โ”‚                โ”‚
โ”‚   โ”‚   :8000      โ”‚โ—„โ”€โ–บโ”‚   :8081      โ”‚   โ”‚   :8084      โ”‚                โ”‚
โ”‚   โ”‚  (FastAPI +  โ”‚   โ”‚ (Dedalus +   โ”‚   โ”‚ (8-step      โ”‚                โ”‚
โ”‚   โ”‚  WebSocket)  โ”‚   โ”‚  Maps API)   โ”‚   โ”‚  pipeline)   โ”‚                โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                โ”‚
โ”‚          โ–ฒ                                      โ”‚                       โ”‚
โ”‚          โ”‚           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”                โ”‚
โ”‚          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚Lead Manager โ”‚   โ”‚Deck Generator โ”‚                โ”‚
โ”‚    callbacks         โ”‚   :8082     โ”‚   โ”‚   :8086       โ”‚                โ”‚
โ”‚                      โ”‚(Gmail+Cal+  โ”‚   โ”‚(Dedalus +     โ”‚                โ”‚
โ”‚                      โ”‚ BigQuery)   โ”‚   โ”‚ python-pptx)  โ”‚                โ”‚
โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                โ”‚
โ”‚                                                                         โ”‚
โ”‚   Communication: HTTP REST + WebSocket callbacks + Dedalus ADK          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽจ 8 Agentic Design Patterns

  1. Agent-as-Tool โ€” Specialist agents invoked as tool functions by coordinators
  2. Coordinator + Specialists โ€” Cheap model routes, strong models execute
  3. Generator-Critic โ€” Draft Agent writes โ†’ Fact-Check Agent validates โ†’ refined output
  4. Structured Outputs โ€” Pydantic response_format for guaranteed JSON schemas
  5. Callback Broadcasting โ€” All services POST to /agent_callback โ†’ WebSocket fan-out
  6. Multi-Tier Fallback โ€” Brave MCP โ†’ Google MCP โ†’ LLM knowledge โ†’ template
  7. Merge-not-Replace โ€” New data merges with existing by ID (preserves state across restarts)
  8. Shared Domain Models โ€” Pydantic models as single source of truth across all services

Service Overview

Service Port Powered By Role
UI Client 8000 FastAPI + Jinja2 Dashboard โ€” WebSocket real-time updates, workflow trigger proxy
Lead Finder 8081 Dedalus ADK + Google Maps Google Maps search โ†’ dedup โ†’ BigQuery storage (up to 60 results/type)
SDR Agent 8084 Dedalus ADK + ElevenLabs + Gmail Full pipeline: research โ†’ proposal โ†’ call โ†’ classify โ†’ deck โ†’ email
Deck Generator 8086 Dedalus ADK + python-pptx AI-powered PowerPoint business solution deck generation

Data Flow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                              DATA FLOW                                              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                                     โ”‚
โ”‚  User clicks "Find Leads"                                                           โ”‚
โ”‚       โ”‚                                                                             โ”‚
โ”‚       โ–ผ                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  Google Maps   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  BigQuery    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                 โ”‚
โ”‚  โ”‚ UI Clientโ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚Lead Finderโ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ BigQuery โ”‚                 โ”‚
โ”‚  โ”‚  :8000   โ”‚โ—€โ”€โ”€callbackโ”€โ”€โ”€โ”€โ”‚  :8081    โ”‚  (Dedalus    โ”‚ (Google  โ”‚                 โ”‚
โ”‚  โ”‚ (FastAPI)โ”‚  (WebSocket)  โ”‚ (Dedalus) โ”‚   ADK)       โ”‚  Cloud)  โ”‚                 โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜               โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                 โ”‚
โ”‚       โ”‚                                                     โ–ฒ                       โ”‚
โ”‚       โ”‚ User clicks "Run SDR"                               โ”‚                       โ”‚
โ”‚       โ–ผ                                                     โ”‚                       โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  Brave MCP    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  Save session      โ”‚                       โ”‚
โ”‚  โ”‚SDR Agent โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Research  โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                       โ”‚
โ”‚  โ”‚  :8084   โ”‚  (Dedalus)    โ”‚(Dedalus) โ”‚                                            โ”‚
โ”‚  โ”‚(Dedalus) โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                                            โ”‚
โ”‚  โ”‚          โ”‚  Dedalus ADK  โ”‚ Proposal  โ”‚                                           โ”‚
โ”‚  โ”‚          โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚(Claude S4)โ”‚                                           โ”‚
โ”‚  โ”‚          โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                                            โ”‚
โ”‚  โ”‚          โ”‚  ElevenLabs   โ”‚ AI Call   โ”‚                                           โ”‚
โ”‚  โ”‚          โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚          โ”‚                                            โ”‚
โ”‚  โ”‚          โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                                            โ”‚
โ”‚  โ”‚          โ”‚  Dedalus ADK  โ”‚ Classify  โ”‚                                           โ”‚
โ”‚  โ”‚          โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚(GPT-4.1) โ”‚                                           โ”‚
โ”‚  โ”‚          โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                                            โ”‚
โ”‚  โ”‚          โ”‚  python-pptx  โ”‚ Deck Gen  โ”‚โ”€โ”€โ–ถ .pptx                                  โ”‚
โ”‚  โ”‚          โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚(Dedalus) โ”‚                                            โ”‚
โ”‚  โ”‚          โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                                            โ”‚
โ”‚  โ”‚          โ”‚  Gmail API    โ”‚  Email    โ”‚โ”€โ”€โ–ถ HTML + .pptx + .ics                    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  (Google)     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                           โ”‚
โ”‚                                                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿค– Agent Workflow

SDR Pipeline (per lead)

sequenceDiagram
    participant U as ๐Ÿ‘ค User
    participant UI as ๐Ÿ–ฅ๏ธ Dashboard<br/>(FastAPI)
    participant SDR as ๐Ÿง  SDR Agent<br/>(Dedalus ADK)
    participant BRAVE as ๐Ÿ” Brave Search<br/>(MCP Server)
    participant XI as ๐Ÿ“ž ElevenLabs<br/>(Conv. AI)
    participant DG as ๐Ÿ“Š Deck Gen<br/>(Dedalus + pptx)
    participant GM as ๐Ÿ“ง Gmail<br/>(Google Cloud)
    participant BQ as ๐Ÿ’พ BigQuery<br/>(Google Cloud)

    U->>UI: Click "Run SDR" on lead
    UI->>SDR: POST /run_sdr {business}
    
    rect rgb(59, 130, 246, 0.1)
        Note over SDR,BRAVE: Step 1 โ€” Research (Dedalus ADK + Brave MCP)
        SDR->>BRAVE: Search business + competitors
        BRAVE-->>SDR: Research summary
    end

    rect rgb(139, 92, 246, 0.1)
        Note over SDR: Step 2 โ€” Draft Proposal (Dedalus ADK / Claude Sonnet 4)
        SDR->>SDR: Generate tailored proposal
    end

    rect rgb(16, 185, 129, 0.1)
        Note over SDR: Step 3 โ€” Fact-Check (Dedalus ADK / GPT-4.1)
        SDR->>SDR: Validate claims (generator-critic)
    end

    rect rgb(245, 158, 11, 0.1)
        Note over SDR,XI: Step 4 โ€” Phone Call (ElevenLabs)
        SDR->>XI: Batch call API
        XI-->>SDR: Call transcript
    end

    rect rgb(239, 68, 68, 0.1)
        Note over SDR: Step 5 โ€” Classify Outcome (Dedalus ADK / GPT-4.1 + Pydantic)
        SDR->>SDR: LLM structured classification
    end

    rect rgb(99, 102, 241, 0.1)
        Note over SDR,DG: Step 6 โ€” Generate Deck (Dedalus ADK + python-pptx)
        SDR->>DG: POST /generate {research, transcript}
        DG-->>SDR: .pptx binary
    end

    rect rgb(236, 72, 153, 0.1)
        Note over SDR,GM: Step 7 โ€” Send Email (Gmail API / Google Cloud)
        SDR->>GM: HTML email + .pptx + .ics calendar invite
    end

    SDR->>BQ: Save session (Google BigQuery)
    SDR-->>UI: callback: sdr_completed
    UI-->>U: Real-time update via WebSocket
Loading

โœจ Key Features

๐Ÿ” Lead Discovery (Google Maps + Dedalus ADK)

  • Geographic targeting โ€” search any city via Google Maps Places API
  • Smart filtering โ€” auto-excludes chains (Starbucks, McDonald's, etc.) via Dedalus ADK orchestration
  • No-website filter โ€” only finds businesses without web presence (highest-value prospects)
  • Pagination โ€” follows next_page_token for up to 60 results per business type
  • Data persistence โ€” leads stored in Google BigQuery with dedup by place_id
  • Mock fallback โ€” works in local dev without API key (generates mock data)

๐Ÿง  AI Research & Proposals (Dedalus ADK + Brave MCP)

  • Deep web research via Brave Search MCP through Dedalus ADK โ€” reviews, competitors, market position
  • Generator-critic pattern โ€” Dedalus ADK (Claude Sonnet 4) drafts โ†’ Dedalus ADK (GPT-4.1) fact-checks โ†’ refined output
  • Model specialization โ€” GPT-4.1 for research/coordination, Claude Sonnet 4 for creative drafting โ€” both routed via Dedalus ADK

๐Ÿ“ž AI Voice Calls (ElevenLabs + Dedalus ADK)

  • Natural conversations via ElevenLabs Conversational AI
  • Batch calling API with transcript polling (ElevenLabs)
  • Structured classification โ€” Dedalus ADK (GPT-4.1 + Pydantic) parses transcript into interested / agreed_to_email / not_interested
  • Email extraction โ€” sophisticated parser handles dictated addresses ("a-r-n-a-v at gmail dot com")

๐Ÿ“ง Professional Email Outreach (Gmail API + Dedalus ADK)

  • Branded HTML emails โ€” gradient header, CTA button, professional footer sent via Gmail API (Google Cloud)
  • PowerPoint attachment โ€” AI-generated deck via Dedalus ADK + python-pptx
  • Calendar invite โ€” .ics file with proposed meeting time
  • Fallback email โ€” uses configured fallback when no business email found

๐Ÿ“Š Deck Generation

  • AI-powered content โ€” executive summary, situation analysis, proposed solutions, ROI, timeline (via Dedalus ADK)
  • Professional slides โ€” built with python-pptx, styled for business presentations
  • Template system โ€” professional, creative, and tech color schemes

๐Ÿ–ฅ๏ธ Real-Time Dashboard

  • WebSocket updates โ€” live event streaming from all agents
  • Lead table โ€” discovered businesses with status badges
  • SDR Outreach tab โ€” session cards with call outcomes and email status
  • Stats bar โ€” leads found, contacted, emails sent

๐Ÿ› ๏ธ Tech Stack

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    TECH STACK                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                         โ”‚
โ”‚  ๐Ÿค– AI & Orchestration (Dedalus ADK)                    โ”‚
โ”‚  โ”œโ”€โ”€ Dedalus ADK โ€” agent-as-tool orchestration (core)   โ”‚
โ”‚  โ”œโ”€โ”€ Dedalus ADK โ†’ OpenAI GPT-4.1 โ€” research, classify โ”‚
โ”‚  โ”œโ”€โ”€ Dedalus ADK โ†’ Claude Sonnet 4 โ€” proposal drafting  โ”‚
โ”‚  โ”œโ”€โ”€ Dedalus ADK โ†’ Brave Search MCP โ€” web research      โ”‚
โ”‚  โ””โ”€โ”€ ElevenLabs โ€” conversational AI phone calls         โ”‚
โ”‚                                                         โ”‚
โ”‚  ๐Ÿ”ง Backend                                             โ”‚
โ”‚  โ”œโ”€โ”€ Python 3.12 / FastAPI                              โ”‚
โ”‚  โ”œโ”€โ”€ WebSockets โ€” real-time dashboard updates           โ”‚
โ”‚  โ”œโ”€โ”€ httpx โ€” async HTTP client                          โ”‚
โ”‚  โ”œโ”€โ”€ Pydantic v2 โ€” data validation & structured output  โ”‚
โ”‚  โ””โ”€โ”€ python-pptx โ€” PowerPoint deck generation           โ”‚
โ”‚                                                         โ”‚
โ”‚  โ˜๏ธ Google Cloud                                         โ”‚
โ”‚  โ”œโ”€โ”€ Google BigQuery โ€” leads + sessions storage         โ”‚
โ”‚  โ”œโ”€โ”€ Gmail API โ€” send outreach emails                   โ”‚
โ”‚  โ”œโ”€โ”€ Google Maps Places API โ€” business discovery        โ”‚
โ”‚  โ””โ”€โ”€ Google OAuth2 โ€” authentication                     โ”‚
โ”‚                                                         โ”‚
โ”‚  ๐Ÿ–ฅ๏ธ Frontend                                            โ”‚
โ”‚  โ”œโ”€โ”€ Vanilla HTML/CSS/JS โ€” no framework overhead        โ”‚
โ”‚  โ”œโ”€โ”€ Jinja2 templates โ€” server-side rendering           โ”‚
โ”‚  โ””โ”€โ”€ Dark theme dashboard โ€” real-time WebSocket UI      โ”‚
โ”‚                                                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Project Structure

rapidreach/
โ”œโ”€โ”€ .env                            # API keys & configuration
โ”œโ”€โ”€ pyproject.toml                  # Python packaging & dependencies
โ”œโ”€โ”€ requirements.txt                # pip install dependencies
โ”‚
โ”œโ”€โ”€ common/                         # โ”€โ”€ Shared across all services โ”€โ”€
โ”‚   โ”œโ”€โ”€ config.py                   #    Ports, URLs, BigQuery config, model names
โ”‚   โ””โ”€โ”€ models.py                   #    Pydantic: Lead, Meeting, SDRResult, AgentCallback, etc.
โ”‚
โ”œโ”€โ”€ lead_finder/                    # โ”€โ”€ Service 1: Discover Leads โ”€โ”€
โ”‚   โ”œโ”€โ”€ __main__.py                 #    Entrypoint (port 8081)
โ”‚   โ”œโ”€โ”€ agent.py                    #    FastAPI + Dedalus ADK orchestration
โ”‚   โ”œโ”€โ”€ prompts.py                  #    LEAD_FINDER_PROMPT, MERGER_PROMPT templates
โ”‚   โ””โ”€โ”€ tools/
โ”‚       โ”œโ”€โ”€ maps_search.py          #    Google Maps Places API (pagination + mock fallback)
โ”‚       โ””โ”€โ”€ bigquery_utils.py       #    Google BigQuery: lead persistence + dedup
โ”‚
โ”œโ”€โ”€ sdr/                            # โ”€โ”€ Service 2: SDR Outreach Pipeline โ”€โ”€
โ”‚   โ”œโ”€โ”€ __main__.py                 #    Entrypoint (port 8084)
โ”‚   โ”œโ”€โ”€ agent.py                    #    Dedalus ADK pipeline: research โ†’ call โ†’ email โ†’ deck
โ”‚   โ””โ”€โ”€ tools/
โ”‚       โ”œโ”€โ”€ phone_call.py           #    ElevenLabs batch calls + transcript polling
โ”‚       โ”œโ”€โ”€ email_tool.py           #    Gmail API: MIME email with .pptx + .ics attachments
โ”‚       โ””โ”€โ”€ bigquery_utils.py       #    Google BigQuery: SDR session persistence
โ”‚
โ”œโ”€โ”€ deck_generator/                 # โ”€โ”€ Service 3: PowerPoint Generation โ”€โ”€
โ”‚   โ”œโ”€โ”€ __main__.py                 #    Entrypoint (port 8086)
โ”‚   โ””โ”€โ”€ agent.py                    #    Dedalus ADK content gen + python-pptx rendering
โ”‚
โ””โ”€โ”€ ui_client/                      # โ”€โ”€ Service 4: Dashboard โ”€โ”€
    โ”œโ”€โ”€ __main__.py                 #    Entrypoint (port 8000)
    โ”œโ”€โ”€ main.py                     #    FastAPI: WebSocket, callbacks, workflow proxies
    โ”œโ”€โ”€ templates/
    โ”‚   โ””โ”€โ”€ dashboard.html          #    Interactive dark-theme dashboard
    โ””โ”€โ”€ static/
        โ”œโ”€โ”€ css/style.css           #    Dark theme styles
        โ””โ”€โ”€ js/app.js               #    WebSocket client + UI state management

๐Ÿš€ Quick Start

1. Clone & Install

git clone <repo-url>
cd adi-devfest-hackathon
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

2. Configure Environment

Copy and fill in your API keys in .env:

# โ”€โ”€ Required: AI Orchestration โ”€โ”€
DEDALUS_API_KEY=your-dedalus-key               # https://dedaluslabs.ai/dashboard/api-keys

# โ”€โ”€ Required: Lead Discovery โ”€โ”€
GOOGLE_MAPS_API_KEY=your-maps-key              # GCP Console โ†’ APIs โ†’ Places API

# โ”€โ”€ Required: Data Persistence โ”€โ”€
GOOGLE_CLOUD_PROJECT=your-gcp-project          # GCP Console โ†’ Project ID

# โ”€โ”€ Required: Phone Calls โ”€โ”€
ELEVENLABS_API_KEY=your-elevenlabs-key         # https://elevenlabs.io
ELEVENLABS_AGENT_ID=your-agent-id              # ElevenLabs โ†’ Conversational AI โ†’ Agents
ELEVENLABS_PHONE_NUMBER_ID=your-phone-id       # ElevenLabs โ†’ Phone Numbers

# โ”€โ”€ Required: Email โ”€โ”€
SALES_EMAIL=sales@yourdomain.com

# โ”€โ”€ Optional: LLM Models โ”€โ”€
DEFAULT_MODEL=openai/gpt-4.1                   # Coordinator + research
DRAFT_MODEL=anthropic/claude-sonnet-4-20250514  # Proposal writing

# โ”€โ”€ Optional: Fallback โ”€โ”€
FALLBACK_EMAIL=your-fallback@gmail.com         # Used when no business email found

3. Run All Services

Open 4 terminal tabs and start each service:

# Terminal 1 โ€” ๐Ÿ–ฅ๏ธ Dashboard (start first)
PYTHONPATH=. python -m ui_client

# Terminal 2 โ€” ๐Ÿ” Lead Finder
PYTHONPATH=. python -m lead_finder

# Terminal 3 โ€” ๐Ÿง  SDR Agent
PYTHONPATH=. python -m sdr

# Terminal 4 โ€” ๐Ÿ“Š Deck Generator
PYTHONPATH=. python -m deck_generator

4. Use It

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     ๐Ÿš€ GETTING STARTED                       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                              โ”‚
โ”‚  1. Open  http://localhost:8000  in your browser             โ”‚
โ”‚                                                              โ”‚
โ”‚  2. Enter a city (e.g. "San Francisco, CA")                  โ”‚
โ”‚     โ†’ Click "Find Leads"                                     โ”‚
โ”‚     โ†’ Watch leads populate in real-time                      โ”‚
โ”‚                                                              โ”‚
โ”‚  3. Click "Run SDR" on any lead                              โ”‚
โ”‚     โ†’ Agent researches, calls, emails automatically          โ”‚
โ”‚     โ†’ Track progress in the activity log                     โ”‚
โ”‚                                                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”‘ Environment Configuration

API Keys Guide

Key Where to Get It What It Enables
DEDALUS_API_KEY Dedalus Dashboard All LLM calls (OpenAI, Anthropic) via unified API
GOOGLE_MAPS_API_KEY GCP Console โ†’ Enable Places API Lead discovery via Maps
GOOGLE_CLOUD_PROJECT GCP Console โ†’ Project ID BigQuery data storage
SALES_EMAIL Your Gmail/Workspace email Sending outreach emails
ELEVENLABS_API_KEY ElevenLabs AI phone calls
ELEVENLABS_AGENT_ID ElevenLabs โ†’ Conversational AI โ†’ Create Agent Phone call agent persona
ELEVENLABS_PHONE_NUMBER_ID ElevenLabs โ†’ Phone Numbers Outbound caller ID

GCP Service Account Permissions

Required IAM Roles / OAuth Scopes:
โ”œโ”€โ”€ Gmail API   โ†’ gmail.send (send outreach emails)
โ”œโ”€โ”€ BigQuery    โ†’ bigquery.dataEditor, bigquery.user
โ””โ”€โ”€ Maps API    โ†’ Places API enabled

๐Ÿ“ก API Reference

UI Client โ€” :8000

Method Endpoint Description
GET / Dashboard HTML
WS /ws WebSocket โ€” real-time event stream
POST /agent_callback Receive agent status callbacks
POST /start_lead_finding Trigger lead discovery for a city
POST /start_sdr Trigger SDR pipeline for a lead
GET /api/businesses Get all discovered leads
GET /api/sdr_sessions Get SDR session history
GET /api/events Get activity event log
POST /api/human-input/request Agent requests human feedback
POST /api/human-input/respond Human provides feedback

Lead Finder โ€” :8081

Method Endpoint Description
GET /health Health check
POST /find_leads Start lead discovery {city, business_types, radius_km, max_results}
GET /api/leads?city= Get discovered leads (BigQuery + in-memory)

SDR Agent โ€” :8084

Method Endpoint Description
GET /health Health check
POST /run_sdr Execute full SDR pipeline for a lead
GET /api/sessions Get all SDR sessions (BigQuery + in-memory merged)

Deck Generator โ€” :8086

Method Endpoint Description
GET /health Health check
POST /generate Generate PowerPoint deck from SDR session data

๐Ÿง  How the AI Works

Agent-as-Tool Pattern

RapidReach uses the Dedalus ADK with a coordinator โ†’ specialist architecture:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              COORDINATOR AGENT (Dedalus ADK)              โ”‚
โ”‚                  (GPT-4.1 via Dedalus)                   โ”‚
โ”‚                                                          โ”‚
โ”‚   "Research this business, draft a proposal,             โ”‚
โ”‚    call them, then send an email"                        โ”‚
โ”‚                                                          โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚   โ”‚Research โ”‚  โ”‚ Draft   โ”‚  โ”‚  Call   โ”‚  โ”‚ Email   โ”‚   โ”‚
โ”‚   โ”‚  Tool   โ”‚  โ”‚  Tool   โ”‚  โ”‚  Tool   โ”‚  โ”‚  Tool   โ”‚   โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚        โ”‚            โ”‚            โ”‚            โ”‚         โ”‚
โ”‚        โ–ผ            โ–ผ            โ–ผ            โ–ผ         โ”‚
โ”‚   Dedalus ADK   Dedalus ADK  ElevenLabs  Gmail API     โ”‚
โ”‚   + Brave MCP   + Claude S4   Batch API  (Google)      โ”‚
โ”‚                                                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Model Specialization

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚      Task          โ”‚       Model (via Dedalus)  โ”‚       Why           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Coordination       โ”‚ Dedalus โ†’ GPT-4.1          โ”‚ Fast, cheap routing โ”‚
โ”‚ Web Research       โ”‚ Dedalus โ†’ GPT-4.1 + Brave  โ”‚ Grounded in search  โ”‚
โ”‚ Proposal Drafting  โ”‚ Dedalus โ†’ Claude Sonnet 4   โ”‚ Creative writing    โ”‚
โ”‚ Fact-Checking      โ”‚ Dedalus โ†’ GPT-4.1          โ”‚ Analytical          โ”‚
โ”‚ Classification     โ”‚ Dedalus โ†’ GPT-4.1 + Pydanticโ”‚ Structured output  โ”‚
โ”‚ Deck Content       โ”‚ Dedalus โ†’ GPT-4.1          โ”‚ Structured JSON     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Structured Outputs

Classification and analysis use Pydantic response_format for reliable parsing:

# Classify call outcome with guaranteed schema (via Dedalus ADK)
result = await runner.run(
    input="Classify this call transcript...",
    model="openai/gpt-4.1",  # Routed through Dedalus ADK
    response_format=ConversationClassification,  # Pydantic model
)
# Result is always: {outcome: "interested"|"agreed_to_email"|"not_interested", ...}

๐ŸŽจ Design Patterns

Pattern Where How
Agent-as-Tool SDR (Dedalus ADK) Each specialist is a nested runner.run() call wrapped as a tool function โ€” the coordinator invokes research, drafting, classification as callable tools
Coordinator + Specialists All agents (Dedalus ADK) Cheap model (GPT-4.1) coordinates routing; Claude Sonnet 4 handles creative drafting; GPT-4.1 + Pydantic handles classification
Generator-Critic Proposal pipeline (Dedalus ADK) Draft agent (Claude) writes โ†’ Fact-check agent (GPT-4.1) validates โ†’ refined output; ensures accuracy before reaching prospects
Structured Outputs Classification (Dedalus ADK) Pydantic response_format ensures LLM returns valid JSON matching ConversationClassification schema every time
Callback Broadcasting All services โ†’ UI (FastAPI) Services POST to /agent_callback โ†’ WebSocket broadcast to all connected dashboard clients
Multi-Tier Fallback Research + Maps Brave MCP โ†’ Google Search MCP โ†’ LLM knowledge โ†’ static template; Maps API โ†’ mock data; ensures the pipeline never fully fails
Shared Domain Models common/models.py (Pydantic) Lead, SDRResult, Meeting, AgentCallback, EmailAnalysis โ€” single source of truth across all 5 services
Merge-not-Replace SDR sessions, Leads (BigQuery) New data merges with existing by ID (never overwrites accumulated state); in-memory overlays BigQuery history

๐Ÿ”จ How We Built It

RapidReach is not just a single script โ€” it's a comprehensive system of 14 specialized AI agents working in concert across 5 microservices, communicating via HTTP callbacks and WebSocket real-time updates. We built the entire system from scratch in a single hackathon sprint.

๐Ÿ—๏ธ Architecture Decisions

  • Dedalus ADK as the AI backbone โ€” Every LLM interaction flows through Dedalus's unified API, letting us route between OpenAI GPT-4.1 and Anthropic Claude Sonnet 4 with a single model= parameter change. No vendor lock-in, no separate SDK integrations.
  • Agent-as-Tool pattern โ€” Instead of one monolithic prompt, we decomposed the SDR workflow into 8 discrete specialist agents, each invoked as a tool function by a lightweight coordinator. This gave us modularity, debuggability, and the ability to swap models per task.
  • Direct sequential execution โ€” After experimenting with LLM-driven orchestration (where the coordinator decides step order), we switched to deterministic Python-driven sequencing for the SDR pipeline. This guarantees every step executes in order โ€” research โ†’ proposal โ†’ fact-check โ†’ call โ†’ classify โ†’ deck โ†’ email โ†’ save โ€” with no steps skipped by a hallucinating orchestrator.
  • Real-time dashboard โ€” WebSocket-powered event streaming means the user sees every agent step as it happens โ€” "Researching...", "Calling...", "Email sent!" โ€” creating an engaging, transparent experience.

๐Ÿ› ๏ธ Technology Choices

  • Dedalus ADK โ€” Unified LLM gateway with MCP server support, structured outputs, and multi-model routing
  • Google Maps Places API (New) โ€” Pagination with next_page_token for up to 60 results per business type; smart chain exclusion
  • ElevenLabs Conversational AI โ€” Batch calling API with async transcript polling; natural voice that prospects actually engage with
  • Gmail API (OAuth2) โ€” MIME multipart emails with HTML body + .pptx attachment + .ics calendar invite in a single message
  • python-pptx โ€” AI-generated slide content rendered into professional PowerPoint decks with branded color schemes
  • Google BigQuery โ€” Three tables (leads, sdr_sessions, meetings) with automatic schema creation and merge-on-fetch recovery

๐Ÿง— Challenges We Ran Into

Building a system this complex in a hackathon presented significant challenges:

๐ŸŽฏ Orchestrating 14 Agents Across 5 Services

Managing the state and communication flow between fourteen agents spread across five microservices was our biggest challenge. Each agent produces output that the next agent depends on โ€” research feeds proposals, call transcripts feed classification, classification determines email content. Ensuring proper coordination and maintaining data consistency required careful state management and robust error handling at every step.

๐Ÿ“ž Spoken Email Extraction from Phone Transcripts

When ElevenLabs captures a phone call transcript, business owners dictate their email addresses in unpredictable ways โ€” "T M zero seven M A R C H at gmail dot com" or "it's my email tm07march at gmail.com". We built a sophisticated 5-tier regex parser with number word mapping, leading word stripping, and priority-ranked deduplication to reliably extract emails from messy spoken text. This single function is 80+ lines of carefully tuned regex logic.

๐Ÿ”— MCP Server Reliability & Fallback Chains

Brave Search MCP and Google Search MCP servers don't always respond reliably during high-traffic hackathon conditions. We implemented a three-tier fallback chain โ€” Brave MCP โ†’ Google Search MCP โ†’ LLM knowledge-based research โ†’ static template โ€” so the pipeline never fully fails, even if every external search API is down. Getting the cascading exception handling right without losing context between tiers was tricky.

๐Ÿค– LLM Orchestration vs. Deterministic Control

We initially used the Dedalus ADK's DedalusRunner to let the LLM orchestrator decide which tools to call and in what order. This worked well for the Lead Finder (where the LLM coordinates Maps search + BigQuery storage). But for the 8-step SDR pipeline, we found the LLM would sometimes skip steps, reorder them, or hallucinate tool calls. We pivoted to direct Python sequential execution for the SDR โ€” the coordinator calls each specialist function directly, guaranteeing the full pipeline executes every time.

๐ŸŽจ Building Professional Email + Deck Output

Creating output that looks genuinely professional โ€” not "AI-generated" โ€” required significant iteration. The HTML email uses gradient headers, styled CTAs, and semantic bullet points. The PowerPoint deck uses professional color schemes with proper slide layouts. Getting the MIME encoding right for a single email containing HTML body + base64-encoded .pptx + .ics calendar invite took substantial debugging.


๐Ÿ† Accomplishments We're Proud Of

๐Ÿ’ก Technical Achievements

  • Successfully orchestrated 14 AI agents in a cohesive, working system โ€” each agent has a clear responsibility and produces outputs consumed by downstream agents
  • Implemented 8 distinct agentic design patterns โ€” Agent-as-Tool, Generator-Critic, Structured Outputs, Multi-Tier Fallback, Callback Broadcasting, Coordinator+Specialists, Merge-not-Replace, Shared Domain Models
  • Built a complete end-to-end pipeline โ€” from typing a city name to a business receiving a personalized phone call, branded email with PowerPoint deck, and calendar invite โ€” fully autonomous
  • 3-tier research fallback that ensures the pipeline never fails โ€” Brave MCP โ†’ Google Search MCP โ†’ LLM knowledge โ†’ static template
  • Sophisticated NLP parsing โ€” 80+ lines of regex logic to extract emails from spoken transcripts ("T M zero seven march at gmail dot com" โ†’ tm07march@gmail.com)

๐Ÿ’ผ Business Impact

  • Replaces an entire human SDR workflow โ€” lead discovery, research, cold-calling, proposal writing, email outreach โ€” tasks that take a human sales rep hours per lead
  • Actually calls real phone numbers via ElevenLabs โ€” not a mock or simulation, but production-grade conversational AI phone calls
  • Sends real emails with professional HTML formatting, PowerPoint attachments, and iCalendar invites โ€” indistinguishable from a human sales team
  • Scales from one city to any city โ€” type "San Francisco" or "Mumbai" and the system finds, researches, and reaches out to local businesses

๐ŸŽจ User Experience

  • Real-time WebSocket dashboard โ€” watch every agent step as it happens: "Researching...", "Calling...", "Classifying...", "Email sent!"
  • Professional output quality โ€” gradient-styled HTML emails, branded PowerPoint decks, .ics calendar invites
  • One-click operation โ€” click "Find Leads" then "Run SDR" and the entire 8-step pipeline executes autonomously

๐Ÿ“š What We Learned

Starting this project was an ambitious leap for us. We built the entire system from scratch in a single hackathon sprint, which meant a steep but incredibly rewarding learning curve.

๐Ÿค– Dedalus ADK & Multi-Model Orchestration

We were new to Dedalus ADK, but we were immediately impressed by its unified approach to multi-model AI orchestration. We learned how to route between GPT-4.1 (fast, analytical) and Claude Sonnet 4 (creative, nuanced) within the same pipeline โ€” using the cheap model for coordination and research, and the strong model for proposal writing. The MCP server integration (Brave Search, Google Search) gave us grounded web research without building custom scrapers. The DedalusRunner abstraction let us focus on agent logic rather than API plumbing.

๐Ÿ“ž ElevenLabs Conversational AI

Integrating real phone calls into an automated pipeline was one of our most exciting challenges. We learned how ElevenLabs' batch calling API works โ€” you initiate a call, then poll for the transcript asynchronously. The conversational AI agent needs careful prompt engineering to sound natural, ask the right questions, and gracefully handle rejection. We also learned that parsing spoken email addresses from transcripts is a problem nobody has cleanly solved โ€” so we built our own 5-tier regex parser.

โ˜๏ธ Google Cloud APIs in Concert

We learned how to use Google Maps Places API (New) with pagination tokens for deep business discovery, Gmail API with OAuth2 for sending MIME multipart emails with attachments, Google Calendar API for programmatic meeting creation with Google Meet links, and BigQuery for structured data persistence with automatic schema management. Getting all four Google APIs working together with proper OAuth2 scoping was a valuable lesson in cloud-native development.

๐Ÿ—๏ธ Agentic Architecture Patterns

Perhaps our biggest takeaway was learning when to let the LLM orchestrate vs. when to use deterministic control. The Lead Finder works beautifully with LLM-driven tool calling (the agent decides how to search and store). But the SDR pipeline needed deterministic Python sequencing to guarantee all 8 steps execute. We also learned the power of the Generator-Critic pattern โ€” having one model draft and another model critique produces dramatically better output than a single model alone.

We came away from this hackathon with a profound appreciation for how powerful modern AI tooling has become. Dedalus ADK, Google Cloud, and ElevenLabs gave us building blocks that let a small team build something that would have taken an enterprise sales team months to replicate manually.


๐Ÿ”ฎ What's Next

๐Ÿš€ Immediate Enhancements

  • Industry Specialization โ€” Expand beyond website development to target other service industries (legal, healthcare, consulting)
  • Advanced Analytics Dashboard โ€” ML-powered conversion prediction and A/B testing on proposal styles
  • Multi-Language Support โ€” Localized phone calls and emails for international markets
  • CRM Integration โ€” Connect with Salesforce, HubSpot, and Pipedrive for enterprise workflows

๐ŸŒŸ Long-term Vision

  • Parallel Lead Processing โ€” Fan-out/gather pattern to research and call multiple leads simultaneously
  • AI-Powered Negotiations โ€” Advanced follow-up agents that handle objections and close deals
  • Predictive Lead Scoring โ€” Use historical conversion data to prioritize the highest-value prospects
  • Voice Cloning & Personalization โ€” Custom voice profiles for different industries and markets
  • Human-in-the-Loop Refinement โ€” Let sales managers review and edit proposals before they're sent

๐Ÿ”ง Platform Evolution

  • Agent Marketplace โ€” Allow users to create and share custom specialist agents
  • No-Code Pipeline Builder โ€” Drag-and-drop interface to compose custom SDR workflows
  • Webhook Integrations โ€” Connect with Slack, Teams, and other business tools for notifications

RapidReach represents just the beginning of what's possible when combining Dedalus ADK's multi-model orchestration, Google Cloud's powerful APIs, and ElevenLabs' conversational AI with real-world business needs. We're excited to continue pushing the boundaries of AI-powered sales automation!


๐Ÿ“Š Data Models

erDiagram
    Lead {
        string place_id PK
        string business_name
        string address
        string city
        string phone
        string email
        float rating
        string business_type
        boolean has_website
        string lead_status
    }

    SDRResult {
        string session_id PK
        string place_id FK
        string business_name
        string call_outcome
        string call_transcript
        boolean email_sent
        string research_summary
        string proposal
        timestamp created_at
    }

    Lead ||--o{ SDRResult : "outreach"
Loading

๐Ÿ“œ License

Built at Columbia ADI DevFest Hackathon 2026.


โšก RapidReach โ€” 14 AI Agents ยท 12+ Tools ยท 5 Microservices ยท 8 Design Patterns
Built with โค๏ธ for automating the sales development process

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors