2026
paddy is a rental marketplace for Ghana where every home is visited by staff before it goes live, and rent moves through escrow instead of straight to a landlord or agent.
It is a working portfolio demo with seeded listings in Accra and Kumasi and Paystack in test mode. It has no real users and has moved no real money. The real launch waits on funding, a broker licence and a legal opinion.
Renting in Ghana asks renters to trust strangers with large sums of money up front. The common pain points:
The renter carries all of this risk, and there is little recourse once money has changed hands.
paddy puts the renter first and removes the reasons to distrust a listing.
Landlords should find it easy too, but where the two conflict, the renter wins.
The business model went through four versions. Each one was dropped for a concrete reason, and the code moved with it.
In the escrow version, the renter pays once, views the home, then confirms or declines in the app. On confirm they pay the balance of the advance. After a 48-hour dispute window, the landlord receives the advance minus a 5% commission. On decline, the rent is refunded and the booking fee is kept to cover the viewing.
The GHS 300 fee is based on real costs. A staff-escorted viewing to East Legon costs roughly GHS 190 to 235, mostly round-trip transport, so a lower fee would lose money on most viewings.
The hardest part was making money handling boring, explicit and hard to get wrong.
How it was built. AI coding agents wrote much of the code, especially the Django backend. My job was the decisions around it: choosing the stack, defining the payment flow and its states, writing the rules below, and checking the output against them. Wherever money is involved, I asked for boring, explicit code I could actually read.
Architecture. A Next.js App Router frontend talks to a Django REST backend through a proxy route. JWT tokens live in httpOnly cookies held by Next, so the browser never sees them. PostGIS powers map and area search.
Every reservation follows a state machine. A home is only held once payment is confirmed, and every transition is explicit.
A dispute freezes release until paddy issues a written decision. Declines and refunds return the rent; the booking fee stays with paddy.
The ledger is double-entry. Every escrow movement writes balanced entries, keyed by payment reference so a repeated webhook never moves money twice. The ledger module is the only code allowed to write entries.
Money rules I set for the code:
Things I learned the hard way: Paystack test mode cannot create Ghana bank subaccounts, allows only a few live bank lookups a day, and some default Python user agents get blocked by Cloudflare. Each one changed the design.
The name. paddy, always lowercase. It joins a rental "pad" with the West African slang for a trusted friend, which is exactly what the product promises.
The mascot. A soft blob with a roof bump on top and eyes drawn as thick curved strokes. In the logo it sits on a gradient squircle and blinks. I kept the eyes still on sign-in screens, where motion would distract.
The voice. Positive, energetic and friendly, modern but premium. Copy avoids em dashes and leads with what the renter gains: verified homes, no middleman, lawful advance rent.
The system. Instead of starting from zero, I reskinned the design system from Bookstaff, another product of mine. Components are built and reviewed in Storybook, and dashboard pages follow dedicated Figma frames for landlords and renters. The brand colour is still open.
Moving people's rent is regulated, so I mapped the law before treating any feature as finished. Each regulator shaped the product.
The code enforces what it can: advance rent is capped at 6 months, and no real money moves until a bank trust deed, the Paystack route and a legal opinion are in place.
paddy is a working demo, not a live business. You can browse seeded homes, sign in with Google, reserve a home and pay through Paystack test checkout.
Not built yet: automatic release after 48 hours, real refunds and payouts (both mocked), chargeback handling and payment reconciliation.
What's next: a simpler money flow. The GHS 300 fee becomes a viewing fee covering up to three nearby homes on one trip, and rent only enters escrow for the home the renter picks. Renters pay less up front, and paddy holds less money for less time.
What I learned:
I led the product, design and brand, and built it with AI coding agents. I set the architecture and the rules the code had to follow, then reviewed and tested the output. The frontend is where I go deepest.
Deliverables Include: