Building Welsh Motorhub's Buyer Request Funnel
Welsh Motorhub started from a practical problem: buyers want specific cars quickly, but dealers and sellers need qualified intent, not random chats.
So I built a buyer-request funnel that keeps the platform in the middle of the transaction path while still being simple for users.
Project Links
- Case target: Welsh Motorhub Marketplace
- Buyer form: Request a Car
- Seller board: Open Requests
What I Built
1) Buyer Request Intake
- Buyers submit required car details (make, model, budget, county, timeline).
- Requests receive a public code (example:
REQ-ABC12). - Requests expire automatically after 7 days.
- Buyer phone numbers are stored privately and never exposed on the public board.
2) Public Request Board for Sellers
- Sellers browse live requests by county and specification.
- Seller action is explicit: Send offer on WhatsApp.
- Offers route to platform support WhatsApp first, not directly to buyer.
3) Admin Operations Layer
- Admin dashboard shows full buyer details and request status.
- New requests notify admin users.
- Admin can remove requests from public listing (
status = CLOSED) while preserving records.
4) Early Monetization Guardrails
- Dealer sign-in is required to send offers.
- Free tier: one offer per dealer per Nairobi calendar day.
- Upgrade path to unlimited offers (subscription or monthly request pass).
This creates a clear value ladder without destroying liquidity in the early stage.
Architecture Snapshot
Buyer -> /request-car -> BuyerRequest (DB) -> /requests boardSeller -> Send offer -> offer-click API -> platform WhatsAppAdmin -> /admin/buyer-requests -> buyer follow-up and matchingProduct Thinking
The goal is not just “collecting leads.”
The goal is controlled matching:
- Protect buyer privacy.
- Capture seller intent.
- Route communication through platform operations.
- Add monetization where value is obvious.
Stack
- Next.js (App Router)
- Prisma + PostgreSQL
- Tailwind CSS
- Vercel
- WhatsApp deep-link flow for offer routing
Distribution Plan
I am using this case study as a public build log and sharing it on Reddit, X, and Facebook with channel-specific UTM links so I can measure which audience sends the most qualified traffic.
If you run marketplaces in East Africa and want to compare notes on lead quality, routing, and conversion ops, reach out:
- X: @muhuri_welsh
- GitHub: 0xWelsh
Next reads
View all →9 Sept
Mini-Readelf: Gluing It All Together
The capstone. Four parts of pieces, headers, sections, symbols, relocations, joined into one tool that reads any ELF. The only new mechanic is the sh_link chain: offset into a table that holds offsets into a table that holds strings.
5 Sept
Relocations: How PIE Binaries Fix Their Addresses
A PIE binary can't write final addresses because ASLR moves it. The linker leaves placeholders and the loader patches them after mapping. That's a relocation: R_X86_64_RELATIVE, GLOB_DAT and JUMP_SLOT.
4 Sept
Symbol Tables: What Function Names Actually Are
Function names in a binary are just entries in a table. Two tables actually: .symtab and .dynsym. Here's what each is for, how the struct works, and how to resolve a name from an address.
Get posts by email
One email when I publish, not a drip, not weekly. Sign up and I'll only write when there's something new.
You won't get mail just for signing up. Unsubscribe any time.