I’m building Paddy, a platform for finding verified rental homes in Ghana.
Every listing is reviewed before it goes live. The problem: a rejected landlord had no idea what went wrong, so they’d either give up or resubmit the same thing.
So now, before a reviewer can reject a listing, a dialog asks them for the reason. The landlord sees it on their dashboard and knows exactly what to fix.
Built with Next.js on a Django REST API. Code in the comments.
What sells it for me is the refusal telling the agent exactly where the token should go. A bare "no hex" error usually just sends it looping. Does guard.mjs run only as an agent hook, or in pre-commit too so it catches humans as well?
A status label alone doesn't explain what happens next.
In this Strata practice project, the request screen combines the resident's conversation with the building manager, its current status, and a progress timeline.
A useful UX check is to ask which updates customers still have to call for. If the answer is already in the system, make it visible to them.
Which update would you put on screen first?
Practice UX/UI project for a fictional company. Sample data.