Form Engine

A product-style form that keeps validation, dirty state, derived summaries, and async save flow in observables. The visible UI is reactive, but the state remains simple.
Dirty fields
changes since the last save
Validation errors
blocking save right now
Estimated monthly
derived from plan, seats, and add-ons
Completion
required fields in good shape
Save state

Account

Primary identity and contact details.

Organization

Shown on invoices and the internal summary cards.
The person responsible for the draft.

Contact

Used for save confirmations and review notes.
Separate from the primary contact if needed.

Project

Timeline, scope, and delivery pressure.

Timeline

Used as the main label in the summary.
Raises the derived monthly estimate when urgent.

Scope

Feeds the derived pricing summary.
Affects the per-seat estimate.

Notes

Freeform context for reviewers and implementers.
Optional, but useful when the form becomes a real intake flow.