All loops
RAGHard 13 min· claude-haiku-4-5
Multi-tenant RAG
Per-tenant indexes with row-level isolation in pgvector.
Read the full RAG build guide →NOT DEPLOYEDNOT DEPLOYED
0168ms
Trigger
cron(0 7 * * *) fired · every day · 07:00
021188ms
Agent
claude-haiku-4-5 · in 1688 tok · out 728 tok
03178ms
Tools
postgres-mcp/lovable cloud:invoke → 429 backoff · 68ms
0458ms
Verify
schema check · json-schema draft-2020 passed
0588ms
Output
eval passed · faithfulness 0.94
0648ms
Notify
audit log written · runbook link attached
SUCCESS
0%
0 runs
P50
0ms
median
P95
0ms
tail
AVG COST
—
per run
LAST OK
never
—
LAST FAIL
never
none
Latency · last 30 runs0 samples
no runs yet
Latest output · what your users see
RAG index · kb-v3
chunks
36
faithfulness
0.96
recall
0.88
Q: How do I rotate a secret without restarting the loop? A: Call `locker rotate <name>` — running loops pick up the new value on their next tick via the signed refresh channel.
// press Test to run once · Watch live to keep streaming · Deploy to make it real
The problem
Naive RAG embarrasses you in front of users — irrelevant chunks, no citations, drift.
The outcome
A measurable, evaluable RAG pipeline with cited answers and a quality dashboard.
Ingredients & skills
Secrets
- ANTHROPIC_API_KEY
- DATABASE_URL
Providers
- Anthropic
- Lovable Cloud
MCP servers
- postgres-mcp
- fetch-mcp
#rag#embeddings#saas
How it works
Per-tenant indexes with row-level isolation in pgvector.
Step 1
1 — Index
Chunk → embed → upsert into pgvector with a metadata JSON column.
Step 2
2 — Retrieve
Top-k vector + filter on metadata. Optional rerank pass.
Step 3
3 — Answer
Claude answers using only retrieved chunks. Empty retrieval ⇒ 'I don't know'.
One-line deploy
The button above runs the same command with your saved config. This is the raw CLI form.
bash
npx claudeloops deploy multi-tenant-rag