# keithnery/oracle-of-the-books architecture

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

- Interactive diagram: https://gitdiagram.com/keithnery/oracle-of-the-books
- Repository: https://github.com/keithnery/oracle-of-the-books

## Overview

Oracle of the Books is a small interactive Python book recommender. The user selects a genre, era, and required detail; the program intersects the corresponding curated book lists and prints matching titles or a no-results message. The single script contains the catalog data and workflow, so there are no separate runtime layers or external services.

Main entry points: [`oracle of the books.py`](https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py) (Set intersection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_recommendation["Recommendation"]
  node_prompts["Preference prompts"]
  node_catalog["Book criteria catalog"]
  node_matcher["Set intersection"]
  node_results["Recommendation output"]
end

node_reader(("Reader"))

node_reader -->|"enters choices"| node_prompts
node_prompts -->|"supplies preferences"| node_matcher
node_catalog -->|"provides criteria"| node_matcher
node_matcher -->|"produces matches"| node_results
node_results -->|"prints titles"| node_reader

click node_prompts "https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py"
click node_catalog "https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py"
click node_matcher "https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py"
click node_results "https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.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_prompts,node_catalog,node_matcher,node_results toneBlue
class node_reader toneIndigo
```

## Components

### Recommendation

- [Preference prompts](https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py): `oracle of the books.py`
- [Book criteria catalog](https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py): `oracle of the books.py`
- [Set intersection](https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py): `oracle of the books.py`
- [Recommendation output](https://github.com/keithnery/oracle-of-the-books/blob/main/oracle%20of%20the%20books.py): `oracle of the books.py`

### Other components

- **Reader**

## Connections

- Reader → Preference prompts: enters choices (evidence: `oracle of the books.py`)
- Preference prompts → Set intersection: supplies preferences (evidence: `oracle of the books.py`)
- Book criteria catalog → Set intersection: provides criteria (evidence: `oracle of the books.py`)
- Set intersection → Recommendation output: produces matches (evidence: `oracle of the books.py`)
- Recommendation output → Reader: prints titles (evidence: `oracle of the books.py`)
