One flow for one asset, another for a thousand, both validated the same way
Power users CSV-upload, single users hand-key; both paths run the same validation before anything touches the live tree.
1
2
3
arbor / Lumina / add entities
Single
Bulk
History
Path A · single entity
Add one building, hand-keyed
Form mode. Every field validates as you type, against the same rules the CSV path runs.
Name✓ valid
Exchange House
Parent · Property✓ resolved
Metropolitan
Floor area · m²✓ in range
18,400
EPC rating✗ missing
Required for buildings in EU portfolios
Rule M-04 · "EPC required when fund.region=EU"
Year built
optional
iOne field fails the same rule the bulk path would catch on row 17. The form just shows it earlier.
Path B · bulk
CSV upload, 1,024 rows
Power-user path. Drag a sheet, dry-run validates every row, you commit only after reviewing the error report.
↑
portfolio-q2.csv
1,024 rows · 14 columns · 412 kB
Dry-run validation
812 / 1,024
Report798 OK · 14 errors
012
King's Cross 12 · valid building under Metropolitan
OK
017
DS-2093 · parent space "Plant rm" not found in tree
Fix
018
Floor 5 · resolved to space under Exchange House
OK
041
EPC required, missing on row · rule M-04
Fix
042
Bishopsgate Ct · all required fields present
OK
What you're looking at
1
One validator, two front doors. The single form and the CSV upload call the same rule engine — a missing EPC is rejected the same way whether it's row 41 of a sheet or a hand-typed building.
2
Dry-run before commit. Bulk uploads never touch the live tree until the user reviews the report. 798 valid rows can be committed and the 14 errors fixed without re-uploading the whole sheet.
3
Error report is exportable. The same CSV comes back annotated with row, column, rule ID, and human message, so an analyst can fix in their own sheet and re-upload.