A graph data system
that runs anywhere.
We didn’t improve the graph database. We reinvented it. Sub-millisecond queries. No specialized hardware. Tiny RAM footprint.
Launch Demo →TETRA on bare metal — no container, no JVM, just the binary
Visualization
Query. Analyze. Visualize. Innovate.
To give you maximum data utility, we built a 2D/3D graph viewer right in. Click a node, follow the connections, see what’s actually there.
Force-directed, spherical, and radial — switch on the fly
2D overhead or full 3D orbit
Six distinct platonic solids. Each node type gets its own shape and color automatically.
Click to focus — see N hops deep
Fly to any node in the graph
Pin and inspect multiple nodes at once
Performance
78 queries. Same hardware. No excuses.
Recommendations dataset — 28,863 nodes, 166,261 edges. Both containerized on Apple M4 Pro, 16GB. Native binary shown for reference.
graph LR N((n)):::any -->|count| R[count]:::result
Counts & Lookups
Count all nodes
MATCH (n) RETURN count(n)graph LR A((a)):::any -->|r| B((b)):::any B -->|count| R[count]:::result
Counts & Lookups
Count all edges
MATCH ()-[r]->() RETURN count(r)graph LR M[Movie]:::movie -->|count| R[count]:::result
Counts & Lookups
Count Movie
MATCH (n:Movie) RETURN count(n)graph LR P[Person]:::person -->|count| R[count]:::result
Counts & Lookups
Count Person
MATCH (n:Person) RETURN count(n)graph LR G[Genre]:::genre -->|count| R[count]:::result
Counts & Lookups
Count Genre
MATCH (n:Genre) RETURN count(n)graph LR U[User]:::user -->|count| R[count]:::result
Counts & Lookups
Count User
MATCH (n:User) RETURN count(n)graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie M -->|count| R[count]:::result
Counts & Lookups
Count ACTED_IN
MATCH ()-[r:ACTED_IN]->() RETURN count(r)graph LR U[User]:::user -->|RATED| M[Movie]:::movie M -->|count| R[count]:::result
Counts & Lookups
Count RATED
MATCH ()-[r:RATED]->() RETURN count(r)graph LR P[Person]:::person -->|DIRECTED| M[Movie]:::movie M -->|count| R[count]:::result
Counts & Lookups
Count DIRECTED
MATCH ()-[r:DIRECTED]->() RETURN count(r)graph LR M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre G -->|count| R[count]:::result
Counts & Lookups
Count IN_GENRE
MATCH ()-[r:IN_GENRE]->() RETURN count(r)graph LR M[The Matrix]:::movie
Counts & Lookups
Lookup Matrix
MATCH (m:Movie {title:'The Matrix'}) RETURN mgraph LR P[Keanu]:::person
Counts & Lookups
Lookup Keanu
MATCH (p:Person {name:'Keanu Reeves'}) RETURN pgraph LR M[Toy Story]:::movie
Counts & Lookups
Lookup Toy Story
MATCH (m:Movie {title:'Toy Story'}) RETURN mgraph RL A[Actor]:::person -->|ACTED_IN| M[The Matrix]:::movie
Single-Hop Traversals
Actors in Matrix
MATCH (m:Movie {title:'The Matrix'})<-[:ACTED_IN]-(a) RETURN a.namegraph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie
Single-Hop Traversals
Movies by Keanu
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m) RETURN m.titlegraph LR M[Toy Story]:::movie -->|IN_GENRE| G[Genre]:::genre
Single-Hop Traversals
Genres of Toy Story
MATCH (m:Movie {title:'Toy Story'})-[:IN_GENRE]->(g) RETURN g.namegraph RL D[Director]:::person -->|DIRECTED| M[The Matrix]:::movie
Single-Hop Traversals
Directors of Matrix
MATCH (m:Movie {title:'The Matrix'})<-[:DIRECTED]-(d) RETURN d.namegraph LR P[Spielberg]:::person -->|DIRECTED| M[Movie]:::movie
Single-Hop Traversals
Movies by Spielberg
MATCH (p:Person {name:'Spielberg'})-[:DIRECTED]->(m) RETURN m.titlegraph RL U[User]:::user -->|RATED| M[The Matrix]:::movie
Single-Hop Traversals
Users rated Matrix
MATCH (u:User)-[:RATED]->(m:Movie {title:'The Matrix'}) RETURN count(u)graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie O[Other]:::person -->|ACTED_IN| M
Two-Hop Patterns
Co-actors of Keanu
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(other) RETURN DISTINCT other.name LIMIT 50graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie D[Director]:::person -->|DIRECTED| M
Two-Hop Patterns
Directors of Keanu movies
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m)<-[:DIRECTED]-(d) RETURN d.namegraph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre
Two-Hop Patterns
Genres Keanu acts in
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m)-[:IN_GENRE]->(g) RETURN DISTINCT g.namegraph LR M[Matrix]:::movie -->|IN_GENRE| G[Genre]:::genre O[Other]:::movie -->|IN_GENRE| G
Two-Hop Patterns
Actors same genre as Matrix
MATCH (m:Movie {title:'The Matrix'})-[:IN_GENRE]->(g)<-[:IN_GENRE]-(other) RETURN other.title LIMIT 50graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie U[User]:::user -->|RATED| M
Two-Hop Patterns
Users rated Keanu movies
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m)<-[:RATED]-(u) RETURN count(DISTINCT u)graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie O[Other]:::person -->|ACTED_IN| M O -->|ACTED_IN| M2[Movie2]:::movie
Three-Hop Chains
3-hop actor chain
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(o)-[:ACTED_IN]->(m2) RETURN DISTINCT m2.title LIMIT 50graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre M2[Movie2]:::movie -->|IN_GENRE| G
Three-Hop Chains
Actor-movie-genre-movie
MATCH (p)-[:ACTED_IN]->(m)-[:IN_GENRE]->(g)<-[:IN_GENRE]-(m2) RETURN DISTINCT m2.title LIMIT 30graph LR U[User]:::user -->|RATED| M[Movie]:::movie A[Actor]:::person -->|ACTED_IN| M A -->|ACTED_IN| M2[Movie2]:::movie
Three-Hop Chains
User-movie-actor-movie
MATCH (u:User)-[:RATED]->(m)<-[:ACTED_IN]-(a)-[:ACTED_IN]->(m2) RETURN DISTINCT m2.title LIMIT 30graph RL M1[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre M2[Movie]:::movie -->|IN_GENRE| G M3[Movie]:::movie -->|IN_GENRE| G G -->|count| R[result]:::result
Aggregations
Movies per genre
MATCH (g:Genre)<-[:IN_GENRE]-(m) WITH g, count(m) AS c RETURN g.name, c ORDER BY c DESC LIMIT 10graph RL U1[User]:::user -->|RATED| M[Movie]:::movie U2[User]:::user -->|RATED| M M -->|avg| R[result]:::result
Aggregations
Top rated movies
MATCH (m:Movie)<-[r:RATED]-(u) WITH m, avg(r.rating) AS avg RETURN m.title, avg ORDER BY avg DESC LIMIT 10graph LR P[Person]:::person -->|ACTED_IN| M1[Movie]:::movie P -->|ACTED_IN| M2[Movie]:::movie P -->|count+filter| R[result]:::result
Aggregations
Prolific actors
MATCH (p:Person)-[:ACTED_IN]->(m) WITH p, count(m) AS c WHERE c>10 RETURN p.name, c ORDER BY c DESC LIMIT 10graph LR P[Person]:::person -->|DIRECTED| M1[Movie]:::movie P -->|DIRECTED| M2[Movie]:::movie P -->|count| R[result]:::result
Aggregations
Prolific directors
MATCH (p:Person)-[:DIRECTED]->(m) WITH p, count(m) AS c RETURN p.name, c ORDER BY c DESC LIMIT 10graph RL U[User]:::user -->|RATED| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre G -->|avg| R[result]:::result
Aggregations
Avg ratings per genre
MATCH (g:Genre)<-[:IN_GENRE]-(m)<-[r:RATED]-(u) RETURN g.name, avg(r.rating) ORDER BY avg DESCgraph RL U[User]:::user -->|RATED| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre G -->|count| R[result]:::result
Aggregations
Genre popularity
MATCH (g:Genre)<-[:IN_GENRE]-(m)<-[r:RATED]-(u) RETURN g.name, count(r) ORDER BY count DESCgraph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie -->|WHERE year>2000| R[result]:::result
WITH Pipeline
Forward WITH + filter
MATCH (p:Person)-[:ACTED_IN]->(m) WITH p, m WHERE m.year > 2000 RETURN p.name, m.title LIMIT 20graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie -->|DISTINCT| R[result]:::result
WITH Pipeline
Forward WITH + DISTINCT
MATCH (p)-[:ACTED_IN]->(m) WITH DISTINCT m RETURN m.title LIMIT 20graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie P -->|count+WHERE| R[result]:::result
WITH Pipeline
WITH agg + filter
MATCH (p)-[:ACTED_IN]->(m) WITH p, count(m) AS c WHERE c>5 RETURN p.name, c LIMIT 10graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie P -->|WITH barrier| P2[Person]:::person -->|DIRECTED| M2[Movie2]:::movie
WITH Pipeline
WITH stage barrier
MATCH (p)-[:ACTED_IN]->(m) WITH p, count(m) AS c ORDER BY c DESC LIMIT 20 MATCH (p)-[:DIRECTED]->(m2) RETURN p.name, m2.titlegraph LR M[Matrix]:::movie D[Director]:::person -->|DIRECTED| M D -->|DIRECTED| O[Other]:::movie
WITH Pipeline
Director's other movies
MATCH (m:Movie {title:'The Matrix'})<-[:DIRECTED]-(d)-[:DIRECTED]->(other) RETURN other.titlegraph LR U[User]:::user -->|RATED| M[Movie]:::movie O[Other]:::user -->|RATED| M O -->|shared>3| R[result]:::result
WITH Pipeline
Collab filter
MATCH (u:User)-[:RATED]->(m)<-[:RATED]-(other) WITH other, count(m) AS shared WHERE shared>3 RETURN other LIMIT 10graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre
Multi-MATCH
MATCH+MATCH shared var
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m) MATCH (m)-[:IN_GENRE]->(g) RETURN m.title, g.namegraph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie D[Director]:::person -->|DIRECTED| M
Multi-MATCH
MATCH+MATCH chain
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m) MATCH (m)<-[:DIRECTED]-(d) RETURN m.title, d.namegraph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie P -->|return| R1[p]:::result M -->|return| R2[m]:::result
Multi-MATCH
Return both endpoints
MATCH (p)-[:ACTED_IN]->(m) RETURN p, m LIMIT 30graph LR P[Person]:::person -->|r:ACTED_IN| M[Movie]:::movie style P fill:#4e79a7 style M fill:#f28e2b
Multi-MATCH
Return all 3 vars
MATCH (p)-[r:ACTED_IN]->(m) RETURN p, r, m LIMIT 20graph LR P[Keanu]:::person -->|type?| M[target]:::any
Multi-MATCH
Edge type() in RETURN
MATCH (p:Person {name:'Keanu'})-[r]->(m) RETURN type(r), m.titlegraph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie
Multi-MATCH
Whole node + prop
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m) RETURN p, m.titlegraph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie M -->|IN_GENRE| G[Genre]:::genre D[Director]:::person -->|DIRECTED| M
Multi-MATCH
3-match chain
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m) MATCH (m)-[:IN_GENRE]->(g) MATCH (m)<-[:DIRECTED]-(d) RETURN m.title, g.name, d.name LIMIT 15graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre
Multi-MATCH
Multi-pattern shared
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m), (m)-[:IN_GENRE]->(g) RETURN m.title, collect(g.name)graph LR A[Keanu]:::person -.->|shortest| B[Tom Hanks]:::person
Exotic Patterns
shortestPath
MATCH p=shortestPath((a:Person {name:'Keanu'})-[*]-(b:Person {name:'Tom Hanks'})) RETURN pgraph RL D[Director?]:::person -.->|DIRECTED| M[Matrix]:::movie
Exotic Patterns
OPTIONAL MATCH basic
MATCH (m:Movie {title:'The Matrix'}) OPTIONAL MATCH (m)<-[:DIRECTED]-(d) RETURN m.title, d.namegraph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie D[Director?]:::person -.->|DIRECTED| M
Exotic Patterns
OPTIONAL MATCH chain
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN]->(m) OPTIONAL MATCH (m)<-[:DIRECTED]-(d) RETURN m.title, d.name LIMIT 30graph LR M[Matrix]:::movie -.->|SEQUEL?| S[null]:::any
Exotic Patterns
OPTIONAL null emit
MATCH (m:Movie {title:'The Matrix'}) OPTIONAL MATCH (m)-[:SEQUEL]->(s) RETURN m.title, s.titlegraph LR P[Keanu]:::person ==>|path p| M[Movie]:::movie
Exotic Patterns
Named path return
MATCH p=(a:Person {name:'Keanu'})-[:ACTED_IN]->(m) RETURN pgraph LR P[Keanu]:::person -->|r: ???| N[target]:::any
Exotic Patterns
Edge var type()
MATCH (p:Person {name:'Keanu'})-[r]->(n) RETURN type(r), labels(n)graph LR U[User]:::user -->|RATED r.rating>4| M[Movie]:::movie
Exotic Patterns
Edge var props
MATCH (u:User)-[r:RATED]->(m:Movie) WHERE r.rating > 4 RETURN m.title, r.rating LIMIT 20graph LR P[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie P -.-> R[*]:::result M -.-> R
Exotic Patterns
RETURN *
MATCH (p:Person {name:'Keanu'})-[r:ACTED_IN]->(m) RETURN * LIMIT 38graph LR A[Keanu]:::person B[Matrix]:::movie
Exotic Patterns
Cartesian 2-node
MATCH (a:Person {name:'Keanu'}), (b:Movie {title:'The Matrix'}) RETURN a, bgraph LR P[Person]:::person -->|EXISTS DIRECTED?| M[Movie]:::movie
Exotic Patterns
EXISTS in WHERE
MATCH (p:Person) WHERE EXISTS {(p)-[:DIRECTED]->()} RETURN p.name LIMIT 20graph LR M[Movie
year=1999 OR 2003]:::movie
Exotic Patterns
OR in WHERE
MATCH (m:Movie) WHERE m.year=1999 OR m.year=2003 RETURN m.title LIMIT 20graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre G -->|count DISTINCT| R[result]:::result
Exotic Patterns
Count + group + order
MATCH (p:Person)-[:ACTED_IN]->(m)-[:IN_GENRE]->(g) WITH g, count(DISTINCT p) AS c RETURN g.name, c ORDER BY c DESC LIMIT 10graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie O[Other]:::person -->|ACTED_IN| M O -->|ACTED_IN| M2[Movie2]:::movie O2[Other2]:::person -->|ACTED_IN| M2
Variable-Length Paths
4-hop actor chain
MATCH (p)-[:ACTED_IN]->(m)<-[:ACTED_IN]-(o)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(o2) RETURN DISTINCT o2.name LIMIT 50graph LR KB[Kevin Bacon]:::person -.->|*1..2| O[Person]:::person
Variable-Length Paths
Kevin Bacon 2-degree
MATCH (kb:Person {name:'Kevin Bacon'})-[:ACTED_IN*1..2]-(other:Person) RETURN count(DISTINCT other)graph LR KB[Kevin Bacon]:::person -.->|*1..3| O[Person]:::person
Variable-Length Paths
Kevin Bacon 3-degree
MATCH (kb:Person {name:'Kevin Bacon'})-[:ACTED_IN*1..3]-(other:Person) RETURN count(DISTINCT other)graph LR KB[Kevin Bacon]:::person -.->|*1..4| O[Person]:::person
Variable-Length Paths
Kevin Bacon 4-degree
MATCH (kb:Person {name:'Kevin Bacon'})-[:ACTED_IN*1..4]-(other:Person) RETURN count(DISTINCT other)graph LR P[Keanu]:::person -.->|*1..4| O[Person]:::person
Variable-Length Paths
VLP 1..4 from Keanu
MATCH (p:Person {name:'Keanu'})-[:ACTED_IN*1..4]-(other:Person) RETURN DISTINCT other.name LIMIT 33graph LR KB[Kevin Bacon]:::person -.->|*1..6| O[Person]:::person
Variable-Length Paths
VLP 1..6 Kevin Bacon
MATCH (kb:Person {name:'Kevin Bacon'})-[:ACTED_IN*1..6]-(other:Person) RETURN DISTINCT other.name LIMIT 100graph RL P[Person]:::person -->|ACTED_IN| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre G -->|count DISTINCT| R[result]:::result
Variable-Length Paths
Full genre cross-agg
MATCH (g:Genre)<-[:IN_GENRE]-(m)<-[:ACTED_IN]-(p) WITH g, count(DISTINCT p) AS c RETURN g.name, c ORDER BY c DESCgraph LR U[User]:::user -->|RATED| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre R[Rec!]:::movie -->|IN_GENRE| G
Real App Queries
Content-based recs
MATCH (u:User {userId:'1'})-[:RATED]->(m)-[:IN_GENRE]->(g)<-[:IN_GENRE]-(rec) WHERE NOT (u)-[:RATED]->(rec) RETURN rec.title LIMIT 20graph LR U[User]:::user -->|RATED| M[Movie]:::movie O[Other]:::user -->|RATED| M O -->|RATED| R[Rec!]:::movie
Real App Queries
Collab filter recs
MATCH (u:User {userId:'1'})-[r:RATED]->(m)<-[:RATED]-(other)-[r2:RATED]->(rec) WHERE r.rating>3.5 AND r2.rating>3.5 RETURN rec.title, count(other) AS score ORDER BY score DESC LIMIT 20graph LR U[User]:::user -->|RATED| M[Movie]:::movie O[Other]:::user -->|RATED| M
Real App Queries
Similar users
MATCH (u:User {userId:'1'})-[:RATED]->(m)<-[:RATED]-(other) RETURN other.userId, count(m) LIMIT 20graph LR P[Tom Hanks]:::person -->|ACTED_IN| M[Movie]:::movie
Real App Queries
Actor filmography
MATCH (p:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m) RETURN m.title, m.year ORDER BY m.year DESCgraph RL A1[Actor]:::person -->|ACTED_IN| M[Matrix]:::movie A2[Actor]:::person -->|ACTED_IN| M A3[Actor]:::person -->|ACTED_IN| M
Real App Queries
Movie detail page
MATCH (m:Movie {title:'The Matrix'})<-[:ACTED_IN]-(a) RETURN m, collect(a.name)graph RL M1[Movie]:::movie -->|IN_GENRE| G[Action]:::genre M2[Movie]:::movie -->|IN_GENRE| G
Real App Queries
Genre browse
MATCH (g:Genre {name:'Action'})<-[:IN_GENRE]-(m) RETURN m.title, m.year ORDER BY m.year DESC LIMIT 50graph LR M[Movie
title STARTS WITH]:::movie
Real App Queries
Search by title prefix
MATCH (m:Movie) WHERE m.title STARTS WITH 'The' RETURN m.title LIMIT 30graph LR A[Keanu]:::person -->|ACTED_IN| M[Movie]:::movie B[Laurence]:::person -->|ACTED_IN| M
Real App Queries
Mutual connections
MATCH (a:Person {name:'Keanu'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(b:Person {name:'Laurence'}) RETURN m.titlegraph LR U[User]:::user -->|RATED| M[Movie]:::movie O[Other]:::user -->|RATED| M O -->|RATED| R[Rec]:::movie
Real App Queries
Friend-of-friend
MATCH (u:User {userId:'1'})-[:RATED]->(m)<-[:RATED]-(other)-[:RATED]->(rec) RETURN DISTINCT rec.title LIMIT 30graph LR M[Movie]:::movie -->|group by year| R[year, count]:::result
Real App Queries
Yearly movie count
MATCH (m:Movie) RETURN m.year, count(m) ORDER BY m.yeargraph RL U[User]:::user -->|RATED| M[Movie]:::movie -->|IN_GENRE| G[Genre]:::genre G -->|avg rating| R[result]:::result
Real App Queries
Top genres by avg rating
MATCH (g:Genre)<-[:IN_GENRE]-(m)<-[r:RATED]-(u) RETURN g.name, avg(r.rating) ORDER BY avg DESC LIMIT 10graph LR P[Person]:::person -->|ACTED_IN| M[Movie]:::movie O[Other]:::person -->|ACTED_IN| M P -->|count DISTINCT| R[result]:::result
Real App Queries
Most connected actors
MATCH (p:Person)-[:ACTED_IN]->(m)<-[:ACTED_IN]-(other) WITH p, count(DISTINCT other) AS c RETURN p.name, c ORDER BY c DESC LIMIT 10Algorithms
Ask questions. Get answers on the graph.
Who’s the most connected? Where are the clusters? What’s the shortest path? Run it, see it.
Standards Compliance
No lock-in. Real Cypher.
TETRA passes all 1,611 scenarios in the openCypher TCK. So does Neo4j. Your queries work on both. Move when you want to.
Same language. Faster results.
Methodology
platform: Apple M4 Pro · 16 GB RAM · macOS · CPU only
environment: Both databases containerized, identical conditions
dataset: Recommendations — 28,863 nodes, 166,261 edges
queries: 18 Cypher queries across 4 categories
metric: p50 median latency in microseconds — lower is better
throughput: Mixed workload, queries per second — higher is better
cypher_tck: 1,611 / 1,611 scenarios (100%)
Demo the TETRA viewer for FREE in your browser.
Explore the recommendations dataset in 3D. 2,330 nodes. 3,506 edges. Running entirely in your browser.
Launch Demo →Introductory Pricing
Questions? Schedule a call or reach out.

