Product diagram

Smoothie as one reading system.

This view shows how discovery, import, reading, smoothing, optimization, alternate layouts, and local persistence fit together as one product.

flowchart TB
    U([User])

    subgraph APP[ Smoothie App ]
        direction TB

        subgraph HOME[Home]
            H1[For you
Prefetched ready-to-read articles] H2[Library
Queued / Reading / Finished] H3[Search / Import / Clipboard tray] H4[Settings entry] end subgraph READER[Reader] R1[Original mode
Default reading mode] R2[Optimized mode
Optional best-reading version] R3[Alternates
Optional on-demand layouts] R4[Inline smoothing
Original mode only] R5[Auto-scroll
Prompter-style reading assist] R6[Focus assist
Recovery / checkpoint / rescue] R7[Progress + scroll state] end subgraph SETTINGS[Settings] S1[API key] S2[Knowledge level] S3[Theme] S4[Focus assist toggle] S5[Prepare Optimized on open] S6[Smoothing language] S7[Discovery topics] S8[Trusted sources] S9[Auto-scroll speed] end subgraph DISCOVERY[Discovery Engine] D1[Curated sources / feeds / archives] D2[Fetch discovery candidates] D3[Rank using topics + trusted sources + reading behavior] D4[Prefetch top picks] D5[Deliver ready articles to For you] end subgraph INGEST[Ingestion Engine] I1[File import] I2[Clipboard import] I3[Search-generated article] I4[Extract / clean / parse] I5[Save as article] end subgraph INTEL[Reading Intelligence] A1[Search article generation] A2[Smoothing model] A3[Article understanding] A4[Optimize decision
Heuristics + model] A5[Optimized article generation] A6[Alternate generation] A7[Author intent / representation reasoning] end subgraph DATA[Local Data] L1[Article library] L2[Discovery candidates] L3[User preferences] L4[Cached optimized article] L5[Cached alternate payloads] L6[Reading progress + scroll position] L7[Smoothed text state] end end subgraph EXT[External Sources / Models] E1[Publisher feeds / archives] E2[Imported files / clipboard text] E3[LLM providers] end U --> HOME U --> READER U --> SETTINGS H1 --> READER H2 --> READER H3 --> INGEST H4 --> SETTINGS SETTINGS --> L3 E1 --> D1 D1 --> D2 D2 --> D3 L3 --> D3 L1 --> D3 D3 --> D4 D4 --> I4 I5 --> D5 D5 --> H1 E2 --> I1 E2 --> I2 H3 --> I3 I3 --> A1 A1 --> I4 I1 --> I4 I2 --> I4 I4 --> I5 I5 --> L1 L1 --> H2 READER --> R1 READER --> R2 READER --> R3 READER --> R4 READER --> R5 READER --> R6 READER --> R7 R1 --> L1 R7 --> L6 L6 --> R7 R4 --> A2 A2 --> L7 L7 --> R1 R4 -. marks stale .-> L4 R2 --> A3 A3 --> A4 A4 -->|worth optimizing| A5 A5 --> L4 L4 --> R2 A4 -->|not needed| R1 R3 --> A6 A3 --> A7 A7 --> A6 A6 --> L5 L5 --> R3 R5 --> L6 R6 --> L3 E3 --> A1 E3 --> A2 E3 --> A3 E3 --> A5 E3 --> A6 classDef app fill:#1f2630,stroke:#46586f,color:#e6edf3,stroke-width:1px; classDef user fill:#f59e0b,stroke:#fcd34d,color:#0d1117,stroke-width:1px; classDef ext fill:#142033,stroke:#3b82f6,color:#dbeafe,stroke-width:1px; classDef data fill:#10221b,stroke:#34d399,color:#d1fae5,stroke-width:1px; classDef intel fill:#2a1b12,stroke:#f97316,color:#ffedd5,stroke-width:1px; class U user; class HOME,READER,SETTINGS,DISCOVERY,INGEST app; class DATA,L1,L2,L3,L4,L5,L6,L7 data; class INTEL,A1,A2,A3,A4,A5,A6,A7 intel; class EXT,E1,E2,E3 ext;