Building a Customer 360 Graph with AWS Neptune: Lessons from a Project That Started as a SQL Problem

5 min read
Share:

A couple of months ago, I was involved in a Customer 360 initiative that, on paper, looked fairly straightforward.The ask from the business was simple: create a single view of the customer.

At first, nobody mentioned graph databases. Nobody talked about nodes, edges, or graph traversals. We were just trying to answer a familiar question:”Can we see everything we know about a customer in one place?”

Like many enterprises, customer data was spread across multiple systems. The CRM had one version of the customer, the loyalty platform had another, and the e-commerce application had its own identifiers. Add support tickets, mobile app activity, and payment data into the mix, and suddenly there wasn’t really a single definition of a customer anymore.

Initially, our instinct was to solve it using the tools we already knew well.As data engineers, that’s usually where we start.

The Moment We Realized This Wasn’t Just a Data Warehouse Problem

We began by consolidating customer records into a centralized platform. Standard ETL process. Standard data modeling discussions. Nothing unusual.For a while, things looked good.Then the business team started asking questions that didn’t fit neatly into the model we had built.

One request was something along the lines of:”Can we identify customers who appear unrelated but are actually connected through shared devices or addresses?”That didn’t sound too scary initially.A few joins later, however, the complexity started becoming obvious.We weren’t simply connecting tables anymore. We were trying to understand relationships between entities that could be linked in dozens of different ways.

A customer could share:

  • an email address
  • a household
  • a shipping address
  • a phone number
  • a device
  • a payment method
    with another customer.

And once you wanted to explore those relationships multiple layers deep, the SQL became increasingly difficult to maintain.Every new question seemed to introduce another recursive query or another chain of joins.That’s when we started wondering whether we were approaching the problem from the wrong angle.

Thinking About Customers as a Network

One whiteboard discussion completely changed how we looked at the problem.Instead of drawing tables, someone started drawing circles connected by lines.

  • Customer.
  • Device.
  • Address.
  • Email.
  • Transaction.

And suddenly the conversation became easier.The business wasn’t really interested in rows.They were interested in connections.The customer wasn’t the only important thing. The path between customers was equally important.

Once we started viewing the data as a network rather than a collection of tables, graph databases naturally entered the discussion.That’s how we ended up evaluating AWS Neptune.

Why Neptune Made Sense for Us

To be honest, we didn’t choose Neptune because it was trendy.We chose it because most of our ecosystem already lived in AWS.Operational simplicity mattered.The team didn’t want to spend time managing servers, handling failover configurations, or patching infrastructure. We wanted to focus on modeling the data and proving whether a graph approach would actually help solve the business problem.

Neptune removed a lot of that operational burden.What interested me more, though, was how naturally the Customer 360 use case fit into the graph model.

  • A customer wasn’t a row anymore.
  • A customer became a node connected to other nodes.

That sounds like a small distinction, but it changes how you think about data.

Modeling the Graph Was Harder Than Expected

If somebody tells you graph modeling is easy, they probably haven’t done it on a messy enterprise dataset.One of the most debated topics on our team was deciding what should become a node versus what should remain an attribute.

For example:

Should an email address be its own node?

Should a device be a node?

What about loyalty accounts?

What about households?

There wasn’t always a perfect answer.We revised the model multiple times before we found something that felt balanced.

Looking back, that modeling exercise was probably more important than the technology choice itself.A poorly designed graph is still a poorly designed graph.

The First Insight That Got Everyone’s Attention

I still remember one analysis session after we had loaded enough data into Neptune.We started exploring customer connections through shared devices.The expectation was that we’d find a few obvious matches.Instead, we discovered clusters of accounts that appeared completely unrelated when viewed individually but were heavily connected underneath.

Several accounts were tied together through combinations of:

shared device identifiers
recurring addresses
common payment patterns
Nobody had specifically built a report to find those relationships.

We simply followed the connections.That was the first moment when the graph started demonstrating value beyond what we could comfortably achieve in SQL.

What Surprised Me Most

The biggest surprise wasn’t performance.

It was visibility.Graph databases force you to confront the quality of your data.Duplicate customer profiles suddenly become obvious.Misspelled addresses become obvious.Identity resolution issues become obvious.In some ways, Neptune exposed problems that had existed for years but remained hidden inside disconnected systems.The graph wasn’t creating bad data.It was revealing it.

And honestly, that ended up being one of the most valuable outcomes of the project.

Final Thoughts

If there’s one lesson I took away from this experience, it’s that not every Customer 360 problem is actually a data consolidation problem.Sometimes it’s a relationship discovery problem.

For years, many organizations have invested heavily in collecting customer data. The harder challenge is understanding how all those pieces connect.AWS Neptune didn’t magically solve Customer 360 for us.We still had data quality issues, identity matching challenges, and modeling decisions to work through.What Neptune did provide was a much more natural way to explore relationships that were already present in our data.And once we started thinking in terms of connected entities rather than isolated records, many of the business questions became easier to answer.

That’s usually a sign you’ve found the right tool for the job.

Leave a Reply

Your email address will not be published. Required fields are marked *