Planting Seasons & Inventory Management

Back to Projects
Summary

Mission

Two new Terraware features — Planting Seasons and Inventory Planning — that give Forest Planting Managers and nursery Inventory Managers one shared, coordinated workflow. Planting Managers define species-level targets and schedule planting dates; Inventory Managers commit nursery stock and fulfill withdrawal requests — replacing the tangle of spreadsheets that used to live outside the platform.

My contributions

I partnered with the PM, engineering, and both planting and nursery teams to map the existing spreadsheet-based workflow, then designed the end-to-end experience connecting season planning to nursery operations. I prototyped the flows in code with AI to validate them early. Contributions included research, workflow mapping, wireframes, AI prototyping, end-to-end flows, UI/visual design, design system component updates, stakeholder management, and user testing.

Timeline

6 months

Team

Reported to Head of Product. Collaborated with Senior Product Manager, Front End & Back End Developers, Internal Forestry Operations (IFO), and nursery Inventory teams.

Role

Product Designer — UX Design & AI Prototyping

Results

86%

Adoption of the new planting workflow in Terraware

98%

Adoption of inventory allocation

12%

Decrease in plant mortality from nurseries

−37 min

Less time spent working outside Terraware

Inventory table alongside a map of how new features connect to existing Inventory and Withdrawals

Problem

Planting and nursery teams planned entire seasons in sprawling spreadsheets outside Terraware — species targets, planting dates, and nursery stock all tracked separately, with no shared source of truth. Coordination happened over email and guesswork, and mismatches between what was planted and what nurseries grew drove up plant mortality.

Objective

Bring season planning into Terraware as a shared workflow.

Connect planting targets directly to nursery inventory and withdrawals.

Give both teams live progress against goals.

Two Roles, One Workflow

Planting Seasons and Inventory Planning are two sides of the same workflow. Rather than build them in isolation, I mapped how the new features — Planting Seasons, planting dates, withdrawal requests, and inventory allocation — would connect to the tools teams already relied on, like Inventory and Withdrawals. Forest Planting Managers own what gets planted and when; nursery Inventory Managers own what's grown and withdrawn. The design had to make that handoff feel like one continuous loop.

The previous workflow spread across propagation spreadsheets, timelines, and third-party inventory tools

How Teams Worked Before

Before this project, a single planting season lived across a patchwork of spreadsheets — propagation calculators, species targets, planting timelines, and nursery stock, each maintained separately and often out of sync. I audited these documents and the third-party tools teams borrowed to fill the gaps, then mapped every input and decision into a workflow Terraware could own end to end.

Low-fidelity wireframes of the Inventory Planning and species allocation screens

Wireframing the Flow

Early wireframes focused on the trickiest screen: the inventory allocation view where nursery managers weigh what's available against what each season needs. I worked in low fidelity to pressure-test how targets, allocations, and fulfillment could live in a single scannable table before committing to visual design.

A component spec and prototype README used to generate working screens with Claude
Interactive Claude-built prototypes of Planting Season Planning and per-species targets

Prototyping with AI

To test the flows quickly, I built interactive prototypes with Claude — generating working screens from a component spec and design-system tokens, then iterating directly in code. This let me put clickable versions of Planting Season Planning and per-species targets in front of stakeholders in days rather than weeks, and surface interaction problems early, before a single production ticket was written.

The Planting Seasons list with goal, withdrawn, and left-to-plant totals per season

Planting Seasons

The Planting Seasons list gives Planting Managers a home for every season on a site — active, upcoming, and closed. Each card summarizes the planting goal, how many plants have been withdrawn for planting, and how many are left to plant, along with the strata and substrata in scope. It's the at-a-glance answer to "where does this season stand?"

A season detail view with species targets set per Planting Site substratum

Setting Species Targets

Inside a season, Planting Managers set species-level targets for each Planting Site substratum. Targets can be updated at any time and are immediately visible to the Inventory Manager in Inventory Planning — the first link in the coordination loop. This granularity matters: restoration success depends on planting the right mix of species in the right zones.

Species Summary drawer showing target, allocated, withdrawn, and left-to-plant totals

Species Summary

A rolled-up Species Summary shows target, allocated, withdrawn, and left-to-plant totals across every species in the season — so a manager can confirm the season is fully covered before planting begins, and spot the species that are still short.

The Planting Dates tab listing scheduled planting events with plants and species counts

Planting Dates

Planting rarely happens all at once. The Planting Dates tab lets managers schedule multiple planting events across a season, each with its own set of species and quantities, building a realistic timeline the nursery can prepare against.

Planting date setup form with quantity to plant per species and a Save & Request action

Scheduling a Planting & Notifying the Nursery

When creating a planting event, managers specify exactly what will go in the ground — quantity per species, per substratum — against what's available to schedule. A single "Save & Request" action notifies the nursery to prepare those seedlings for withdrawal, turning a planting plan into an actionable request without leaving the platform.

The Inventory Planning allocation table showing available, target, and allocated stock per species

Inventory Planning & Allocation

On the nursery side, Inventory Managers get a dedicated Inventory Planning page. It surfaces demand from every planting season in one allocation table — available stock, target, and allocated quantities per species — with a progress bar showing how well each species is covered. Managers can expand any species to allocate inventory across competing seasons, proactively committing stock where it's needed most.

Sequence diagram of the notification loop between Planting Manager and Inventory Manager

Closing the Loop

The two roles stay in sync through a series of notifications rather than side conversations. When a Planting Manager adds goals, the Inventory Manager is prompted to allocate; when allocation updates, the manager sees it; when planting dates create withdrawal requests, the nursery is prompted to fulfill them; and recorded withdrawals flow back into planting progress. I mapped this exchange as a sequence to make sure every handoff had a clear trigger and a clear owner.

The nursery Withdrawals queue showing pending requests from Planting Managers with notes and statuses

Fulfilling Withdrawal Requests

Requests from Planting Managers land in the nursery's Withdrawals queue, each tagged with a season, date, requested quantity, and an optional note for context. Inventory Managers can review pending requests, prioritize them, and fulfill them — with statuses like Pending and Partial keeping both sides honest about what's actually been pulled.

The multi-step Withdraw from Batches flow with a live coverage summary by species

Updated Withdrawal Flow

Recording a withdrawal used to be one long, error-prone form. I restructured it into a guided, multi-step flow — Purpose & Destination, then Quantities by seedling batch, then Photos — so managers make one set of decisions at a time. A live coverage summary flags species that are covered, partially covered, or not covered against the request, and every withdrawal is linked back to its season and planting event, so planting progress updates automatically and mortality from mismatched stock drops.