The "Naked Link" Problem
There is a massive gap between delivering a service and delivering a product. VISIT ME, a premier creator of 3D virtual tours for real estate, found themselves stuck in that gap.
They were creating stunning, high-definition digital twins of properties, but the delivery method was underwhelming: a simple, naked URL sent via email.
For the real estate agencies paying for these tours, it was a "Black Box." They had no way to organize their portfolio, no insight into who was watching, and zero analytics to prove ROI to their sellers. The user experience felt disconnected, and valuable data was evaporating into the ether.
We needed to stop just sending links and start delivering intelligence.
Contents
The Solution: A B2B Powerhouse
The goal was to transform VISIT ME from a service provider into a SaaS platform. I built a centralized ecosystem where agencies can't just "see" their tours—they can manage, analyze, and optimize them.
Key Features
High-Precision Analytics
Standard web analytics weren't enough. We track behavior inside the 3D environment—measuring session duration, specific viewpoints visited, and user navigation patterns.
AI-Powered Insights
The system doesn't just collect data; it interprets it. We implemented AI scoring to rate listing performance and offer automated suggestions to improve the customer journey.
Collaborative Management
Real estate is a team sport. Agencies can now manage documents, 3D assets, and client communications in a real-time collaborative environment.
Automated Operations
To reduce administrative drag, the platform handles automated invoicing and billing management, freeing up the VISIT ME team to focus on quality.
Under the Hood
Next.js gives us the best of both worlds: modern framework features paired with raw, optimized performance. For this project, we used Next.js for the frontend (leveraging server-rendering and edge optimizations where appropriate) while the analytics backend ran on Python, all deployed on a custom VPS architecture for speed and reliability.
The Challenge: Tracking the "Un-trackable"
The hardest technical nut to crack was tracking user behavior inside a 3D canvas (WebGL). Unlike a standard website where users click links to change pages, a user in a 3D tour stays on the same URL while "walking" through a house.
Standard analytics tools see this as a single page view. We needed to know if they looked at the kitchen or the garden.
I engineered a custom event listener system that hooks into the 3D engine's coordinate system to generate "spatial heatmaps."
# Validates and maps coords into floorplan regions, then aggregates time per region.
class Movement(BaseModel):
x: float
z: float
time: int # unix milliseconds
class Payload(BaseModel):
tour_id: str
movements: List[Movement]
REGIONS = [
{"id":"kitchen","xmin":10,"xmax":20,"zmin":0,"zmax":8},
{"id":"garden","xmin":0,"xmax":20,"zmin":8,"zmax":20},
]
def map_to_region(x: float, z: float):
for r in REGIONS:
if r["xmin"] <= x <= r["xmax"] and r["zmin"] <= z <= r["zmax"]:
return r["id"]
return "unknown"
@app.post("/api/analytics/spatial-track")
async def spatial_track(payload: Payload):
totals = {}
for i in range(len(payload.movements) - 1):
cur, nxt = payload.movements[i], payload.movements[i + 1]
region = map_to_region(cur.x, cur.z)
dt_ms = max(0, nxt.time - cur.time)
totals[region] = totals.get(region, 0) + dt_ms
return {"tour_id": payload.tour_id, "region_ms": totals}The Impact
The shift from "sending links" to "providing a platform" was a game changer for VISIT ME. The perceived value of their service skyrocketed, turning them from a vendor into a tech partner.
Conclusion
This project illustrated that innovation isn't just about which JavaScript framework you choose—it's about solving the visibility problem. By using Next.js for the front-end and building a custom analytics engine on a reliable stack, we gave VISIT ME and their clients the one thing they were missing: clarity.
Now, every virtual step a potential buyer takes is a data point that helps sell a home. 🏠
Inspired by this project?
I can help you build something similar — let's chat about your idea and the next steps.
Subscribe to my newsletter
Get updates about new projects and occasional tips and tricks — just useful stuff.
Read another project
If you'd like to explore more, here's another project you might enjoy.
