Before Zovle · 004
Sleek Interio
A lead platform for Diin Associations: a cost calculator that qualifies enquiries, more than fifty local search pages, and one dashboard for every lead.

- Local SEO pages
- 50+
- Calculator that qualifies
- 1
- Apps, one monorepo
- 2
- Dashboard for all leads
- 1
The situation
Diin Associations is an interior design studio that had nothing online to show its work. New business came from referrals and walk-ins. Meanwhile, homeowners in their own city were typing “interior designers near me” and “false ceiling cost” into Google every day and finding other studios.
What we built
A lead-generation platform under the Sleek Interio brand. Services told as visual stories, a cost calculator that produces a scoped enquiry, more than fifty area-specific pages for local search, and an admin dashboard where every lead arrives with its source and follow-up status.
What changed
Search demand now lands on pages built to receive it, and enquiries arrive with a budget and scope attached instead of “how much for interiors?” phone calls. The studio opens one dashboard in the morning and sees every lead, newest first, nothing lost to anyone’s inbox.
A calculator that qualifies the lead
A generic contact form collects vague enquiries. The Sleek Interio calculator asks visitors to price their own project, room by room and scope by scope, so each enquiry arrives with a budget, a scope and a phone number.
The public API behind it is rate-limited through Upstash Redis to limit automated submissions, every submission gets a confirmation email through Resend, and each request carries an ID through structured logs, so any lost submission can be traced.
More than fifty local search pages
Sleek Interio ships with more than fifty area-specific SEO pages, each one written for the service and locality a homeowner actually types: modular kitchen in one area, false ceiling in the next. Every page carries its own title, copy and structured data.
A portfolio grid shows finished spaces, from penthouses to office campuses, to visitors who arrive from a local search.
Every lead in one place
Calculator submissions and contact enquiries land in a Clerk-protected admin dashboard: total leads, what came in this week, which services people are asking for, and a follow-up queue.
Under it sits a versioned Express API with its data in Neon PostgreSQL through Prisma, with input validation and structured logging.
The fine print
A Turborepo monorepo with two apps and four shared packages. The Next.js 15 front end and the Express 4 API share TypeScript types, so a renamed database field fails the build instead of breaking a form.
- Turborepo
- Next.js 15
- React 19
- TailwindCSS
- Express 4
- TypeScript
- Prisma 5
- PostgreSQL · Neon
- Clerk Auth
- Resend
- Upstash Redis
- Vercel