# paoloprandonitechnology/tino architecture

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

- Interactive diagram: https://gitdiagram.com/paoloprandonitechnology/tino
- Repository: https://github.com/paoloprandonitechnology/tino

## Overview

Tino is an AI-assisted digital-product catalog business: it aims to find existing marketplace demand, create products and listings, obtain human publication approval, then measure results and prune or improve listings. Its implemented runtime centers on a ledger-backed reporting loop, metrics, dashboard data, and notifications; the repository also contains a generator for the first Excel product. Marketplace research and publication are documented product stages, but their implementation is not shown in the sampled code. Edges reflect README statements or shown calls; unsampled integrations are not inferred.

Main entry points: [`agente/loop.py`](https://github.com/paoloprandonitechnology/tino/blob/main/agente/loop.py) (Reporting loop), [`agente/notifica.py`](https://github.com/paoloprandonitechnology/tino/blob/main/agente/notifica.py) (Daily notifications), [`agente/telegram.py`](https://github.com/paoloprandonitechnology/tino/blob/main/agente/telegram.py) (Telegram commands), [`strumenti/genera_budget.py`](https://github.com/paoloprandonitechnology/tino/blob/main/strumenti/genera_budget.py) (Product generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Catalog workflow"]
  node_demand["Demand research<br/>[README.md]"]
  node_product_strategy["Product selection<br/>[README.md]"]
  node_approval["Publication approval<br/>[README.md]"]
  node_marketplaces["Marketplaces"]
  node_sales["Marketplace sales<br/>[README.md]"]
end

subgraph group_agent["Agent operations"]
  node_state_data[("Agent state")]
  node_ledger[("Append-only ledger<br/>[ledger.py]")]
  node_metrics["Listing metrics<br/>[metrics.py]"]
  node_run_loop["Reporting loop<br/>[loop.py]"]
end

subgraph group_visibility["Reporting and visibility"]
  node_journal["Daily journal"]
  node_dashboard_data["Dashboard data<br/>[data.json]"]
  node_dashboard["Public dashboard<br/>[index.html]"]
  node_notifications["Daily notifications<br/>[notifica.py]"]
  node_telegram_bot["Telegram commands<br/>[telegram.py]"]
end

subgraph group_creation["Product creation"]
  node_product_generator["Product generator<br/>[genera_budget.py]"]
  node_preview_generator["Preview generator<br/>[anteprime_png.py]"]
  node_product_files["Budget workbook"]
  node_listing_files["Listing materials"]
end

node_owner(("Human owner"))
node_telegram_service["Telegram API"]
node_whatsapp_service["WhatsApp API"]
node_language_model["Comment model"]

node_owner -->|"sets direction"| node_demand
node_demand -->|"informs selection"| node_product_strategy
node_product_strategy -.->|"guides production"| node_product_generator
node_product_generator -->|"writes workbook"| node_product_files
node_product_generator -->|"writes listing"| node_listing_files
node_preview_generator -->|"uses workbook data"| node_product_files
node_owner -->|"approves publication"| node_approval
node_approval -->|"publishes listing"| node_marketplaces
node_marketplaces -->|"hosts products"| node_sales
node_sales -.->|"records revenue"| node_ledger
node_run_loop -->|"verifies and reads"| node_ledger
node_run_loop -->|"calculates indicators"| node_metrics
node_run_loop -->|"reads state"| node_state_data
node_run_loop -->|"writes daily report"| node_journal
node_run_loop -->|"updates dashboard data"| node_dashboard_data
node_dashboard -->|"reads committed data"| node_dashboard_data
node_run_loop -->|"requests commentary"| node_language_model
node_notifications -->|"builds report from"| node_run_loop
node_notifications -->|"sends digest"| node_telegram_service
node_notifications -->|"sends template"| node_whatsapp_service
node_owner -->|"sends commands"| node_telegram_bot
node_telegram_bot -->|"polls and replies"| node_telegram_service
node_telegram_bot -->|"stores update offset"| node_state_data

click node_demand "https://github.com/paoloprandonitechnology/tino/blob/main/README.md"
click node_product_strategy "https://github.com/paoloprandonitechnology/tino/blob/main/README.md"
click node_product_generator "https://github.com/paoloprandonitechnology/tino/blob/main/strumenti/genera_budget.py"
click node_preview_generator "https://github.com/paoloprandonitechnology/tino/blob/main/strumenti/anteprime_png.py"
click node_product_files "https://github.com/paoloprandonitechnology/tino/blob/main/prodotti/budget-familiare/Budget_Familiare_2027.xlsx"
click node_listing_files "https://github.com/paoloprandonitechnology/tino/tree/main/prodotti/budget-familiare/listing"
click node_approval "https://github.com/paoloprandonitechnology/tino/blob/main/README.md"
click node_sales "https://github.com/paoloprandonitechnology/tino/blob/main/README.md"
click node_state_data "https://github.com/paoloprandonitechnology/tino/tree/main/state"
click node_ledger "https://github.com/paoloprandonitechnology/tino/blob/main/agente/ledger.py"
click node_metrics "https://github.com/paoloprandonitechnology/tino/blob/main/agente/metrics.py"
click node_run_loop "https://github.com/paoloprandonitechnology/tino/blob/main/agente/loop.py"
click node_journal "https://github.com/paoloprandonitechnology/tino/tree/main/state/giornale"
click node_dashboard_data "https://github.com/paoloprandonitechnology/tino/blob/main/dashboard/data.json"
click node_dashboard "https://github.com/paoloprandonitechnology/tino/blob/main/dashboard/index.html"
click node_notifications "https://github.com/paoloprandonitechnology/tino/blob/main/agente/notifica.py"
click node_telegram_bot "https://github.com/paoloprandonitechnology/tino/blob/main/agente/telegram.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_demand,node_product_strategy,node_approval,node_marketplaces,node_sales toneBlue
class node_state_data,node_ledger,node_metrics,node_run_loop toneAmber
class node_journal,node_dashboard_data,node_dashboard,node_notifications,node_telegram_bot,node_telegram_service,node_whatsapp_service toneMint
class node_product_generator,node_preview_generator,node_product_files,node_listing_files toneRose
class node_owner,node_language_model toneIndigo
```

## Components

### Catalog workflow

- [Demand research](https://github.com/paoloprandonitechnology/tino/blob/main/README.md): `README.md`
- [Product selection](https://github.com/paoloprandonitechnology/tino/blob/main/README.md): `README.md`
- [Publication approval](https://github.com/paoloprandonitechnology/tino/blob/main/README.md): `README.md`
- **Marketplaces**
- [Marketplace sales](https://github.com/paoloprandonitechnology/tino/blob/main/README.md): `README.md`

### Agent operations

- [Agent state](https://github.com/paoloprandonitechnology/tino/tree/main/state): `state`
- [Append-only ledger](https://github.com/paoloprandonitechnology/tino/blob/main/agente/ledger.py): `agente/ledger.py`
- [Listing metrics](https://github.com/paoloprandonitechnology/tino/blob/main/agente/metrics.py): `agente/metrics.py`
- [Reporting loop](https://github.com/paoloprandonitechnology/tino/blob/main/agente/loop.py): `agente/loop.py`

### Reporting and visibility

- [Daily journal](https://github.com/paoloprandonitechnology/tino/tree/main/state/giornale): `state/giornale`
- [Dashboard data](https://github.com/paoloprandonitechnology/tino/blob/main/dashboard/data.json): `dashboard/data.json`
- [Public dashboard](https://github.com/paoloprandonitechnology/tino/blob/main/dashboard/index.html): `dashboard/index.html`
- [Daily notifications](https://github.com/paoloprandonitechnology/tino/blob/main/agente/notifica.py): `agente/notifica.py`
- [Telegram commands](https://github.com/paoloprandonitechnology/tino/blob/main/agente/telegram.py): `agente/telegram.py`

### Product creation

- [Product generator](https://github.com/paoloprandonitechnology/tino/blob/main/strumenti/genera_budget.py): `strumenti/genera_budget.py`
- [Preview generator](https://github.com/paoloprandonitechnology/tino/blob/main/strumenti/anteprime_png.py): `strumenti/anteprime_png.py`
- [Budget workbook](https://github.com/paoloprandonitechnology/tino/blob/main/prodotti/budget-familiare/Budget_Familiare_2027.xlsx): `prodotti/budget-familiare/Budget_Familiare_2027.xlsx`
- [Listing materials](https://github.com/paoloprandonitechnology/tino/tree/main/prodotti/budget-familiare/listing): `prodotti/budget-familiare/listing`

### Other components

- **Human owner**
- **Telegram API**
- **WhatsApp API**
- **Comment model**

## Connections

- Human owner → Demand research: sets direction (evidence: `README.md`)
- Demand research → Product selection: informs selection (evidence: `README.md`)
- Product selection → Product generator: guides production
- Product generator → Budget workbook: writes workbook (evidence: `strumenti/genera_budget.py`)
- Product generator → Listing materials: writes listing (evidence: `strumenti/genera_budget.py`)
- Preview generator → Budget workbook: uses workbook data (evidence: `strumenti/anteprime_png.py`)
- Human owner → Publication approval: approves publication (evidence: `README.md`)
- Publication approval → Marketplaces: publishes listing (evidence: `README.md`)
- Marketplaces → Marketplace sales: hosts products (evidence: `README.md`)
- Marketplace sales → Append-only ledger: records revenue
- Reporting loop → Append-only ledger: verifies and reads (evidence: `agente/loop.py`)
- Reporting loop → Listing metrics: calculates indicators (evidence: `agente/loop.py`)
- Reporting loop → Agent state: reads state (evidence: `agente/loop.py`)
- Reporting loop → Daily journal: writes daily report (evidence: `agente/loop.py`)
- Reporting loop → Dashboard data: updates dashboard data (evidence: `agente/loop.py`)
- Public dashboard → Dashboard data: reads committed data (evidence: `README.md`)
- Reporting loop → Comment model: requests commentary (evidence: `agente/loop.py`)
- Daily notifications → Reporting loop: builds report from (evidence: `agente/notifica.py`)
- Daily notifications → Telegram API: sends digest (evidence: `agente/notifica.py`)
- Daily notifications → WhatsApp API: sends template (evidence: `agente/notifica.py`)
- Human owner → Telegram commands: sends commands (evidence: `agente/telegram.py`)
- Telegram commands → Telegram API: polls and replies (evidence: `agente/telegram.py`)
- Telegram commands → Agent state: stores update offset (evidence: `agente/telegram.py`)
