GoHighLevel · PropTech
Building the CRM and automation operating system behind an AI property video platform
DAIN built a platform that turns property photos and listing details into polished walkthrough videos. aibrevo designed the CRM, sales, onboarding, property-operations and retention infrastructure that runs underneath it — not a GoHighLevel install, a connected operating system moving a customer from first lead through repeat business.
DAIN sells to real estate agents and brokerages, so the CRM had to handle the same lead and listing patterns our GoHighLevel for real estatebuilds cover, plus the property-level production tracking below.
The challenge
DAIN's technology dramatically cut the time and cost of producing a professional property video. But scaling the product past a handful of early customers required more than the video-generation technology itself — inbound leads, qualification, demos, trials, onboarding, per-property production tracking, delivery, repeat listings, brokerage expansion and reporting all needed a home. Without a central system, that spreads across forms, spreadsheets, email and whatever chat tool happened to be open, and it breaks down exactly at the volume where the product's speed should be an advantage.
aibrevo designed GoHighLevel as that central layer — not a CRM bolted onto the product afterward, but the connective tissue between every customer- and operations-facing step:First Lead → Qualification → Demo → Customer → Property Submission → Video Production → Delivery → Repeat Listing → Expansion.
The structural difficulty is that DAIN's business has two different units of work living side by side. The sales unit is a person or a brokerage: a lead that gets qualified, demoed and won. The operations unit is a property: a listing that gets submitted, processed, reviewed, revised and delivered. Most CRM templates only model the first. A product priced and delivered per listing needs both, and needs them linked, so that "how is this customer doing" and "where is this video" are answerable from the same system without one contaminating the other.
There's also a speed problem specific to this product. When production time drops from days to minutes, the bottleneck moves to everything around production: how fast a new customer is onboarded, how quickly a submission's missing assets are caught, how soon a delivered video prompts the next listing conversation. The build treats those surrounding steps as the constraint to be engineered, since the video itself is no longer the slow part.
The architecture: four connected layers
Acquisition
Capture and organize every opportunity entering DAIN — leads, source, campaign, and intent, all landing in one place instead of scattered across forms and inboxes.
Revenue
Qualify, nurture, book, sell and convert leads through a structured pipeline instead of ad-hoc follow-up.
Operations
Move customers and individual properties through onboarding and video production, with a property-level record separate from the customer record.
Retention & Expansion
Turn a completed listing into a repeat listing, and a single agent into a brokerage-wide account.
Eight pipelines, one customer lifecycle
A property isn't a customer, and a customer isn't a lead — treating all three as one flat pipeline is where most GoHighLevel builds for a product like this go wrong. The failure mode is predictable: the moment a customer submits a second property, the single status field on their contact record has to describe two different production states at once, and one of them is necessarily wrong. Reporting on it is worse — "how many videos are in quality review right now" becomes unanswerable, because the only unit the CRM can count is a contact.
DAIN's build separates the concerns instead. Six pipelines cover the core lifecycle, and two supporting pipelines (referral growth and revision handling) keep side-flows from polluting the main ones. Each pipeline has explicit entry and exit criteria, so a record only moves forward when the data the next stage depends on actually exists:
New business / sales
New Lead → Contacted → Qualified → Demo Booked → Demo Completed → Trial/Pilot → Proposal Sent → Customer Won. Every inbound lead is captured with source, market, agent type, listing volume and current video process, then scored and routed automatically. Stage exit criteria are explicit rather than left to a rep's judgment — a lead can't move to Qualified, for example, without a market, a listing-volume band and a stated current video workflow on the record, because those three fields are what the scoring model and the demo script both depend on downstream.
Customer onboarding
Customer Won → Welcome → Onboarding Started → Information Required → Assets Ready → Account Activated → First Property Submitted. A won deal triggers onboarding automatically — no manual handoff between sales and operations. Onboarding itself is templated by account type (solo agent, team, brokerage), since a 20-listing-a-month team needs a different asset checklist, billing setup and first-week check-in cadence than a single agent submitting one property at a time.
Property / video production
Property Submitted → Assets Pending/Received → Ready for Production → AI Processing → Quality Review → Revision or Approved → Video Delivered. Built as its own pipeline because one customer can have many properties, each needing independent tracking — customer status and property status are never the same thing. A single high-volume brokerage account can carry dozens of properties in flight simultaneously, each at a different production stage, which is exactly the case a flat single-pipeline CRM can't represent without every property overwriting the last one's status on the shared contact record.
Customer success & retention
New Customer → First Listing → Active Customer → Repeat Listing → High-Volume Customer → Expansion Opportunity. Every delivered video triggers a repeat-listing sequence, turning one property into an ongoing account. Accounts are also segmented by submission cadence — a customer who hasn't submitted a new property in the window their historical pattern would predict gets flagged for a check-in before they've consciously decided to churn, not after.
Brokerage / enterprise expansion
Target Account → Discovery → Demo → Pilot → Stakeholder Review → Proposal → Negotiation → Closed Won → Implementation. Kept separate from individual-agent sales, since a brokerage deal involves teams, procurement and a longer cycle. A brokerage pilot is scoped and tracked against a small cohort of agents first, with adoption and repeat-usage data from that cohort feeding directly into the stakeholder-review conversation rather than a generic sales pitch.
Lost / reactivation
Lost or No Decision → 30-Day Nurture → 60-Day Nurture → Reactivation → Requalified. A lost opportunity isn't deleted — it re-enters the sales pipeline the moment it shows renewed intent. Loss reason is a required field at the point a deal is marked lost (budget, timing, incumbent tool, no response), and that reason determines which nurture track the contact enters — a timing objection gets a different cadence than a contact who went dark entirely.
Referral & agent-to-agent growth
Active Customer → Referral Prompt → Referral Submitted → Referred Lead Created → Referral Sales Pipeline → Reward Triggered. Real estate is a relationship-driven industry — a satisfied agent's referral into their own office or brokerage converts at a different rate than a cold lead, so referred contacts are tagged at creation and routed through a shortened qualification path rather than the standard new-lead sequence.
Support & revision handling
Revision Requested → Reason Logged → Reassigned for Rework → Re-Review → Approved/Delivered. Kept separate from the primary production pipeline so a revision doesn't reset a property's overall timeline or get miscounted as a fresh submission — production throughput reporting stays accurate because rework is tracked as its own sub-flow with its own reason codes.
Automation that removes the manual handoff
Every stage transition above is backed by an automation, not a person remembering to move a card. The design rule is that an automation should either move a record forward, or surface exactly why it can't — never fail silently. Each workflow therefore has a defined trigger, a defined set of preconditions, and a defined fallback (an owner notification or a queued manual task) when those preconditions aren't met. A few of the load-bearing ones:
Lead capture
New lead → contact created, source tagged, lead scored, opportunity created, owner assigned, first response sent, follow-up task queued.
Demo booked
Pipeline updates, confirmation sent, reminder sequence starts, owner notified. A missed demo triggers its own recovery sequence rather than falling through.
Customer conversion
Opportunity marked Won → onboarding starts, welcome sequence sends, onboarding tasks are created, and customer-success is notified — automatically, not as a manual handoff.
Property submission
New property → record created and linked to the customer, required assets checked, missing items flagged, operations notified, project moved into production.
Repeat listing
Video delivered → wait period → "do you have another property coming up?" sequence. If yes, a new property project is created without the customer repeating onboarding.
Stalled-deal nudge
An opportunity sitting in the same stage past its expected dwell time triggers an owner alert and, where appropriate, an automated check-in to the lead — stopping deals from quietly aging out instead of surfacing them for manual review only at pipeline-review time.
Production SLA watch
A property sitting in AI Processing or Quality Review past its expected turnaround window flags operations automatically, before a customer has to ask where their video is.
Churn-risk flag
Submission cadence dropping below an account's historical pattern, or a support ticket tagged as dissatisfaction, moves the account into a customer-success review queue rather than waiting for a renewal date to surface the risk.
Brokerage rollout trigger
Pilot marked successful at the individual-agent level → automatically creates the brokerage-wide expansion opportunity and notifies the enterprise sales owner, so a good pilot doesn't sit unconverted.
The data model underneath it
Eight separate object types, cleanly related, instead of treating every interaction as one flat contact record:
| Contact | Who is the person |
| Company / Brokerage | Who they work for |
| Opportunity | Where they are in the buying process |
| Property | Which listing is being worked |
| Video project | Production status for that listing |
| Customer activity | How actively the account is using DAIN |
| Referral | Who referred whom, and what stage that referred lead is at |
| Support ticket / revision | What was flagged, on which property, and its resolution status |
The relationships matter as much as the objects. A Contact belongs to a Company or Brokerage; a Company can have many Contacts and many Opportunities; an Opportunity that reaches Customer Won gives rise to an ongoing account, which in turn owns many Property records; and every Property owns exactly one active Video project at a time, with revision history kept underneath it. Because the property carries its own status, a customer's overall standing (active, high-volume, at-risk) is derived from what their properties are doing rather than manually maintained on the contact — which removes an entire class of "the record says one thing and reality says another" errors.
Where GoHighLevel's native objects didn't map cleanly onto a property-level concept, the build used custom objects and associations rather than stuffing property details into custom fields on the contact. Custom fields on a contact scale badly for one-to-many data: the second property either overwrites the first or forces a numbered-field workaround (Property 1 Address, Property 2 Address) that no automation or report can reason about cleanly. A proper related object avoids that at the cost of a little more upfront design.
Integrations: keeping CRM status and production status in sync
The CRM is only useful to operations if what it says about a property matches what is actually happening in the video-production pipeline. The integration layer exists to make drift between the two structurally hard, not just unlikely:
Video-processing webhook
When a property moves to AI Processing, GoHighLevel fires a webhook carrying the property ID and asset manifest to DAIN's production pipeline; the returned status (processing, needs-review, complete) writes straight back onto that property's record, so the CRM status and the actual production status can never silently drift apart.
Asset intake
Photo and listing-detail uploads are validated against a required-fields checklist at submission — a property can't move to Ready for Production until the assets it actually needs are present, which is what keeps the production team from opening a job that stalls immediately for a missing floor plan or address.
Billing & usage sync
Plan tier and per-video usage sync between the billing system and the customer record, so a high-volume account approaching a plan limit is visible to customer success before the customer hits a paywall mid-submission.
Calendar & scheduling
Demo and onboarding-call booking runs through calendar sync with automatic reminder and no-show handling, rather than a rep manually coordinating availability by email.
Every integration writes back to a single source of truth on the property record, with a timestamped activity entry, so when something does go wrong an operator can trace it — which webhook fired, what payload it carried, and what response came back — instead of reconstructing it from memory.
Tagging and lead scoring built for this business
A generic lead score (opened an email, clicked a link) tells you very little about whether a real-estate agent is likely to become a repeat video customer. The scoring model here is built on the attributes that actually predict fit for a product sold per listing: the agent's market, whether they work solo, on a team or in a brokerage, their approximate listing volume, and how they currently produce listing media. An agent handling a steady flow of listings and paying a videographer for each one has a concrete, quantifiable reason to switch; an agent with one listing a year does not, and shouldn't consume the same sales attention.
Tags are organized in four families rather than accumulating freely: source (where the contact came from), customer type (solo agent, team, brokerage), lifecycle stage, and priority. Each tag family is owned by specific automations, which is what stops tag sprawl — a tag exists because a workflow reads it or a report filters on it, not because someone thought it might be useful later. Tags that drive nothing get removed during periodic cleanups, which keeps the tag list small enough for the team to actually trust.
Reporting leadership can act on
Reporting is designed backwards from the decisions leadership actually makes, not forwards from the fields that happen to exist. Four views cover it. A sales view shows pipeline coverage, stage conversion and where deals are stalling. A customer view shows account health, submission cadence and expansion candidates. A property-operations view shows how many properties sit at each production stage right now and which are approaching their turnaround window. A growth view shows lead sources, referral contribution and reactivation from the lost-deal nurture tracks.
Because the data model separates properties from customers, the operations view can count videos directly — something that isn't possible when a contact record is the only unit. That is the difference between a dashboard that describes CRM activity and one that describes the business.
The result
Before: lead → manual follow-up → sales → manual handoff → property → manual coordination → delivery → a customer nobody follows up with again. After: one connected system carrying a customer and every one of their properties from first contact through repeat business and brokerage expansion, with no manual handoff between sales, onboarding, production and retention.
DAIN's product impact
Reported by DAIN, on the product itself — not a CRM metric.
What aibrevo built
The CRM and automation layer, separate from the video technology above.
- Six connected pipelines covering the full lead-to-expansion lifecycle
- A property-level data model distinct from the customer record, so one account can carry many independent listings
- Automated handoffs between sales, onboarding, production and retention — no stage change depends on someone remembering to do it
- A structured tagging and lead-scoring system built for this specific business, not a generic template
- Leadership-level reporting across sales, customers, property operations and growth in one place
What this architecture actually solved
The product-impact figures above come from DAIN itself and describe the video technology, not the CRM. What the CRM and automation layer addresses is the set of operational problems that determine whether those product capabilities turn into a business that scales. Each one maps to a specific piece of the build.
Enquiry capture. DAIN reports 3.2× more enquiries on listings with video. Extra enquiries only matter if they are captured and answered. Lead capture, scoring and first-response automation make sure demand generated by the product lands in a queue with an owner and a next action, instead of adding to an inbox no one has time to triage.
Throughput. DAIN reports an agent can cover 14 listings a week, and 41,000 tours were generated in year one. At that kind of volume, manual coordination stops scaling long before the technology does. Per-property tracking, SLA watches and asset checks at submission are what let production volume grow without operations headcount growing in lockstep with it.
Unit economics. With compute cost per video under $12, every avoidable rework cycle and every stalled job cuts directly into margin. Catching missing assets at submission, and tracking revisions with reason codes, addresses the two main sources of wasted production effort: starting a job that can't finish, and repeating one that should have been right the first time.
Speed to launch. The platform itself was built in 7 weeks, so the operating system around it had to be designed to be adopted quickly and extended later, not perfected up front. That's why the pipelines are modular and the data model keeps concerns separate: adding a new customer segment or a new production stage is a configuration change, not a rebuild.
What we'd do differently, and what to watch for
No build of this size gets every decision right on the first pass, and the useful part of a case study is what the team would adjust. A few honest lessons from the design.
- Model the property object first. The single biggest structural decision was separating properties from customers. Teams that add it later, after a year of data lives on the contact record, face a painful migration. Starting there costs a little extra design time and saves a rebuild.
- Keep the first version of scoring simple. A scoring model built on a handful of fit attributes is easier to validate against actual conversions than one with dozens of weighted signals. Add signals only once there's enough closed-won data to justify them.
- Treat loss reasons as required data from day one. Reactivation logic is only as good as the reasons captured at loss. Adding required loss reasons after hundreds of unlabeled lost deals already exist means that history can't be routed into the right nurture tracks.
- Watch automation overlap. With this many workflows reading the same tags and stages, two automations can trigger on the same event and send conflicting messages. Every workflow needs a documented owner and a defined suppression rule, and the workflow list needs periodic review as the system grows.
- Plan for the brokerage motion early. Enterprise deals introduce procurement, security review and multi-stakeholder approval that individual-agent sales never touch. Keeping that pipeline separate from the start avoids having to retrofit stages into a pipeline designed for a five-minute purchase decision.
- Document the integration contract. The webhook payloads and status values between the CRM and the production pipeline are effectively an API. Writing them down, and versioning changes, prevents a silent mismatch when either side evolves.
The aibrevo difference
The brief wasn't "set up GoHighLevel." It was "design the operating system around the customer lifecycle" — connecting marketing, sales, CRM, onboarding, property operations, automation, customer success and expansion into one architecture, for a business where one customer manages many properties and every property has its own production timeline. That's the system aibrevo built around DAIN. See how we scope a build like this on theGoHighLevel implementation service page.
Building something similar on GoHighLevel?
Book the free 30-minute call. We'll give you an honest read on what your setup actually needs.