Tour Dash
Report · 4 September 2026

My Listings Revamp

The mirror of My Opportunities: that page is the work you do and the money that comes in, this one is the work you buy and the money that goes out. It was a single undated stack of six identical cards behind an All / Open / Filled toggle, which meant a listing with three people waiting on a decision looked exactly like one nobody had applied to. It is now grouped by who each job is waiting on, the applicants are on the row rather than behind a button, and the page no longer offers to pay for work that has not happened yet. Same data layer, same tokens, nothing renamed.

Scope The My Listings page and the row that lists a posted job on it Status Committed as 72c3b9f on 2026-09-04; deployed
01

What was wrong with it

The page held everything an agent needed and sorted none of it. Every card was the same size and the same weight whatever state it was in.

The previous My Listings page: an All, Open, Filled tab row with Showing 6 listings beside it, then six identical full-width cards, each with a service badge, a title repeating that badge, two lines of description, a grey row of location, duration, price and applicant count, and Edit listing and View applications buttons.
Before. Six cards, no dates, no order, and the applicant count set as the fourth item in a grey stat row.
02

What it is now

A posted job is always waiting on somebody, and which somebody is the only question this page has to answer. It is you, or it is the market, or it is a date that has not arrived yet. So the sections are the answer, in the order they need the agent, and "Needs you" is deliberately the only one that can hold an action worth taking.

The redesigned page: sections headed Needs you, Booked, Out for applications and Done, each with a one-line explanation. Every row leads with the agent's photo of the property, then the service type and a real time range, the street or job title, the town, and the price on the right. Under each row a strip shows applicant faces and first names with a Review applicants button, or Booked with Erik Lindstrom, or Nobody has applied yet. A rail on the right reads Waiting on you 5 applicants across 2 listings, Next job Tomorrow, Committed $45, Spent $120.
After. Four sections, the property on every row, and the people waiting on you shown as people.
03

The rail

Four figures, the paying side of the four on My Opportunities. What is waiting on you, what is next, what is committed and not yet paid, and what has been spent. They are all derived from the listings rather than from payment rows, because the payments query returns nothing in demo mode and a rail of zeros would have been worse than no rail.

The redesigned page in the light theme, showing the same four sections and the summary rail on a warm off-white ground.
Light. Every surface and hairline comes from the same tokens, so nothing needed a second design.
The page at 390px: the four figures two by two at the top, then the sections stacked, each row keeping its photo on the left with the strip underneath.
Phone. The rail goes two by two and moves above the work, and the row keeps its photo.
04

Files

FileWhat changed
src/components/ListingBoard.tsxNew. The posted-job row: the property photo bleeding to the left edge, the service type and time range, the cost on the far edge, and one strip underneath carrying the applicants, who it is booked with, and whatever decision is outstanding.
src/pages/MyListings.tsxRewritten. Grouping by who each job is waiting on, the summary rail, skeletons in the shape of the rows, a composed empty state, and the due-date guard on releasing payment.

Verified in both themes at 1440px and 390px on the demo account. Typecheck and production build both clean, no console errors on the deployed page.

05

Two things left open