# databy/taller-google-adk architecture

> Architecture diagram of the GitHub repository databy/taller-google-adk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/databy/taller-google-adk
- Repository: https://github.com/databy/taller-google-adk

## Overview

PuraVida Tech is a Costa Rican computer-shop assistant. A customer request first reaches the ADK root agent: obvious stock or order questions can be answered by the decider without a model call; other requests are handed to a catalog, order/shipping, or admin specialist, whose tools use the shop’s in-memory data. The README also documents LiteLLM-backed model use and backend price-change safeguards. Tool and data relationships are visible in the excerpts; specialist transfers and model-provider wiring are documented or configured, but their runtime internals are not shown.

Main entry points: [`agents/tienda_cr/agent.py`](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py) (Root assistant), [`agents/tienda_cr/decider.py`](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/decider.py) (Fast decider), [`agents/tienda_cr/tools.py`](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py) (Catalog tools), [`agents/tienda_cr/datos.py`](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/datos.py) (Shop data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["Conversation routing"]
  node_root["Root assistant<br/>[agent.py]"]
  node_decider["Fast decider<br/>[decider.py]"]
  node_catalog_agent["Catalog specialist<br/>[agent.py]"]
  node_orders_agent["Orders specialist<br/>[agent.py]"]
  node_admin_agent["Admin specialist<br/>[agent.py]"]
end

subgraph group_capabilities["Shop capabilities"]
  node_catalog_tools["Catalog tools<br/>[tools.py]"]
  node_order_tools["Order and shipping tools<br/>[tools.py]"]
  node_admin_tools["Inventory and price tools<br/>[tools.py]"]
end

subgraph group_runtime["Model and data"]
  node_shop_data[("Shop data<br/>[datos.py]")]
  node_litellm["LiteLLM adapter<br/>[agent.py]"]
end

node_customer(("Customer"))
node_model_service{{"Configured model provider"}}

node_customer -->|"asks"| node_root
node_root -->|"checks first"| node_decider
node_decider -->|"calls stock"| node_catalog_tools
node_decider -->|"calls order"| node_order_tools
node_root -->|"transfers to"| node_catalog_agent
node_root -->|"transfers to"| node_orders_agent
node_root -->|"transfers to"| node_admin_agent
node_catalog_agent -->|"runs callback"| node_decider
node_orders_agent -->|"runs callback"| node_decider
node_admin_agent -->|"runs callback"| node_decider
node_catalog_agent -->|"uses"| node_catalog_tools
node_orders_agent -->|"uses"| node_order_tools
node_admin_agent -->|"uses"| node_admin_tools
node_catalog_tools -->|"reads"| node_shop_data
node_order_tools -->|"reads"| node_shop_data
node_admin_tools -->|"reads and updates"| node_shop_data
node_root -->|"uses model"| node_litellm
node_catalog_agent -->|"uses model"| node_litellm
node_orders_agent -->|"uses model"| node_litellm
node_admin_agent -->|"uses model"| node_litellm
node_litellm -->|"calls provider"| node_model_service

click node_root "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py"
click node_decider "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/decider.py"
click node_catalog_agent "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py"
click node_orders_agent "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py"
click node_admin_agent "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py"
click node_catalog_tools "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py"
click node_order_tools "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py"
click node_admin_tools "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py"
click node_shop_data "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/datos.py"
click node_litellm "https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root,node_decider,node_catalog_agent,node_orders_agent,node_admin_agent toneBlue
class node_catalog_tools,node_order_tools,node_admin_tools toneAmber
class node_shop_data,node_litellm toneMint
class node_customer,node_model_service toneIndigo
```

## Components

### Conversation routing

- [Root assistant](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py): `agents/tienda_cr/agent.py`
- [Fast decider](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/decider.py): `agents/tienda_cr/decider.py`
- [Catalog specialist](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py): `agents/tienda_cr/agent.py`
- [Orders specialist](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py): `agents/tienda_cr/agent.py`
- [Admin specialist](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py): `agents/tienda_cr/agent.py`

### Shop capabilities

- [Catalog tools](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py): `agents/tienda_cr/tools.py`
- [Order and shipping tools](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py): `agents/tienda_cr/tools.py`
- [Inventory and price tools](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/tools.py): `agents/tienda_cr/tools.py`

### Model and data

- [Shop data](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/datos.py): `agents/tienda_cr/datos.py`
- [LiteLLM adapter](https://github.com/databy/taller-google-adk/blob/develop/agents/tienda_cr/agent.py): `agents/tienda_cr/agent.py`

### Other components

- **Customer**
- **Configured model provider**

## Connections

- Customer → Root assistant: asks (evidence: `README.md`)
- Root assistant → Fast decider: checks first (evidence: `agents/tienda_cr/agent.py`)
- Fast decider → Catalog tools: calls stock (evidence: `agents/tienda_cr/decider.py`)
- Fast decider → Order and shipping tools: calls order (evidence: `agents/tienda_cr/decider.py`)
- Root assistant → Catalog specialist: transfers to (evidence: `README.md`)
- Root assistant → Orders specialist: transfers to (evidence: `README.md`)
- Root assistant → Admin specialist: transfers to (evidence: `README.md`)
- Catalog specialist → Fast decider: runs callback (evidence: `agents/tienda_cr/agent.py`)
- Orders specialist → Fast decider: runs callback (evidence: `agents/tienda_cr/agent.py`)
- Admin specialist → Fast decider: runs callback (evidence: `agents/tienda_cr/agent.py`)
- Catalog specialist → Catalog tools: uses (evidence: `agents/tienda_cr/agent.py`)
- Orders specialist → Order and shipping tools: uses (evidence: `agents/tienda_cr/agent.py`)
- Admin specialist → Inventory and price tools: uses (evidence: `agents/tienda_cr/agent.py`)
- Catalog tools → Shop data: reads (evidence: `agents/tienda_cr/tools.py`)
- Order and shipping tools → Shop data: reads (evidence: `agents/tienda_cr/tools.py`)
- Inventory and price tools → Shop data: reads and updates (evidence: `agents/tienda_cr/tools.py`)
- Root assistant → LiteLLM adapter: uses model (evidence: `agents/tienda_cr/agent.py`)
- Catalog specialist → LiteLLM adapter: uses model (evidence: `agents/tienda_cr/agent.py`)
- Orders specialist → LiteLLM adapter: uses model (evidence: `agents/tienda_cr/agent.py`)
- Admin specialist → LiteLLM adapter: uses model (evidence: `agents/tienda_cr/agent.py`)
- LiteLLM adapter → Configured model provider: calls provider (evidence: `README.md`)
