Ask for Rule 5.
Get Rule 5.
A retrieval layer that resolves section references exactly — hybrid semantic search only as fallback. Works with the parser you already use.
The failure mode
- Vector search returns the section near the one you asked for — not the one you asked for.
- Citations pin the wrong clause, so the answer looks sourced but isn't.
- Your evals pass. Your users don't.
How it works
Index
POST a parsed doc or a raw PDF. Rule5 builds a section graph with stable IDs and every alias — Rule 5, §5, Section V — mapped to one node, and subsections (5.1, 5.1(a)) kept as children.
Query
Ask with a section reference or plain natural language. Same endpoint either way.
Resolve
Exact resolution wins deterministically. Semantic search runs only as fallback. Every response carries its resolution_path, so citations are auditable.
Example responses (v1 preview)
Illustrative output — v1 ships to founding users. Pre-rendered, not a live API.
query "What does Article 17 require?" — natural language
{ "doc_id": "gdpr_2016_679", "query": "What does Article 17 require?" }
{
"resolved": {
"node_id": "gdpr_2016_679/art-17",
"label": "Article 17 — Right to erasure ('right to be forgotten')",
"match": "exact",
"aliases": ["Article 17", "Art. 17", "right to erasure"],
"children": ["art-17/1", "art-17/2", "art-17/3"],
"via": ["nl-extract:Article 17", "alias:Art. 17"],
"text": "The data subject shall have the right to obtain from the controller the erasure of personal data concerning him or her without undue delay where ..."
},
"fallback_used": false,
"resolution_path": ["query", "nl-extract→Article 17", "alias→art-17", "node:gdpr_2016_679/art-17"]
}
query "clause 14.3 water damage" — ref + keywords, whole section returned
{ "doc_id": "policy_home_2024", "query": "clause 14.3 water damage" }
{
"resolved": {
"node_id": "policy_home_2024/14.3",
"label": "14.3 Water Damage",
"match": "exact",
"scope": "section",
"via": ["ref:14.3"],
"text": "14.3 Water Damage. We cover sudden and accidental discharge or overflow of water from a plumbing, heating, or air-conditioning system. This section excludes gradual seepage (see 14.4) and flood (see 3.1) ..."
},
"fallback_used": false,
"resolution_path": ["query", "extract-ref:14.3", "node:14.3", "return:whole-section"]
}
query "requirement 3.4.1.2" — deep-numbered section
{ "doc_id": "rfp_2026_infra", "query": "requirement 3.4.1.2" }
{
"resolved": {
"node_id": "rfp_2026_infra/3.4.1.2",
"label": "3.4.1.2 Encryption at rest",
"match": "exact",
"path": ["3 Security", "3.4 Data protection", "3.4.1 Encryption", "3.4.1.2 Encryption at rest"],
"via": ["ref:3.4.1.2"],
"text": "3.4.1.2 The Vendor shall encrypt all data at rest using AES-256 or an equivalent approved by the Authority ..."
},
"fallback_used": false,
"resolution_path": ["query", "extract-ref:3.4.1.2", "node:3.4.1.2"]
}
Founding access
Join the waitlist
No pitch. One email when v1 is live and when founding seats open.