The Information Consumption Framework
A four-layer framework for converting information from any form into the form you want to consume it in.
Information doesn’t always want to be consumed the way it is registered. The registered form optimizes for production, not consumption: a podcast is a podcast because two people had microphones, a tweet because of a character limit.
As of this year, I believe it is trivial to convert it into any form to be consumed. Until recently, every such conversion was its own industry: audiobook narration, abridged editions, newsletter summaries.
The aim of this framework:
- Structure your information pipelines for any input to any output
- Instruct your AI using these information pipelines
- Put into practice the fact that information is not bound to a medium
This framework is an exercise: fill it in for yourself as you read.
The framework
Information flows through four layers, from where it is registered to the form it is consumed in:
---
config:
block:
padding: 6
themeVariables:
fontSize: 12px
---
block-beta
columns 11
S["Information sources"]:2 a1<[" "]>(right):1 C["Collection layer<br/>(optional)"]:2 a2<[" "]>(right):1 V["Conversion layer"]:2 a3<[" "]>(right):1 U["Consumption layer"]:2
The same layers with examples filled in:
---
config:
block:
padding: 6
themeVariables:
fontSize: 12px
---
block-beta
columns 11
block:S:2
columns 1
st["Information sources"] s1["Book / epub / print"] s2["Article / blog"] s3["Podcast / audiobook"] s4["Tweet / paragraph"] s5["Interactive AI chat"] s6["Etc."]
end
a1<[" "]>(right)
block:C:2
columns 1
ct["Collection layer"] co["(optional)"] c1["Obsidian"] c2["Apple Notes"] c3["File system"] c4["Etc."]
end
a2<[" "]>(right)
block:V:2
columns 1
vt["Conversion layer"] v1["Claude Code / Codex"] v2["ChatGPT / Claude"] v3["Gemini Notebook"] v4["Etc."]
end
a3<[" "]>(right)
block:U:2
columns 1
ut["Consumption layer"] u1["Book / epub / print"] u2["Article / blog"] u3["Podcast / audiobook"] u4["Tweet / paragraph"] u5["Interactive AI chat"] u6["Etc."]
end
style st fill:transparent,stroke:transparent
style ct fill:transparent,stroke:transparent
style co fill:transparent,stroke:transparent
style vt fill:transparent,stroke:transparent
style ut fill:transparent,stroke:transparent
The source column and the consumption column are the same list: any form can come in, and any form can come out. That is the point: information is not bound to the form it happens to arrive in.
The recipient chooses
The source determined the form the information was registered in. Everything downstream of that is the recipient’s choice. The recipient should be able to make choices on:
- How to consume the information: any form in the consumption layer
- How comprehensive to consume the information
Comprehensiveness
Information can be but doesn’t have to be close to the information source. Comprehensiveness is one axis, from less to more:
- Summarized
- Verbatim / unabridged
- Extended
Extended can be adding critique, fact checking, extra information, etc.
Two operations apply at any point on the axis:
- Modified
- Combined
Archival and maintained information
I propose a hard split between two types of information:
- Archival information: saved, hashed and ideally published in a public repository. It only needs to be converted once, and its converted outputs can be archival too.
- Maintained information: timestamped and updated. It needs a standing conversion pipeline, so the consumption layer can be readily updated as well.
Fill it in
For each layer, write down your own version. For the consumption layer, also decide how comprehensive, and archival or maintained.
---
config:
block:
padding: 6
themeVariables:
fontSize: 12px
---
block-beta
columns 11
block:S:2
columns 1
st["Information sources"] s1["..."] s2["..."] s3["..."]
end
a1<[" "]>(right)
block:C:2
columns 1
ct["Collection layer"] co["(optional)"] c1["..."] c2["..."] c3["..."]
end
a2<[" "]>(right)
block:V:2
columns 1
vt["Conversion layer"] v1["..."] v2["..."] v3["..."]
end
a3<[" "]>(right)
block:U:2
columns 1
ut["Consumption layer"] u1["..."] u2["..."] u3["..."]
end
style st fill:transparent,stroke:transparent
style ct fill:transparent,stroke:transparent
style co fill:transparent,stroke:transparent
style vt fill:transparent,stroke:transparent
style ut fill:transparent,stroke:transparent
Your answers are the instruction: hand them to your AI and it can build the pipeline.
Personal first
The primary aim is personal. What you convert doesn’t necessarily have to be shared, although it can be. It might seem like a waste but outputs can be single use and thrown away after consuming it.