solutions

One database.
Six solutions.

RAG, agents, recommendations, fraud detection, personalization, live analytics — six workloads that usually mean five systems and a sync pipeline. Here each one is a different composition of the same substrate: SQL, vector, graph, full-text, /watch and /ask over the same rows, written atomically.

POST /v1/tenants/:t/rows one substrate atomic cross-shape write rag recommendations personalization agents fraud detection real-time analytics one write → every solution sees it, or none do
why one substrate

Every solution rides the same write.

Insert a row with an embedding, a full-text field and a typed relation, and all four updates commit in one append. A concurrent reader — a retrieval call, a rule engine, a dashboard — cannot observe a state where the row exists but the vector index hasn't caught up or the reverse edge is missing. How the substrate works →

That one property is what each solution page keeps cashing in: RAG that can't drift, agents that read their own writes, detectors with zero lag behind the data. A stack of separate stores needs a saga, a reconciler and a skew detector to approximate it.

The trade-off is honest: multi-TB historical scans belong in a warehouse. Fresh, operational data composed across shapes is the sweet spot. Full architecture →

one insert, four updates
> POST /v1/tenants/:t/rows/products
> { "name": "trail runner", "embedding": […],
>   "description": "…", "brand": "b_12" }

committed atomically
  row        products/p_1              
  vector     hnsw entry                
  posting    bm25 term postings        
  edge       brand ↔ product (both)    

a concurrent reader sees all four — or none
how they compose

One primitive, six compositions.

Every chip below is a shipped module, and every combination runs in one plan against one consistent snapshot — no cross-system merge in your application code.

RAG
VectorFull-textSQL/ask

Hybrid retrieval — dense + BM25-style sparse + a SQL filter in one query, with a min_score floor so an empty result is a real result.

Agents
SQLVectorGraph/watch

Durable memory, typed relationships and live operational state written together — read-your-writes context every session.

Recommendations
VectorGraphSQL

Similarity + who-also-bought signal + inventory predicates in one plan. Adaptive over-fetch keeps k survivors after the filter.

Fraud detection
/watchGraphSQL

Subscribe to the transaction prefix; run PageRank and triangle enumeration on the same store the rule predicates read.

Personalization
SQLVector

Click row + preference vector in one atomic batch; the next personalised retrieval reads the new state immediately.

Real-time analytics
SQL

Streaming aggregate executor over fresh rows — GROUP BY, aggregate over expression, predicate pushdown to secondary indexes.

the shapes SQL Vector Graph Full-text /watch /ask
at a glance
6
query shapes shipped
1
atomic write across every shape
0
cross-store sync jobs
9
graph algorithms
4 × 4
vector metrics × index variants
next

Start with the workload closest to yours — or with the substrate itself.