Backend Systems
Semantic Engine — UrbanPillar & CornerSpaces
AI Engineer II (Team Lead) at Kaycomm Services: the semantic engine powering search, recommendations, and content understanding for UrbanPillar and CornerSpaces, plus the workflow website builder and infrastructure it runs on.
01
Overview
UrbanPillar and CornerSpaces are property-tech products that need listings, search, and content to actually understand what a user is looking for — not just match keywords. At Kaycomm Services, I built the semantic engine behind that: search, recommendations, and content understanding, plus an AI-driven workflow website builder that automates page and content generation, and the LLM data pipelines feeding both.
02
Challenge
Semantic search over property listings has to reconcile two things at once: understanding unstructured intent ("3BHK near a good school") and structured constraints (price, location, layout) — while staying fast enough for an interactive product. On top of that, the workflow website builder has to generate correct, on-brand pages automatically, not just plausible-looking ones.
03
Architecture
Clients talk to a Node.js/Express API layer. Auth runs through JWT plus Google OAuth and Firebase phone/OTP. PostgreSQL is the system of record; Redis backs caching, sessions, and BullMQ background jobs; Socket.IO handles real-time events (live listing updates, chat). Media goes to AWS S3 and Cloudinary, payments through Stripe, maps through Mapbox. The semantic engine sits behind that API layer: listing and content data gets processed through an LLM data pipeline (topics, blog content, AI-generated images) and indexed for semantic retrieval, which powers search/recommendations and a Vastu-analysis module that interprets floor plans for spatial reasoning. The workflow website builder consumes the same content pipeline to automate page generation. The whole stack — API, data pipelines, and the company's internal HRMS system — runs containerized on a VPS behind NGINX / Nginx Proxy Manager, managed through Docker + Portainer, with CI/CD automation handling deployment and domains/SSL/reverse proxy owned end-to-end.
- User
- Frontend / Mobile
- API / Backend
- Authentication
- PostgreSQL
- Redis / Queue
- External Services
- AWS / Cloud Infrastructure
04
Implementation
- Built the semantic engine that powers intelligent search, recommendations, and content understanding across UrbanPillar and CornerSpaces.
- Built an AI-driven workflow website builder that automates page and content generation.
- Created LLM data engine pipelines for topics, blog content, and AI-generated images.
- Implemented a Vastu-analysis module using floor-plan interpretation and spatial reasoning.
- Authentication layered across JWT sessions, Google OAuth, and Firebase phone/OTP for web and mobile sign-in.
- Background jobs (notifications, media processing, scheduled tasks) moved off the request path into BullMQ workers backed by Redis; real-time features (chat, live listing status) run over Socket.IO instead of polling.
- Media uploads routed through S3 / Cloudinary and payments through Stripe, keeping the API stateless and PCI scope out of the app server.
- Developed core modules for the company's internal HRMS system.
- Own full-stack Docker + Portainer deployments, CI/CD automation, and performance optimization; manage VPS, domains, SSL, and reverse proxy for production infrastructure.
05
Technologies
06
Engineering Decisions
Why a dedicated semantic engine instead of search-as-a-feature inside the API?
Search, recommendations, and content understanding all draw on the same semantic index. Centralizing it means the workflow website builder and the Vastu module can reuse the same retrieval layer instead of each rebuilding their own.
Why PostgreSQL over a document store?
The domain is relational — listings, users, transactions, and permissions all reference each other. Prisma on top of PostgreSQL gives type-safe queries and migrations without hand-rolled SQL for every change.
Why Redis-backed queues instead of doing work inline?
Anything that isn't needed to answer the current request (emails, media processing, notifications) shouldn't block it. BullMQ on Redis moves that work off the request path and gives retries for free.
Why generate website content through an LLM pipeline rather than hand-authoring pages?
Property listings and content pages scale with inventory. An LLM data pipeline that turns structured listing data into topics, blog content, and images keeps content current without a manual authoring bottleneck.
Why Docker + Portainer on a VPS instead of a managed PaaS?
Full control over networking, cost, and the ability to run the API, data pipelines, and the internal HRMS system on shared infrastructure without per-service platform overhead.
07
Reliability
- Background jobs run through BullMQ with retry policies instead of fire-and-forget calls.
- NGINX / Nginx Proxy Manager terminate TLS and isolate services behind a reverse proxy.
- CI/CD automation catches build failures before they reach production containers.
- Docker isolation keeps services (API, workers, pipelines, HRMS) independently restartable without taking the whole stack down.
- Domain, SSL, and infrastructure ownership means production issues get diagnosed and fixed end-to-end, not handed off.
08
Outcome
A live, multi-service platform in production — handling authentication, real-time messaging, media, payments, and maps — with the semantic engine, AI workflow website builder, and LLM data pipelines running on top of it for UrbanPillar and CornerSpaces.