How Antonella built a custom SaaS CRM for private schools
See how Antonella transformed its agency expertise into a SaaS CRM for schools using Next.js, Supabase, and WhatsApp Cloud API.
Antonella started with a problem that generic CRMs did not handle well. The agency works with student acquisition for private schools, and the education funnel has its own shape: network, branch, campaign, campus visit, enrollment, and reenrollment. Standard systems could store leads, but they did not explain where demand came from or help the team turn a WhatsApp conversation into a scheduled visit.
The project began as an internal tool and then became a product bet. Antonella wanted a SaaS CRM it could sell to schools while keeping the operational depth the agency had already built in its own routine. I developed the architecture with Next.js, React, and Tailwind CSS, with Supabase and PostgreSQL on the backend. The multi-tenant structure separates each school's data and lets users switch between branches or see the full network view without reloading the page.
React made sense because of the interface itself. The CRM has a sales Kanban, charts, maps, and filters that change the page context constantly. SelectionContext became an important piece for keeping school, branch, and date range synchronized across modules. It is a quiet part of the product, but it keeps the CRM from becoming a dashboard full of disconnected data.
The WhatsApp Challenge: Cloud API vs Evolution API
In school enrollment, the first WhatsApp response decides a lot. An interested family can disappear if the school takes too long to reply or asks them to repeat information. That is why the CRM has its own inbox, with queues, quick replies, and lead creation directly from the conversation.
The first integration used the official WhatsApp Cloud API. Technically, it was the strongest path. Commercially, not always. During SaaS sales, Meta verification and per-conversation costs created objections for smaller schools. To keep the product from getting stuck there, I built an alternative Evolution API integration. It was a pragmatic decision: keep the official option when it fits and offer a simpler entry path for schools that need to start quickly.
Lead Georeferencing and Ads Attribution
The second layer of the product was market intelligence. The CRM combines commercial data with public Brazilian school census data (INEP) and geolocates lead origins. In the map (MarketingGeoBubbleMap), managers can see which neighborhoods generate interest, visits, and enrollments instead of looking only at a contact list.
I also connected the system to the Google Ads and Meta Ads APIs. The goal went beyond showing cost per lead. The platform links media spend to campus visits and signed contracts. That lets Antonella and the schools identify campaigns and creatives that bring real enrollments, then send better conversion signals back to the ad platforms.
Continue Reading
Why system integration via API means the end of manual tasks
System integration via API eliminates rework and connects ERP, CRM, and E-commerce. See how to automate your commercial operation and scale fast.
The right time to swap generic systems for custom software
Understand why investing in custom software is the best choice when operations grow. Ditch spreadsheets and scale with robust digital products.
B2B sales funnel - how to build one from scratch and drive predictable revenue
Learn how to build a B2B sales funnel from scratch. Define your ICP, structure pipeline stages, integrate CRM and generate predictable revenue.