# eyeszik/unbound-innovation-engine architecture

> Architecture diagram of the GitHub repository eyeszik/unbound-innovation-engine, 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/eyeszik/unbound-innovation-engine
- Repository: https://github.com/eyeszik/unbound-innovation-engine

## Overview

UNBOUND is a persistent, multi-stage innovation application: an owner submits a brief, a worker runs creative generation through evidence review, evaluation, blueprinting, and validation, then the dashboard exposes progress and exports results. The graph preserves the documented phases and optional integrations; several engine-to-stage calls and UI request details were not excerpted, so those links are shown only where the README or sampled source supports them.

Main entry points: [`unbound/engine.py`](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py) (Phase engine), [`unbound/api.py`](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/api.py) (HTTP API), [`unbound/worker.py`](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/worker.py) (Background worker), [`unbound/static/app.js`](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/static/app.js) (Run dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_dashboard["Run dashboard<br/>[app.js]"]
  node_api["HTTP API<br/>[api.py]"]
  node_export["Report export<br/>[export.py]"]
end

subgraph group_runtime["Run orchestration"]
  node_worker["Background worker<br/>[worker.py]"]
  node_engine["Phase engine<br/>[engine.py]"]
  node_models["Run contracts<br/>[models.py]"]
  node_settings["Runtime settings<br/>[settings.py]"]
end

subgraph group_innovation["Innovation stages"]
  node_provider["Model providers<br/>[providers.py]"]
  node_intent["Intent classification<br/>[engine.py]"]
  node_generation["Idea generation<br/>[engine.py]"]
  node_wildcards["Wildcard seeds<br/>[engine.py]"]
  node_synthesis["Recursive synthesis<br/>[engine.py]"]
  node_novelty["Novelty review<br/>[engine.py]"]
  node_scoring["Candidate evaluation<br/>[engine.py]"]
  node_blueprint["Experiment blueprint<br/>[engine.py]"]
  node_validation["Output validation<br/>[validation.py]"]
end

subgraph group_support["Evidence and persistence"]
  node_evidence["Evidence review<br/>[research.py]"]
  node_computation["Computation queries<br/>[research.py]"]
  node_store[("Run store<br/>[store.py]")]
  node_rules["Prompt rules<br/>[rules.py]"]
end

node_owner(("Run owner"))
node_exa["Exa search"]
node_wolfram["Wolfram Alpha"]

node_owner -->|"submits brief"| node_dashboard
node_dashboard -->|"starts and polls"| node_api
node_api -->|"creates and reads runs"| node_store
node_api -->|"renders Markdown"| node_export
node_worker -->|"claims and commits"| node_store
node_worker -->|"invokes graph"| node_engine
node_worker -->|"constructs provider"| node_provider
node_worker -->|"loads settings"| node_settings
node_engine -->|"reads and commits phases"| node_store
node_engine -->|"requests model output"| node_provider
node_engine -->|"validates phase outputs"| node_models
node_engine -->|"classifies intent"| node_intent
node_engine -->|"generates ideas"| node_generation
node_engine -->|"extracts seeds"| node_wildcards
node_engine -->|"builds hybrids"| node_synthesis
node_engine -->|"reviews novelty"| node_novelty
node_engine -.->|"requests research"| node_evidence
node_engine -->|"requests computations"| node_computation
node_engine -->|"evaluates candidates"| node_scoring
node_engine -->|"defines experiment"| node_blueprint
node_engine -->|"validates completed run"| node_validation
node_engine -.->|"uses prompt rules"| node_rules
node_evidence -->|"searches evidence"| node_exa
node_computation -->|"queries computation"| node_wolfram
node_api -->|"checks provider configuration"| node_settings
node_api -->|"serves interface"| node_dashboard
node_dashboard -.->|"downloads reports"| node_export

click node_dashboard "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/static/app.js"
click node_api "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/api.py"
click node_export "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/export.py"
click node_worker "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/worker.py"
click node_engine "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_models "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/models.py"
click node_settings "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/settings.py"
click node_provider "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/providers.py"
click node_intent "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_generation "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_wildcards "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_synthesis "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_novelty "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_evidence "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/research.py"
click node_computation "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/research.py"
click node_scoring "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_blueprint "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py"
click node_validation "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/validation.py"
click node_store "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/store.py"
click node_rules "https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/rules.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_dashboard,node_api,node_export toneBlue
class node_worker,node_engine,node_models,node_settings toneAmber
class node_provider,node_intent,node_generation,node_wildcards,node_synthesis,node_novelty,node_scoring,node_blueprint,node_validation toneMint
class node_evidence,node_computation,node_store,node_rules toneRose
class node_owner,node_exa,node_wolfram toneIndigo
```

## Components

### User experience

- [Run dashboard](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/static/app.js): `unbound/static/app.js`
- [HTTP API](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/api.py): `unbound/api.py`
- [Report export](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/export.py): `unbound/export.py`

### Run orchestration

- [Background worker](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/worker.py): `unbound/worker.py`
- [Phase engine](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Run contracts](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/models.py): `unbound/models.py`
- [Runtime settings](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/settings.py): `unbound/settings.py`

### Innovation stages

- [Model providers](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/providers.py): `unbound/providers.py`
- [Intent classification](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Idea generation](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Wildcard seeds](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Recursive synthesis](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Novelty review](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Candidate evaluation](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Experiment blueprint](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/engine.py): `unbound/engine.py`
- [Output validation](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/validation.py): `unbound/validation.py`

### Evidence and persistence

- [Evidence review](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/research.py): `unbound/research.py`
- [Computation queries](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/research.py): `unbound/research.py`
- [Run store](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/store.py): `unbound/store.py`
- [Prompt rules](https://github.com/eyeszik/unbound-innovation-engine/blob/main/unbound/rules.py): `unbound/rules.py`

### Other components

- **Run owner**
- **Exa search**
- **Wolfram Alpha**

## Connections

- Run owner → Run dashboard: submits brief (evidence: `README.md`)
- Run dashboard → HTTP API: starts and polls (evidence: `README.md`)
- HTTP API → Run store: creates and reads runs (evidence: `unbound/api.py`)
- HTTP API → Report export: renders Markdown (evidence: `unbound/api.py`)
- Background worker → Run store: claims and commits (evidence: `unbound/worker.py`)
- Background worker → Phase engine: invokes graph (evidence: `unbound/worker.py`)
- Background worker → Model providers: constructs provider (evidence: `unbound/worker.py`)
- Background worker → Runtime settings: loads settings (evidence: `unbound/worker.py`)
- Phase engine → Run store: reads and commits phases (evidence: `unbound/engine.py`)
- Phase engine → Model providers: requests model output (evidence: `unbound/engine.py`)
- Phase engine → Run contracts: validates phase outputs (evidence: `unbound/engine.py`)
- Phase engine → Intent classification: classifies intent (evidence: `README.md`)
- Phase engine → Idea generation: generates ideas (evidence: `README.md`)
- Phase engine → Wildcard seeds: extracts seeds (evidence: `README.md`)
- Phase engine → Recursive synthesis: builds hybrids (evidence: `README.md`)
- Phase engine → Novelty review: reviews novelty (evidence: `README.md`)
- Phase engine → Evidence review: requests research (evidence: `unbound/engine.py`)
- Phase engine → Computation queries: requests computations (evidence: `unbound/engine.py`)
- Phase engine → Candidate evaluation: evaluates candidates (evidence: `README.md`)
- Phase engine → Experiment blueprint: defines experiment (evidence: `README.md`)
- Phase engine → Output validation: validates completed run (evidence: `unbound/validation.py`)
- Phase engine → Prompt rules: uses prompt rules (evidence: `unbound/engine.py`)
- Evidence review → Exa search: searches evidence (evidence: `unbound/research.py`)
- Computation queries → Wolfram Alpha: queries computation (evidence: `unbound/research.py`)
- HTTP API → Runtime settings: checks provider configuration (evidence: `unbound/api.py`)
- HTTP API → Run dashboard: serves interface (evidence: `unbound/api.py`)
- Run dashboard → Report export: downloads reports
