The flat tag problem

Most inventory systems offer some version of tags: apply a word or short phrase to an item, filter by it later. Tag the drill as power-tools. Tag the socket set as hand-tools. Tag both as garage. Simple enough.

The problem surfaces when items differ in ways that matter but are hard to flatten. A piece of furniture has a top surface finish and an edge finish — both material, but not the same material. A circuit board has an input voltage and an output voltage — both voltage, but meaningfully different. A paint tin has a colour and a finish — two attributes, same category (paint), entirely distinct values.

A flat tag system handles this badly. You can write material:oak and material:mdf as separate tags, but you've invented a convention the system doesn't understand. The colon is decoration. Filtering for material won't distinguish input voltage from output voltage. Browsing becomes manual.

The compound structure

Casabeza's CTags system is built around compound keys: a prefix and a suffix, separated by a colon, treated as a unit.

material:top and material:edge are two distinct tags that share a prefix. The system groups them in the tag browser, displays them together on the item record, and understands that they represent different facets of the same category. You can browse all items with any material tag, or narrow to items where specifically material:top is oak.

The suffix is what differentiates. Without it, you have a category. With it, you have a precise attribute. The combination gives you both levels of navigation at once.

Where this pays off

The compound structure earns its keep on items with genuine internal complexity.

Electronics and components. A power supply has an input and an output. voltage:input: 240v AC and voltage:output: 12v DC are separate facts. Both matter. Neither subsumes the other. With flat tags you'd write something like input-240v and output-12v — which is fine until you want to find all items with a 12v output, and half your tags spell it differently.

Materials with multiple faces. Furniture, cabinetry, and flooring often have different materials for different surfaces. A kitchen worktop might be material:surface: quartz and material:edge: oak — same item, different truths about different parts of it. The compound key preserves both without collision.

Condition and status at different points. A log entry might carry condition:pre-repair: fair while the item carries condition:current: good. Both are condition tags. They refer to different moments. The suffix carries the distinction that a flat tag can't.

Multi-system components. A heat pump has a refrigerant circuit, an electrical circuit, and a water circuit — each with their own pressures, temperatures, and service intervals. circuit:refrigerant, circuit:electrical, circuit:water group these under a browseable prefix while keeping them individually addressable.

The paint layer

Tags describe. The paint system makes descriptions visible.

For any tag key, you can define colour rules that map values to colours. Set a rule for voltage:output: 3.3v → orange, 5v → red, 12v → yellow, 24v → blue. Now every item in your inventory with an output voltage tag displays that colour alongside the value — no reading required to recognise the category at a glance.

Paint rules can be scoped to where they apply. A colour rule for condition:current on item records might differ from the same key on log entries — a red condition on an active item is more urgent than red on a historical log. The scoping lets you tune the visual language to context without flattening it.

The combination of compound keys and paint rules creates an inventory that communicates structure visually. A list of electrical components with colour-coded voltage ratings is scannable in a way that the same list with plain text tags is not.

Building vocabulary over time

One practical concern with any flexible tagging system is consistency. If you tag something finish:matte this month and finish:matt next month, you've split what should be a single category.

Casabeza surfaces the values you've used under each key when you're adding tags. Type finish: and see every finish value in your inventory. The vocabulary you've built is available without leaving the tag input — so consistency happens naturally rather than requiring discipline or a maintained reference document.

This compounds over time. An inventory tagged carefully for a year has a controlled vocabulary that makes browsing and filtering reliable. The effort wasn't front-loaded into schema design; it accumulated as a side effect of using the system.