Glovee is a Customer Relationship Management (CRM) platform specifically designed for immigration consultants. It centralizes client information and documents, enabling consultants to manage and understand their clients more effectively. By simplifying data collection and management, Glovee allows consultants to create personalized immigration applications, significantly improving success rates.
Immigration consultants often lack dedicated tools for managing client interactions and data. They rely on inefficient methods like Word documents, emails, and direct messages to collect information. This not only consumes valuable time but also hampers their ability to understand each client's unique circumstances. Clients may feel lost in the process, unclear about the status of their application or the next steps, leading to frequent and unnecessary communication with consultants.
Glovee addresses these inefficiencies by providing a robust CRM tailored for immigration consultants. It offers a template builder tool that allows consultants to create detailed, purpose-specific templates featuring categorized questions with customizable behaviors and embedded guides. Clients can independently navigate the application process, fill out forms, upload documents, and track their progress. Once all required information is submitted, clients can finalize their applications, locking them from further edits. This centralized approach simplifies access to client data, enabling consultants to prepare personalized submissions and manage documentation efficiently from one platform.
After extensive UX research and six months of product discovery, we began developing the initial prototypes of Glovee using Next.js for both the frontend and backend. This approach allowed us to quickly build and iterate on the MVP (Minimum Viable Product). We demoed this version to potential clients, who appreciated the concept but requested changes to better suit their workflows.
Recognizing the need for a more maintainable architecture with a clear separation of concerns, we decided to separate the frontend and backend. The close entanglement of frontend code and business logic in the initial prototype made it difficult to manage and extend. By thinking about the frontend and business logic completely separately, we made it easier to know where things are, add features, and make changes, reducing repetition.
We chose Next.js for the frontend to leverage its powerful features like server-side rendering, which is crucial for our target users who may have lower internet speeds.
For the backend, we transitioned to Golang with a PostgreSQL database. This combination provided us with a simpler architecture that is easier to keep in mind, with organized flows and a clear separation of contents and interfaces. We adopted a modular monolith approach with Domain-Driven Design (DDD) principles. This design allows us to keep all services within a single application for simplicity, but structured in a way that any module can be easily extracted into a separate service if needed.
Considering that many of our potential clients are in regions with lower internet speeds, we perform most of our data queries server-side in Next.js. By providing HTML content generated on our server, we deliver a better user experience with faster load times compared to fetching data on the client's browser.
Glovee is a multi-tenant application where each organization has its own subdomain (e.g., consultant1.glovee.com
). We handle this by reading the subdomain in the Next.js middleware and rewriting it into the path. This way, we can capture the subdomain using dynamic routing in Next.js, effectively isolating each tenant's data and experience.
After making the requested changes, we launched Glovee with one immigration consultant and one of their clients. While the platform worked well, we identified areas for improvement:
Noticing that our backend was mostly acting as a serializer between the database and the frontend, we sought a more efficient solution. We adopted PostgREST, a tool that automatically creates a RESTful API from a PostgreSQL database schema, including tables, functions, and views.
While PostgreSQL and PostgREST handle most of our backend logic, we require a separate backend service for integrations that cannot be managed directly from the database, such as:
We call these external services from within PostgreSQL functions using RPC calls, maintaining a clean separation of concerns.
Before starting the implementation, we collaborated closely with our UX team to ensure that the user experience was intuitive and aligned with user needs. Our collaboration involved:
This early collaboration ensured that both the engineering and UX teams were aligned, resulting in a product that is both technically sound and user-friendly.
Glovee streamlines the immigration consultancy process by providing a centralized platform for managing client data. Through a combination of thoughtful UX design and robust engineering practices, we developed a tool that addresses the specific needs of consultants and their clients, improving efficiency and success rates.
Our journey involved iterative development, technology stack evolution, and performance optimizations. By leveraging technologies like Next.js, Golang, PostgreSQL, and PostgREST, we created a maintainable application with clear separation of concerns, making it easier to extend and adapt to future needs.
Technologies Used:
Key Architectural Approaches:
By implementing these strategies and technologies, we ensured that Glovee is not only efficient and user-friendly but also ready to adapt as we continue to grow and serve more clients in the immigration consultancy sector.