The editor is the product. Everything else in the app either feeds it or reads from it, so the time you spend learning its shortcuts comes back on every job.
Sections are categories
There is no per item category field. The section heading carries it. A section called Primary Bath is both the grouping and the category, which is why duplicating a section is how you spin up Hall Bath without retyping the item list.
Sections open and close as accordions. You can have one open or several. Drag to reorder, and use the section kebab menu for duplicate, delete, and the section level actions like setting a budget or a markup default.
Desktop: the keyboard grid
Rows are an inline grid, not a modal per item and not a wall of labelled inputs. Tab moves across fields, Enter commits the row and spawns the next one. Keep your hands on the keyboard and a section fills in a couple of minutes.
Three things make new rows cheap.
Duplicate last clones the previous row so you tweak rather than retype. On a job where every plumbing fixture came from the same house, this is the difference between ten fields and two.
Sticky defaults carry the section's last used location, supplier, and manufacturer into the next row. Quantity defaults to 1, status to pending, and the unit of measure to the category's typical one.
The row expander holds the long tail: size and dimensions, supplier, notes, images, allowance, cost, markup, room link, care notes, and takeoff. Core fields stay inline so the grid does not turn into a spreadsheet.
Phone: the card list
At phone widths the same rows render as cards with a focused edit sheet. This is a full entry surface, not a read only convenience. Touch targets are large, money and quantity fields open a numeric keypad, and every field the desktop grid has is present.
Duplicate last is the headline mechanic here, because there is no keyboard to spawn rows. It is a prominent button rather than a menu item for that reason.
Reorder with the up and down move actions, or long press and drag.
Selecting more than one row
Use the checkbox rail to multi select rows. A floating selection bar appears with the bulk actions, including bulk delete. Single deletes are the trash icon that appears on row hover.
Deletes are blocked while you are offline rather than queued, so a delete never fires later against data that has since moved.
Autosave, not a Save button
Changes save on a debounce, per row, with a quiet saving and saved indicator. If the connection drops the write is queued and retried when you reconnect. There is no giant Save button to forget.