---
id: SEED-003
status: dormant
planted: 2026-03-26
planted_during: v1.1 Phase 17 — GH Issues Client and Product Catalog
trigger_when: any phase enhancing the shipment product lookup modal, card item assignment, or search UX
scope: Small
---

# SEED-003: Lookup modal — nested serial units under products + SN fuzzy search

## Why This Matters

The Shipment Product Lookup modal shows products from the catalog but doesn't show serial units nested underneath. Users assigning items to cards can't pick a specific unit (e.g., "HMD-003") — they can only pick the parent product. Fuzzy search also doesn't match serial numbers, so searching "POT-001" returns nothing.

## When to Surface

**Trigger:** Any phase enhancing the shipment product lookup modal, card item assignment, or search UX.

This seed should be presented during `/gsd:new-milestone` when the milestone scope matches any of these conditions:
- Lookup modal improvements or redesign
- Card item assignment workflow enhancements
- Search/filter improvements across the app
- Product→unit assignment tracking

## Scope Estimate

**Small** — Needs: extend `LookupResultEntry` model with indent/nesting level, query serial_instances alongside products in the search handler, add SN matching to the fuzzy filter, and render nested rows with visual indent in the lookup modal.

## Breadcrumbs

Related code and decisions found in the current codebase:

- `crates/app/ui/lookup-modal.slint` — Result rows rendered from `results` model; needs indent support
- `crates/app/ui/dashboard.slint` — `LookupResultEntry` struct: `item-id`, `display-name`, `image-hint`
- `crates/app/src/main.rs` — `on_lookup_search_changed` queries `read_all_products()` but not `read_units_by_product()`
- `crates/service/src/db/sqlite.rs` — `read_units_by_product()` and `read_all_products()` available

## Notes

The lookup modal already shows products pre-populated on open. The enhancement is to show units nested under each product (with visual indent) and include SN matching in the search. When a unit is selected, the card's product_ref should include the specific serial_id, not just the parent product.
