Case study
Deskon
Local Business Discovery Platform
- Discover verified local businesses — search, compare, and enquire with confidence.
- Shop owners publish listings, manage catalogs, and stay visible while subscribed.
- Subscription-gated discovery with GST, MSME, and FSSAI verification workflows.
- City-scoped operations for regional managers without national data exposure.

- Industry
- Local Discovery
- Duration
- 2 Months
- Platform
- Dual-app platform
- Users
- Businesses & Consumers
- Stack
- Next.js · NestJS · PostgreSQL · Redis
What was built and why it matters
Executive Summary
Local consumers struggle to discover verified nearby businesses with comparable services and products. Shop owners need a single portal to publish listings, manage catalogs, handle enquiries, and stay visible only while subscribed — without building separate websites or ad-hoc directories.
Deskon operates a three-sided marketplace: consumers browse, search, compare, and enquire; shop owners manage businesses, services, products, verifications, and subscriptions; platform admins and field operations staff govern catalog quality, plans, and city-scoped access.
The platform ships as three deployable applications — a Next.js customer app for public discovery and shop-owner portals, a Next.js control panel for admin and field operations, and a NestJS API — with subscription-gated listing eligibility, profile scoring, and government verification workflows.
What problem existed before this project
The Business Challenge
Unstructured business directories fail both consumers and shop owners — listings go stale, contacts get scraped, and there is no trust signal beyond paid ads.
Status quo
Before the platform
- Consumers cannot compare local businesses with structured product and service data
- Shop owners building one-off websites with no discovery traffic
- Expired subscriptions still showing in public search results
- Contact details scraped by anonymous visitors without authentication
- No verification workflow for GST, MSME, or FSSAI credentials
- Regional operations teams lacking city-scoped access to manage local listings
What it cost
Business consequences
- Consumer trust erodes when unverified or inactive businesses appear in search
- Shop owners pay for visibility that continues after subscription lapses — or stops unfairly
- Platform reputation damaged by low-quality, incomplete listings
- Contact scraping leads to spam calls for business owners
- Regional managers cannot oversee their territory without seeing national data
- Verification bottlenecks when document review is manual and synchronous
Previous workflow
How work happened before
A disconnected chain of manual steps — each handoff added delay, errors, and lost visibility.
- 01Step
Unstructured directory
Business listed in a generic directory with minimal profile data
- 02Step
No subscription gate
Inactive businesses remain visible after payment stops
- 03Step
Contact exposed publicly
Phone numbers and messaging links visible to scrapers
- 04Step
Manual verification
GST or FSSAI documents reviewed ad hoc with no workflow
- 05Step
Separate shop website
Owner maintains own site with no connection to discovery platform
- 06Step
National admin access
Regional staff see all businesses regardless of assigned city
What the client needed to achieve
Project Objectives
Engagement scope
8 objectives
Build a subscription-gated local business discovery platform with search and compare
Give shop owners a portal for profiles, catalogs, enquiries, and analytics
Enforce listing eligibility so only active subscribers appear in public search
Implement GST, MSME, and FSSAI verification workflows with admin review
Protect contact details from anonymous scraping until user authentication
Enable city-scoped manager and staff access for regional operations
Score listing quality to surface complete, verified, and active businesses
Deliver multi-channel notifications for enquiries, subscriptions, and verifications
How the platform addresses the challenge
The Solution
Deskon ships as three deployable applications sharing one backend contract: a Next.js customer app for public discovery and shop-owner portals, a Next.js control panel for admin and field operations, and a NestJS API on a high-performance HTTP adapter.
Subscription-gated listing rules and contact privacy for anonymous users are enforced server-side on every public query. A weighted profile scoring system surfaces higher-quality listings based on completeness, verification status, reviews, and recent activity.
Regional operations use city-scoped allocations — managers and staff see only businesses in their assigned cities, enabling verification approval and listing oversight without national data exposure.
Platform architecture
6 components
Consumer discovery app
Search, browse, compare products, favourites, enquiries, and reviews
Shop owner portal
Business profiles, catalogs, verifications, analytics, and subscription management
Control panel
Admin, manager, and staff operations with city-scoped access
Listing eligibility engine
Central subscription check applied to every public search and catalog query
Verification pipeline
GST, MSME, and FSSAI workflows with background processing and admin review
Search cache layer
In-memory cache for repeat filter combinations with safe invalidation
How users move through the system
Product Workflow
User journey
8 steps
- 01Step
Shop owner registers
Business profile created with media, services, and product catalog
- 02Step
Subscribe to plan
Active subscription required for public listing visibility
- 03Step
Submit verification
GST, MSME, or FSSAI documents uploaded for admin review
- 04Step
Consumer discovers
Search by query, city, geo radius, category, and rating with eligibility applied
- 05Step
Compare & enquire
Side-by-side product comparison and lead capture with authenticated contact reveal
- 06Step
Owner manages leads
Enquiry inbox, review moderation, and call-to-action analytics in owner dashboard
- 07Step
Regional oversight
City-scoped managers approve verifications and monitor listing quality
- 08Step
Subscription renewal
Listing visibility tied to active subscription; expired businesses hidden automatically
What the platform delivers
Core Features
Platform capabilities
14 features
Local Business Search
Filter by query text, city, geo radius, category, and rating with subscription eligibility on every result.
Product Comparison
Side-by-side property matrices let consumers compare products before submitting an enquiry.
Subscription-Gated Visibility
Central eligibility rule ensures only active subscribers appear in consumer search and catalog.
Rich Business Profiles
Media, services, products, brands, and hierarchical categories with owner-managed content.
Profile Scoring
Weighted scoring across completeness, verification, reviews, and activity to surface quality listings.
Government Verification
GST, MSME, and FSSAI verification workflow with admin review and background processing.
Contact Privacy
Phone numbers, messaging links, and coordinates withheld from anonymous users until authentication.
Enquiry Management
Lead capture for consumers with owner-facing enquiry inbox and status tracking.
Review Moderation
Consumer reviews with moderation workflow and impact on profile scoring.
City-Scoped Operations
Managers and staff see only businesses in assigned cities for regional oversight.
Analytics & CTA Tracking
View and search events with session throttling; call-to-action click analytics for owners.
Multi-Channel Notifications
Email, SMS, and Firebase push for verification, subscription, and enquiry events.
Control Panel
Dedicated admin console for plans, subscriptions, roles, permissions, and platform analytics.
Cloud Media Storage
High-throughput photo and video uploads offloaded to cloud object storage with optional CDN delivery.
Dashboard, workflows, and portals
Product Screenshots
Product UI
3 screenshots
How the system is structured
Technical Architecture
Three deployable applications share one backend contract on NestJS with Fastify, TypeORM on PostgreSQL, and Redis for search caching and background job queues. External integrations include object storage for photos and videos, transactional email, Firebase push, and SMS delivery.
Identical filter combinations are served from an in-memory cache with versioned namespaces for safe invalidation when listing rules change. Role-based admin controls and encrypted credential storage protect sensitive operations.
System layers
5 layers
Customer discovery frontend
Next.js app for public search and shop-owner portal
Control panel frontend
Separate Next.js app for admin and field operations
NestJS API
Versioned REST with validation, role guards, and eligibility injection
PostgreSQL + TypeORM
Relational business data with selective relation loading
Redis cache & queues
Search cache and background workers for email and verification
Infrastructure components
10 services
Next.js customer app with Tailwind CSS and Radix UI
Next.js control panel for admin and regional operations
NestJS API on Fastify with Swagger documentation
TypeORM on PostgreSQL with subscription eligibility queries
Redis in-memory search cache with versioned namespace invalidation
Background job queues for email and verification processing
Cloud object storage for business photos and video uploads
Firebase push notifications for owner and admin alerts
SMS delivery for key notification events
Role-based access with city-scoped manager and staff allocations
Hard problems and how they were solved
Engineering Challenges
Challenge 1
Listings visible after subscription lapses
Solution
Central subscription eligibility checks injected into all public search and catalog queries.
Challenge 2
Contact scraping by anonymous users
Solution
Server-side contact masking on public API responses until the user authenticates.
Challenge 3
Heavy search load on the database
Solution
In-memory cache keyed by filter parameters with versioned namespaces for safe rule updates.
Challenge 4
Multi-city ops without data leaks
Solution
City-scoped allocations so managers and staff only see businesses in their assigned regions.
Challenge 5
Large photo and video uploads
Solution
High-throughput multipart handling with cloud object storage offloading media from app servers.
Challenge 6
Verification processing latency
Solution
Background job queues and scheduled renewal checks for GST, MSME, and FSSAI workflows.
Production technologies
Technology Stack
Frontend
- Next.js
- React.js
- TypeScript
- Tailwind CSS
- Radix UI
Backend
- NestJS
- Fastify
- TypeORM
- Swagger
Data & messaging
- PostgreSQL
- Redis
Infrastructure
- Docker
- Nginx
- DigitalOcean
- Firebase
Built for production load
Performance & Scalability
Production readiness
8 optimizations
In-memory search cache avoids repeated heavy database joins for identical filters
Cache namespace versioning enables safe invalidation when listing rules change
Pagination on admin lists, search results, and enquiries
Analytics view throttling reduces duplicate tracking events per session
Background workers scale email and verification jobs independently of the API
Stateless API supports horizontal scaling behind a reverse proxy
Selective relation loading keeps detail pages efficient
Automated TLS certificates and scheduled database backups in production
Operational and commercial outcomes
Business Impact
Deskon created a trusted local discovery platform — where consumers find verified businesses, shop owners control their visibility through subscriptions, and regional teams operate without national data exposure.
Outcomes delivered
8 outcomes
Subscription-gated listings ensuring only paying businesses appear in search
Government verification building consumer trust in local business profiles
Contact privacy preventing anonymous scraping of owner phone numbers
Product comparison helping consumers decide before enquiring
Profile scoring incentivizing complete, verified, and active listings
City-scoped operations enabling regional managers to oversee local quality
Shop owner analytics showing views, searches, and call-to-action performance
Scalable discovery platform live at deskon.in with ongoing iteration
Technology choices explained
Why This Architecture Works
Design rationale
6 decisions
Why this choice
Central subscription eligibility injection
Listing visibility must be enforced server-side on every public query — client-side filtering is bypassable and inconsistent.
Why this choice
In-memory search cache with versioned namespaces
Identical filter combinations hit the database repeatedly; cache invalidation must be safe when eligibility rules change.
Why this choice
City-scoped role allocations
Regional operations teams need oversight authority without access to businesses outside their territory.
Why this choice
Contact masking for anonymous users
Discovery platforms attract scrapers — protecting contact details until authentication preserves owner trust.
Why this choice
Background verification queues
Document review and renewal checks cannot block API responses or shop owner onboarding flows.
Why this choice
Dual Next.js apps
Consumer discovery and admin/field operations have different UX needs, release cadences, and access patterns.
What this project reinforced
Lessons Learned
Key takeaways
5 lessons
Subscription gating must be a single reusable eligibility rule — not duplicated checks that drift across endpoints.
Profile scoring drives listing quality more effectively than manual curation at scale.
Contact privacy is a platform trust feature, not a premium upsell — anonymous scraping erodes owner participation.
City-scoped access is essential when regional managers need verification authority without national data exposure.
Background verification processing keeps onboarding fast while admin review catches up asynchronously.
Explore related work
Similar Projects & Services
Common questions about the Deskon project
Case Study FAQ
Deskon is a subscription-gated local business discovery platform with verified listings and city-scoped search on deskon.in.
Dual Next.js apps, a NestJS API, PostgreSQL, Redis queues, and verification workflows support listings and subscriptions.
The product needed subscription gating, government verification flows, profile scoring, and city-scoped RBAC not available off the shelf.
About the author

Next step
Next step
Looking to Build Something Similar?
Whether you're building a multi-tenant SaaS, marketplace, CRM, ERP, or AI platform — let's discuss your project and how a dedicated development partnership can deliver it.