Independent software studio

Software that knows how things connect.

NeoDataLabs builds graph-native products to help you understand things, natural language search sites to help you find things, and mobile and desktop apps to help you do things. 6 graph projects, 10 live search sites, and 7 apps on the App Store.

  • Cypher Graphdraft, ProAudioGraph, One Thousand Basses, Supply Chain Mapper, TigerFinOps
  • Graph algorithms Supply Chain Mapper, TigerFinOps
  • Embedded graph engines TigerFinOps, Terrella
  • Swift Terrella, 7 iPhone apps
  • Semantic search One Thousand Basses, Search network

Graph work

Questions you can only answer with relationships.

TigerFinOps

Live demo, synthetic data

Which cloud spend is waste, and who actually owns it?

Graph-native cloud cost optimization built on FOCUS, the open billing standard. TigerFinOps joins billing data with a resource inventory into one property graph, then produces costed, auditable recommendations. The graph database is embedded, so there is no server to stand up.

  • Finds what a bill cannot: a NAT gateway serving an empty subnet, a snapshot that outlived its volume, an untagged disk that belongs to payments because of what it is attached to.
  • Infers ownership of untagged resources by following relationships, with a confidence score and evidence trail on every claim.
  • Allocates shared infrastructure such as NAT gateways, load balancers and shared databases to the teams that actually use it.

Built with: Python · LadybugDB (embedded, Cypher) · NetworkX · Arrow / Parquet · FastAPI · Cytoscape.js · Cloud Run

TigerFinOps explorer overview: spend by cloud across AWS, Azure and GCP, a savings waterfall, and savings ranked by opportunity.

Graphdraft

Live

Is this graph model right before anyone writes a line of Cypher?

A property graph modelling tool. Define node labels, relationships and typed properties, see the model as a live diagram, and catch schema mistakes before they reach production. The standalone edition is a single offline HTML file; the hosted edition adds accounts, comments and review.

  • Validation flags duplicate labels, missing endpoints, nodes without a key property and orphans as you model.
  • Exports Cypher (constraints, indexes, MERGE statements), GraphML, Mermaid, JSON, YAML, XML, CSV and a Markdown data dictionary.
  • Seven importers, including one that turns SQL table definitions into a starting graph model.

Built with: Vanilla HTML / CSS / JS, zero dependencies · Firebase Hosting · Firebase Auth · Firestore

Graphdraft landing page beside a diagram of a small e-commerce model: Customer, Order, Address and Review nodes joined by PLACED, SHIPPED_TO, LIVES_AT and WROTE relationships.

ProAudioGraph

Live

Will this microphone work with that device, and under what conditions?

An open knowledge graph of audio device compatibility. It records the connectors, protocols, power and signal conditions that make two devices work together, the claims that say so, and the evidence behind them. Ask about any two devices and it returns ranked, explained signal chains.

  • The graph is over ports, not devices. A cable is a device with two ports, so "you need an adapter" is a path, not a special case.
  • Neo4j enumerates every chain that carries a signal end to end; rules decide whether it actually works, such as phantom power reaching a mic or enough gain.
  • Catches the dangerous cases: a passive ribbon microphone that must never see 48V phantom power.

Built with: Python · Neo4j / Cypher · YAML in git as the source of truth · Cloud Run

ProAudioGraph answering "Shure SM7B into an Apple iPhone 15": 51 chains examined, the top chain runs through a Focusrite Scarlett 2i2, with checks for gain, USB roles and a warning about the USB power budget.

One Thousand Basses

Live

Which basses sound like this, and who plays them?

Natural-language search for electric bass guitars. Describe the bass you want ("warm vintage tone, short scale, five strings, under $1,500") and get matching models, combining semantic similarity, hard filters, and graph traversals across brands, models and the players who use them.

  • Bass models, brands, players and review summaries live in one graph with a native vector index on the same nodes.
  • One query can mix meaning ("punchy, growly"), constraints (strings, scale, price) and relationships (who plays what).
  • Review pipeline summarizes raw reviews per model family and folds that language back into the embeddings, so terms like "neck-dive" sharpen results.

Built with: Neo4j AuraDB with vector index · Vertex AI embeddings · Gemini · FastAPI · Cloud Run

One Thousand Basses graph modelA Player node points to a BassModel node with a PLAYS relationship. BassModel points to Brand with MADE_BY and to ReviewSummary with HAS_REVIEW_SUMMARY. BassModel also carries a 768-dimension embedding in a vector index.PLAYSMADE_BYHAS_REVIEW_SUMMARYPlayerBassModelembedding: vector(768)BrandReviewSummary

Supply Chain Mapper

Live demo, synthetic data

Which suppliers look safe on a scorecard but would take the network down?

A semiconductor supply chain modelled as a graph: five tiers of companies, the countries they sit in, and the shipping chokepoints their goods pass through. It compares a traditional per-supplier risk scorecard with network metrics to find hidden cascade points, then simulates how a shock spreads week by week.

  • Network score blends betweenness, reverse PageRank weighted by supply share, and downstream reach.
  • Validates itself: each supplier is removed in a Leontief model and lost output is measured. The network score tracks that impact; the scorecard does not.
  • Shipping chokepoints such as the Taiwan Strait, Malacca and Suez are nodes, so disruption can target a route, not just a company.

Built with: Python · NetworkX · Neo4j 5 / Cypher · FastAPI · React · Sigma.js · MapLibre · Cloud Run

Supply Chain Mapper risk ranking comparing each supplier’s scorecard rating with its network criticality.

Terrella

Coming to the Mac App Store

How does everything in my life connect?

A local-first personal graph for macOS. People, organizations, books, ideas, projects and goals live in one connected graph in a single file on your own machine, instead of five apps that know nothing about each other. It runs on SwiftGraphDB, a graph engine on SQLite built for the app.

  • Relationships read naturally from both sides ("works at" and "employs") and carry dates, so a job you left becomes history instead of being deleted.
  • Two-hop discovery surfaces who and what is one introduction away.
  • Imports Contacts as people, organizations and the links between them, without overwriting your edits on re-import.

Built with: Swift · SwiftUI · SwiftGraphDB · SQLite via GRDB · FTS5

Terrella on macOS showing a person’s relationships grouped by type: knows, recommended, works at, introduced, and a two-hops-away section.

Apps

Shipped to the App Store.

Small, focused apps for health, home and relationships. 7 released in 2026, with Terrella for Mac next.

Coming to the Mac App StoreTerrellaA local-first personal graph of the people, ideas and projects in your life.

Studio

Problem solving through process.

NeoDataLabs is an independent software studio. Every project starts with the problem to be solved, the data related to the problem space, and an exploration of tools and technologies available to solve the problem.

Graph
Neo4j, embedded graph engines, Cypher, NetworkX
Cloud
Google Cloud: Cloud Run, Firebase, Vertex AI, BigQuery
Apple
Swift and SwiftUI for iPhone and Mac

Building on connected data? Let’s talk.