A multi-agent system built with Google ADK that automates toggling freelance availability status on Malt.fr.
┌─────────────────────────────────────┐
│ root_agent │
│ (Orchestrator - lightweight) │
│ │
│ Tools: │
│ ├── AgentTool(malt_browser_agent) │
│ └── AgentTool(email_agent) │
└─────────────────────────────────────┘
│
┌─────────┴─────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ malt_browser │ │ email_agent │
│ _agent │ │ │
│ │ │ Gmail access │
│ Malt.fr │ │ Get verify │
│ login/toggle │ │ codes │
└───────────────┘ └───────────────┘
| Agent | Purpose |
|---|---|
root_agent |
Orchestrates the workflow, delegates to sub-agents |
malt_browser_agent |
Handles Malt.fr browser automation (login, toggle status) |
email_agent |
Retrieves email verification codes from Gmail |
- Python 3.13+
- Node.js (for Playwright MCP)
- Chrome browser
- Groq API key
# Clone and navigate to project
cd prospection
# Install dependencies
uv sync
# Install Playwright browsers
npx playwright install chromeCopy the example environment file and fill in your credentials:
cp toggle_agent/.env.example toggle_agent/.envEdit .env:
GROQ_API_KEY=your-groq-api-key
MALT_PASSWORD=your-malt-passwordcd toggle_agent
uv run python main.pyThis runs the agent end-to-end without any manual interaction.
cd toggle_agent
adk run .Then type run when prompted to start the agent.
- Root agent receives the task and delegates to
malt_browser_agent - Malt browser agent navigates to Malt.fr, logs in, and toggles availability
- If email verification is required, root agent calls
email_agent - Email agent retrieves the verification code from Gmail
- Root agent passes the code back to continue the flow
- Google ADK - Agent Development Kit for multi-agent orchestration
- LiteLLM - Unified LLM interface
- Groq - Fast inference provider (using Kimi K2 model)
- Playwright MCP - Browser automation via Model Context Protocol
Currently using moonshotai/kimi-k2-instruct-0905 via Groq:
- 262K context window
- Excellent tool/function calling support
- Fast inference
toggle_agent/
├── main.py # Entrypoint - run agent programmatically
├── agent.py # Multi-agent definitions
├── playright.py # Custom Playwright computer (optional)
├── .env # Environment variables (not committed)
├── .env.example # Environment template
├── .gitignore # Git ignore rules
└── __init__.py # Package init
Private