Note
July 2026 · 3 min read

Product limits are design decisions

Why the best thing I did for a growing 3D graph was decide what it should refuse to show.

Field note

The obvious version of Kabo was bigger. Load an Are.na channel, fetch every block, map every connection, and put the whole network on screen at once. It would have been impressive for a few seconds and unusable immediately after.

Kabo is meant to feel like wandering, not querying. That meant the graph needed to accumulate at the pace of a person making choices. A channel opens only a small sample of blocks and sub-channels; a block opens only a few of the channels it belongs to. Those numbers are not API constraints. They are the interaction model.

The same decision ruled out an analytics layer. Counts, rankings, and connection depth would all be technically true, but they would turn a reflective tool into a dashboard. The people I made Kabo for are collectors and researchers, not operators optimizing a funnel.

Limits are often treated as technical debt or a temporary concession. Here, the limit is the product. It protects the pace, keeps the graph legible, and leaves enough space for curiosity to do its work.

Continue with the Kabo case study.