diff --git a/README.md b/README.md
index 643e0da..0a3fffd 100644
--- a/README.md
+++ b/README.md
@@ -2,108 +2,130 @@
*Botbot, your not so friendly Bot*
-A Matrix chat bot that listens to specified rooms, records conversations, leverages OpenAI for AI-driven summaries, and assists with answering questions.
+**Botbot** aimsto be a multi‑service chat assistant for [Matrix](https://matrix.org) that captures room conversations, stores them, and uses Large‑Language‑Models to provide concise summaries, answer follow‑up questions, and surface action points.
-## Objectives
+### Roadmap / Aspirational goals
-- Record message history on rooms its participating.
-- Create discussion summaries to capture actionable items, deadlines, and decisions on subjects discussed on those rooms.
-- Use collected knoledge to answer questions placed by participants in discussions that are left unansewerd after some time, and also when its direclty addressed using it's @handle
+* Persistent conversation store (PostgreSQL) for long‑range context.
+* Pluggable LLM back‑ends (local models, Ollama, etc.).
+* Structured meeting summaries with action‑items and deadlines.
+* Additional chat front‑ends (Telegram, WhatsApp, …).
-also,
+---
-- Support additional AI backends beyond OpenAI (e.g., local LLMs, alternative APIs).
-- Possibly support other Chat services beyownd Matrix like Telegram, Teams or Whatsapp.
+## Architecture
+```mermaid
+flowchart LR
+ MS["matrix_service
(Python & nio)"]
+ AI["ai_service
(FastAPI)"]
+ Redis["Redis
Deduplicates replies / guarantees idempotency"]
+
+ MS -- "HTTP (Bearer token)" --> AI
+ AI -- "Matrix Events" --> MS
+
+ MS -.-> Redis
+ AI -.-> Redis
+```
+
+| Component | Image / Entry‑Point | Purpose |
+| ------------------- | ------------------------------------- | ------------------------------------------------------------------------------------- |
+| **matrix\_service** | `python matrix_service/main.py` | Listens to Matrix rooms, forwards each message to `ai_service`, posts the reply back. |
+| **ai\_service** | `python ai_service/main.py` (FastAPI) | Builds a prompt, calls the configured LLM (OpenAI today), caches the reply in Redis. |
+| **redis** | `redis:7` | Reply cache & simple key/value store. |
+
+The services talk to each other over the internal Docker network. Authentication between them is a static bearer token (`AI_HANDLER_TOKEN`).
+
+---
## Current Features
-- **Auto-join Rooms**: Automatically joins rooms when invited.
-- **Message Callbacks**: Responds to basic commands:
- - `!ping` → `Pong!`
- - `hello botbot` → Greeting
+* **Auto‑Join on Invite** – secure E2EE join including device verification.
+* **Stateless AI handler** – FastAPI endpoint `/api/v1/message` receiving a JSON payload.
+* **Idempotent replies** – duplicate Matrix events reuse the cached answer.
-## Prerequisites
-- Docker & Docker Compose (or Python 3.8+)
-- A Matrix account for the bot
-- OpenAI API key
+---
-## Installation
-
-1. **Clone the repository**
-
- ```bash
- git clone https://gitea.alluna.pt/jfig/botbot.git
- cd botbot
- ```
-
-2. **Configure environment variables**
-
- Copy the example file and edit it:
-
- ```bash
- cp .env.example .env
- ```
-
- Then open `.env` and set:
-
- ```ini
- LOG_LEVEL=INFO
- HOMESERVER_URL=https://matrix.org
- USER_ID=@botbot_user:matrix.org
- PASSWORD=your_matrix_password
- OPENAI_API_KEY=your_openai_api_key
- ```
-
-## Usage
-
-### Using Docker Compose (development/hot-reload)
+## Quick Start (development)
```bash
-docker-compose up --build
+# clone & cd
+$ git clone https://gitea.alluna.pt/jfig/botbot.git
+$ cd botbot
+
+# copy environment template
+$ cp .env.example .env
+# edit .env with your homeserver, credentials and OpenAI key
+
+# start everything (hot‑reload volumes mounted)
+$ docker compose up --build
```
-### Building and Running Manually (production)
+The default compose file launches three containers:
+
+* `matrix_service` – watches your rooms
+* `ai_service` – handles AI prompts
+* `redis` – reply cache
+
+Stop with Ctrl‑C or `docker compose down`.
+
+### Production (single image per service)
+
+Build once, then deploy with your orchestrator of choice:
```bash
-# Build container
-docker build -t botbot .
-
-# Run container
-docker run -d --env-file .env \
- -v matrix_data:/app/data \
- --restart unless-stopped \
- botbot
+$ docker compose -f docker-compose.yml --profile prod build
+$ docker compose -f docker-compose.yml --profile prod up -d
```
-## Configuration Options
+---
-- `LOG_LEVEL`: One of `CRITICAL`, `ERROR`, `WARNING`, `INFO`, `DEBUG`, `NOTSET`.
-- `HOMESERVER_URL`: Matrix homeserver endpoint (e.g., `https://matrix.org`).
-- `USER_ID`: Bot's full Matrix user ID (e.g., `@botbot_user:matrix.org`).
-- `PASSWORD`: Password for the bot account.
-- `OPENAI_API_KEY`: API key for OpenAI usage.
+## Configuration
-## How It Works
+All settings are environment variables. The table below reflects the current codebase (commit `ae27a2c`).
-1. **Startup**: Loads environment and logs into the Matrix homeserver.
-2. **Callbacks**:
- - `message_callback`: Handles text messages and triggers AI logic.
- - `invite_cb`: Joins rooms on invitation.
-3. **AI Integration**: Future development will:
- - Pull recent chat history.
- - Call OpenAI endpoints to generate summaries or answers.
+| Variable | Service | Default | Description |
+| ------------------------------ | --------------- | ------------------------ | ---------------------------------------- |
+| `LOG_LEVEL` | both | `INFO` | Python logging level. |
+| `MATRIX_HOMESERVER_URL` | matrix\_service | – | Matrix homeserver base URL. |
+| `MATRIX_USER_ID` | matrix\_service | – | Full user id of the bot. |
+| `MATRIX_PASSWORD` | matrix\_service | – | Password for the bot account. |
+| `MATRIX_LOGIN_TRIES` | matrix\_service | `5` | Number of login attempts before exit. |
+| `MATRIX_LOGIN_DELAY_INCREMENT` | matrix\_service | `5` | Seconds added per retry. |
+| `AI_HANDLER_URL` | matrix\_service | `http://ai_service:8000` | Where to POST messages. |
+| `AI_HANDLER_TOKEN` | both | – | Shared bearer token (keep secret). |
+| `OPENAI_API_KEY` | ai\_service | – | Key for `openai` Python SDK. |
+| `REDIS_URL` | ai\_service | `redis://redis:6379` | Connection string used by `redis-py`. |
+
+---
+
+## API (ai\_service)
+
+```http
+POST /api/v1/message
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "roomId": "!foo:matrix.org",
+ "userId": "@alice:matrix.org",
+ "eventId": "$abc123",
+ "serverTimestamp": 1714821630123,
+ "content": "Hello there"
+}
+```
+
+Returns `{"reply": "Hello Alice!"}` or HTTP 401/500 on error.
+
+---
## Contributing
-1. Fork the repository.
-2. Create a feature branch (`git checkout -b feature/xyz`).
-3. Commit changes and push (`git push origin feature/xyz`).
-4. Open a pull request with a description of your changes.
+Pull requests are welcome! Please open an issue first to discuss what you want to change. All source code is formatted with **ruff** / **black** – run `pre-commit run --all-files` before pushing.
+
+---
## License
-This project is licensed under the [MIT License](LICENSE).
-
-
+[MIT](LICENSE)