| 1 | --- |
| 2 | title: "ProcureNet Vector Store: Indexes and Buyer Data Flow" |
| 3 | sidebarTitle: "Vector Store" |
| 4 | description: "Understand how ProcureNet's four vector indexes power buyer resolution, contract validation, localization, and entitlements in your checkout flows." |
| 5 | --- |
| 6 | |
| 7 | ProcureNet uses a local-first vector store to power AI-driven lookups for buyer profiles, contract rules, translations, and entitlements. The store operates alongside the OpenClaw agent swarm, meaning reads are low-latency and survive network interruptions. You do not write vectors yourself — the platform populates and queries the store automatically based on the data you supply to the orchestration API. |
| 8 | |
| 9 | ## The Four Indexes |
| 10 | |
| 11 | The vector store contains four named indexes. Each serves a distinct role in the orchestration pipeline. |
| 12 | |
| 13 | <CardGroup cols={2}> |
| 14 | <Card title="wcs_profiles" icon="user"> |
| 15 | **Type: `scoring`** |
| 16 | |
| 17 | Stores buyer identity signals used by the Wallet Confidence Score engine to resolve sessions as `resolved`, `partial`, or `anonymous`. The richer the identity data you pass to `/api/v7/orchestrate`, the more accurately this index can identify returning buyers. |
| 18 | </Card> |
| 19 | <Card title="contract_rules" icon="file-contract"> |
| 20 | **Type: `validation`** |
| 21 | |
| 22 | Holds procurement contract terms and validation logic. Checked during state transitions to ensure orders comply with applicable rules before advancing to the next stage. |
| 23 | </Card> |
| 24 | <Card title="translations" icon="language"> |
| 25 | **Type: `i18n`** |
| 26 | |
| 27 | Contains localized strings for checkout UI flows. Enables ProcureNet to serve the correct language and locale to buyers without round-trips to a remote translation service. |
| 28 | </Card> |
| 29 | <Card title="entitlements" icon="badge-check"> |
| 30 | **Type: `authorization`** |
| 31 | |
| 32 | Controls which features and funding methods a buyer or account can access. Queried when you call the funding-method endpoint to verify the buyer is permitted to use the selected payment method. |
| 33 | </Card> |
| 34 | </CardGroup> |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## How Each Index Affects Your Integration |
| 39 | |
| 40 | The indexes work together as a pipeline. Understanding their roles helps you pass the right data at the right time. |
| 41 | |
| 42 | <Steps> |
| 43 | <Step title="Buyer signals flow into wcs_profiles"> |
| 44 | When you call `POST /api/v7/orchestrate`, ProcureNet uses the identity |
| 45 | signals you supply in the `hints` object — `customerId`, `email`, `phone`, |
| 46 | and `deviceId` — to query the `wcs_profiles` index and calculate the |
| 47 | Wallet Confidence Score. A richer profile means a higher score and a |
| 48 | `resolved` session mode. |
| 49 | </Step> |
| 50 | <Step title="contract_rules validates state transitions"> |
| 51 | Before the state machine advances on `POST /api/v7/sessions/{id}/transition`, |
| 52 | applicable rules from `contract_rules` are retrieved and evaluated. If your |
| 53 | order violates a procurement rule, the transition is rejected with a |
| 54 | validation error. |
| 55 | </Step> |
| 56 | <Step title="translations localise the checkout flow"> |
| 57 | ProcureNet resolves the buyer's locale from session context and queries the |
| 58 | `translations` index to return correctly localised strings. No action is |
| 59 | required from you — locale handling is automatic. |
| 60 | </Step> |
| 61 | <Step title="entitlements gate funding methods"> |
| 62 | When you call `POST /api/v7/sessions/{id}/funding-method`, ProcureNet |
| 63 | queries the `entitlements` index against the buyer's session to confirm |
| 64 | the requested payment method is permitted. Requests for unauthorised |
| 65 | methods are rejected with a `403` response. |
| 66 | </Step> |
| 67 | </Steps> |
| 68 | |
| 69 | --- |
| 70 | |
| 71 | ## Vector Item Fields |
| 72 | |
| 73 | Every item stored in any index shares the same shape. These fields are managed by ProcureNet — you reference them only when reading diagnostic output or support responses. |
| 74 | |
| 75 | <ResponseField name="id" type="string" required> |
| 76 | A unique identifier for this vector item within its index. |
| 77 | </ResponseField> |
| 78 | |
| 79 | <ResponseField name="payload" type="object" required> |
| 80 | Metadata attached to the vector item. Shape varies by index type — |
| 81 | for example, `wcs_profiles` payloads contain buyer signal fields, while |
| 82 | `contract_rules` payloads contain rule predicates. |
| 83 | </ResponseField> |
| 84 | |
| 85 | <ResponseField name="updatedAt" type="string (ISO 8601)" required> |
| 86 | Timestamp of the last write to this item. |
| 87 | </ResponseField> |
| 88 | |
| 89 | <ResponseField name="ttlSeconds" type="integer"> |
| 90 | Optional expiry in seconds from `updatedAt`. When set, the item is |
| 91 | automatically evicted from the index once the TTL elapses. Commonly applied |
| 92 | to `wcs_profiles` items for short-lived anonymous sessions. |
| 93 | </ResponseField> |
| 94 | |
| 95 | --- |
| 96 | |
| 97 | <Note> |
| 98 | The vector store is managed internally by OpenClaw agents — you do not write vectors directly. Buyer data you pass to `POST /api/v7/orchestrate` is used to populate and query profiles automatically. |
| 99 | </Note> |
| 100 | |
| 101 | <Tip> |
| 102 | If buyer lookups are returning `anonymous` mode unexpectedly, ensure you are passing all four identity signals — `customerId`, `email`, `phone`, and `deviceId` — in the `hints` object of your orchestration request. Missing signals reduce the Wallet Confidence Score and may drop the session below the `resolved` threshold of 100 points. |
| 103 | </Tip> |