Team
My role: Lead Developer and UX/UI Designer — responsible for the full architecture (frontend and backend), external service integrations, user experience design, and platform implementation.
Sales Hub
An internal platform that allows WindMar Home consultants to customize and generate branded promotional material on their own, using predefined templates and their contact information.
Context and problem
At WindMar, consultants can promote themselves using the company’s brand. The existing solution was a shared drive with static images that consultants downloaded and used as-is, with no way to customize the content with their contact details.
This created two problems: consultants either used generic material that didn’t identify them, or edited the assets on their own, breaking the brand’s visual consistency.
The solution: leverage the fact that the company already used Placid to generate their assets, and build a platform where consultants could customize company-approved templates with their own information, generating professional material consistent with the brand.
Technical challenges
Placid integration
Placid’s SDK isn’t well adapted for working with React and Next.js. To solve this, I created an abstraction layer over the SDK that simplified its usage, avoided repetitive code, and allowed integrating both asset generation and the visual editor consistently.
User data persistence
Each consultant’s information comes from Zoho (email, name, phone), but this data isn’t always what they want to show on their assets — they may prefer using a nickname or a specific sales number. Additionally, no user wants to re-enter their details every time they generate an asset.
The solution was to store each consultant’s customized data and link it to the templates. This not only improved the user experience but also helped save Placid tokens by avoiding duplicate generations.
Flexible database
I chose DynamoDB as the database due to its non-relational nature: the ability to add or remove fields without migrations was ideal for a project where requirements were constantly evolving.
Generation times and real-time notifications
Placid doesn’t generate assets instantly — the time varies depending on the type (image, video, or PDF) and the template’s weight. To keep the user informed rather than waiting without feedback, I implemented a real-time notification system using webhooks, WebSockets, and Sonner (for UI notifications). The flow notifies the user when their asset enters the generation queue and when it’s ready to download.
Development process
Architecture
I chose Next.js as the main framework to make the most of server-side rendering, improving load times and user experience. The backend was built with Nest.js, and the infrastructure relied on AWS (DynamoDB for data, S3 for files).
Resource and template gallery
By integrating with Placid, the platform fetches all available templates along with their metadata: dimensions (to prevent layout shifts), editable fields, and available output formats (image, video, PDF).
Beyond templates, the existing AWS S3 integration was leveraged to display the company’s general resources — images, videos, PDFs, and any type of file — functioning as a centralized content hub.
Pinterest-inspired design
For the visual experience we drew inspiration from Pinterest: a masonry-type layout that displays templates organically, with video previews on hover. This pattern is familiar to most users and requires no learning curve.
Dynamic filter system
As the number of templates grew, it became necessary to implement filters. However, due to time constraints it wasn’t feasible for me as a developer to manually add new filters every time they were needed. The solution was to create a dynamic filter system that is configured when creating the template in Placid, using a simple convention:
(Filter name):(Filter value)For example, if a template has the tags Brand:social and Brand:websites, the interface automatically groups these values under a single filter called “Brand” with the options “social” and “websites”. When applying a filter, the layout animates smoothly for a reactive and fluid experience.
Result
The platform was successfully implemented and is actively used by WindMar Home consultants.
Concrete impact:
- Autonomy for consultants, who now generate their own material without depending on the design team
- Brand consistency guaranteed, since all material starts from approved templates
- Reduced operational load for the marketing and design team
- Scalable system, where new templates and filters are added without developer intervention
Conclusion
Sales Hub was a project where I had to solve problems across multiple layers: from backend architecture to interface design, through external service integrations and user experience optimizations. Every technical challenge had a direct impact on usability, which made every decision matter.