Skip to main content
All Docs
FeaturesPurple PepperUpdated April 6, 2026

Offers Pipeline Dashboard

Offers Pipeline Dashboard

The Offers Pipeline Dashboard provides a Kanban-style view of all rental offers, organised by stage. It supports property-scoped filtering, full-text search, and drill-down to individual offer details.

Accessing the Dashboard

Navigate to /dashboard/offers from the main dashboard sidebar.


Pipeline Stages

Offers move through 9 stages, each colour-coded for quick scanning:

StageColour
InvitedBlue
In ProgressSky
With AgentIndigo
Awaiting AmendmentsAmber
Sent to LandlordOrange
Landlord ReviewedPurple
AcceptedGreen
RejectedRed
CancelledGray

Offer Cards

Each card in the pipeline displays:

  • Property address (with map-pin icon)
  • Applicant name
  • Offered rent (monthly)
  • Last-updated timestamp (relative, e.g. "3 hours ago")

Clicking a card navigates to the Offer Detail Page at /dashboard/offers/[id].


Filtering & Search

Property Filter

A dropdown above the board lists all active properties. Selecting a property filters the pipeline to show only offers for that property.

The selected property is reflected in the URL as a query parameter:

/dashboard/offers?propertyId=<property-id>

This URL can be bookmarked or shared to land directly on a property-scoped view.

Search

The search bar filters offer cards by applicant name or property address. Search and property filter can be used together.


Offer Detail Page

URL: /dashboard/offers/[id]

The detail page shows the full record for a single offer:

FieldDescription
ApplicantName of the applicant
PropertyProperty address
Offered RentMonthly rent amount
Assigned AgentAgent assigned to the offer
CreatedExact date and time the offer was created
Last UpdatedHow long ago the offer was last updated

The current pipeline status is displayed as a colour-coded badge at the top of the page (colours match the pipeline stage colours above).

A Back to offers link returns to the pipeline view.

Loading & Error States

  • While the offer is loading, a skeleton placeholder is shown
  • If the offer cannot be found or an error occurs, an error message is displayed with the back link still accessible

Data & API

Schema

The offers table includes the following fields relevant to the pipeline:

ColumnTypeDescription
propertyIdstringReferences the associated property
propertyAddressstringDenormalised address for display and search

An index (offers_property_idx) is maintained on propertyId for efficient filtering.

tRPC Queries

Query / MutationDescription
offer.listReturns paginated offers; accepts propertyId filter and text search across applicant name and property address
offer.pipelineSummaryReturns per-stage counts; accepts propertyId filter
offer.listPropertiesReturns active properties for the filter dropdown
offer.getByIdReturns a single offer by ID
offer.createCreates an offer; accepts propertyId and propertyAddress
offer.updateUpdates an offer; accepts propertyId and propertyAddress

All mutating operations (create, update, status change) emit an audit log entry via logAudit.

Errors are returned as typed TRPCError codes (e.g. NOT_FOUND, BAD_REQUEST) rather than generic exceptions.