# bemxio/julia-robotczyk architecture

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

- Interactive diagram: https://gitdiagram.com/bemxio/julia-robotczyk
- Repository: https://github.com/bemxio/julia-robotczyk

## Overview

Julia Robotczyk is a Facebook Messenger chatbot that responds to messages mentioning it by generating Polish text from a message dataset. The main workflow is Messenger event handling, mention filtering and cleanup, then Markov-chain generation and a Messenger reply. A separate preparation utility extracts one author’s messages from Facebook exports into a dataset. The graph includes documented and excerpted behavior; tokenizer.py is an exploratory script, not a distinct product subsystem.

Main entry points: [`modules/markov.py`](https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py) (Conversational chain), [`bot.py`](https://github.com/bemxio/julia-robotczyk/blob/main/bot.py) (Bot client), [`tools/preparator.py`](https://github.com/bemxio/julia-robotczyk/blob/main/tools/preparator.py) (Message preparator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_conversation["Conversation runtime"]
  node_bot["Bot client<br/>[bot.py]"]
  node_mention["Mention filter<br/>[bot.py]"]
  node_clean["Message cleanup<br/>[bot.py]"]
  node_reply["Reply sender<br/>[bot.py]"]
  node_credentials["Credentials"]
end

subgraph group_generation["Text generation"]
  node_chain["Conversational chain<br/>[markov.py]"]
  node_keyword["Keyword extraction<br/>[markov.py]"]
  node_dataset_filter["Dataset filtering<br/>[markov.py]"]
  node_markov["Markov generation<br/>[markov.py]"]
end

subgraph group_preparation["Dataset preparation"]
  node_preparator["Message preparator<br/>[preparator.py]"]
  node_dataset["Message dataset"]
end

node_user(("Messenger user"))
node_messenger["Facebook Messenger"]
node_spacy["spaCy model"]
node_markovify["markovify library"]
node_archives["Message archives"]

node_user -->|"sends message"| node_messenger
node_messenger -->|"delivers event"| node_bot
node_bot -->|"checks mention"| node_mention
node_mention -->|"accepts message"| node_clean
node_clean -->|"generates from"| node_chain
node_bot -->|"sends response"| node_reply
node_reply -->|"sends message"| node_messenger
node_bot -->|"reads credentials"| node_credentials
node_chain -->|"loads messages"| node_dataset
node_chain -->|"extracts keyword"| node_keyword
node_keyword -->|"parses prompt"| node_spacy
node_chain -->|"filters messages"| node_dataset_filter
node_chain -->|"builds chain"| node_markov
node_markov -->|"generates sentence"| node_markovify
node_archives -->|"provides exports"| node_preparator
node_preparator -->|"writes messages"| node_dataset

click node_bot "https://github.com/bemxio/julia-robotczyk/blob/main/bot.py"
click node_mention "https://github.com/bemxio/julia-robotczyk/blob/main/bot.py"
click node_clean "https://github.com/bemxio/julia-robotczyk/blob/main/bot.py"
click node_reply "https://github.com/bemxio/julia-robotczyk/blob/main/bot.py"
click node_chain "https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py"
click node_keyword "https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py"
click node_dataset_filter "https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py"
click node_markov "https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py"
click node_preparator "https://github.com/bemxio/julia-robotczyk/blob/main/tools/preparator.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_bot,node_mention,node_clean,node_reply,node_credentials,node_user toneBlue
class node_chain,node_keyword,node_dataset_filter,node_markov toneAmber
class node_preparator,node_dataset toneMint
class node_messenger,node_spacy,node_markovify,node_archives toneIndigo
```

## Components

### Conversation runtime

- [Bot client](https://github.com/bemxio/julia-robotczyk/blob/main/bot.py): `bot.py`
- [Mention filter](https://github.com/bemxio/julia-robotczyk/blob/main/bot.py): `bot.py`
- [Message cleanup](https://github.com/bemxio/julia-robotczyk/blob/main/bot.py): `bot.py`
- [Reply sender](https://github.com/bemxio/julia-robotczyk/blob/main/bot.py): `bot.py`
- **Credentials**

### Text generation

- [Conversational chain](https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py): `modules/markov.py`
- [Keyword extraction](https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py): `modules/markov.py`
- [Dataset filtering](https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py): `modules/markov.py`
- [Markov generation](https://github.com/bemxio/julia-robotczyk/blob/main/modules/markov.py): `modules/markov.py`

### Dataset preparation

- [Message preparator](https://github.com/bemxio/julia-robotczyk/blob/main/tools/preparator.py): `tools/preparator.py`
- **Message dataset**

### Other components

- **Messenger user**
- **Facebook Messenger**
- **spaCy model**
- **markovify library**
- **Message archives**

## Connections

- Messenger user → Facebook Messenger: sends message (evidence: `README.md`)
- Facebook Messenger → Bot client: delivers event (evidence: `README.md`)
- Bot client → Mention filter: checks mention (evidence: `bot.py`)
- Mention filter → Message cleanup: accepts message (evidence: `bot.py`)
- Message cleanup → Conversational chain: generates from (evidence: `bot.py`)
- Bot client → Reply sender: sends response (evidence: `bot.py`)
- Reply sender → Facebook Messenger: sends message (evidence: `bot.py`)
- Bot client → Credentials: reads credentials (evidence: `bot.py`)
- Conversational chain → Message dataset: loads messages (evidence: `modules/markov.py`)
- Conversational chain → Keyword extraction: extracts keyword (evidence: `modules/markov.py`)
- Keyword extraction → spaCy model: parses prompt (evidence: `modules/markov.py`)
- Conversational chain → Dataset filtering: filters messages (evidence: `modules/markov.py`)
- Conversational chain → Markov generation: builds chain (evidence: `modules/markov.py`)
- Markov generation → markovify library: generates sentence (evidence: `modules/markov.py`)
- Message archives → Message preparator: provides exports (evidence: `tools/preparator.py`)
- Message preparator → Message dataset: writes messages (evidence: `tools/preparator.py`)
