Skip to content

Company profile

Your company profile — categories, geography, certifications, exclusions, manufacturer partners, target buyers, overview, business role, Canadian-supplier status, employee count, and contract-value range — is what Prok scores every opportunity against. Prok keeps it current by reading what you tell it, in email replies and in portal feedback, and applying durable facts automatically. Every change it makes is logged, and every change can be undone.

You can also change it yourself, in the portal or with PATCH /api/v1/profile: see Editing your company profile. This page covers the changes Prok makes on its own, and the history and revert rules that apply to both.

Terminal window
curl "https://app.prokure.ca/api/v1/profile" \
-H "Authorization: Bearer $PROKURE_API_KEY"

Requires profile:read. Returns the profile as it stands right now — the same fields the portal’s Company Profile page renders, employee_count included.

Prok doesn’t ask before editing your profile — it applies changes and tells you afterward. Two things can trigger an edit:

  • Replying to an email — a digest reply or any reply to Prok that states a durable fact (“we don’t work with Vertex anymore,” “we just got ISO 9001,” “our minimum contract is 50k”).
  • Portal feedback — agreeing or disagreeing with a match and giving a reason that states the same kind of fact.

Both channels run the same extraction and the same limits: at most 10 field changes are applied per email or per feedback submission — anything past that is skipped and called out as skipped, not silently dropped. Facts that don’t map to a profile field become a learned rule instead (see Learned rules); only ones that do become a profile change.

Categories, geography, certifications, exclusions, manufacturer partners, and target buyers are lists. Adding appends the value. Removing requires an exact match, case-insensitive, against what’s already on the list — Prok will not guess which entry you meant. Asking to remove something that isn’t there is a no-op, and the confirmation tells you what the field currently holds instead of pretending it worked.

Adding a manufacturer partner only adds the name — it does not onboard their catalog. A newly added partner has no products yet and does not affect scoring until you separately onboard their catalog, which you do on the Product catalog page (where you can also add the partner in the first place). Removing one is different: if that partner has catalog products on file, removing them deactivates every one of those products in the same action, so they stop counting toward match scores immediately. Reverting the removal reactivates the same partner and the same products.

Overview, business role, Canadian-supplier status, employee count, and the minimum/maximum contract value are single values, set outright (including clearing one back to empty). A minimum/maximum pair that would put the minimum above the maximum is rejected rather than applied.

After processing a reply, Prok sends back a confirmation listing what it did line by line — what was added, removed, or set, what was skipped and why, and any manufacturer-partner cascade. If anything actually changed, the email ends with:

Reply "undo" to revert these profile changes.

Replying undo to that specific email reverts every change it listed, in one pass, and Prok replies again in the same thread with the outcome for each — reverted, or the reason it couldn’t be (see below). undo only works as a reply to the confirmation email itself; sent anywhere else, Prok replies that it can’t find profile changes tied to that thread and points you at the confirmation email or the portal instead.

Terminal window
curl "https://app.prokure.ca/api/v1/profile/changes" \
-H "Authorization: Bearer $PROKURE_API_KEY"

Requires profile:read. Returns every change, newest first, 20 per page:

{
"changes": [
{
"id": "b4b6b8b0-...",
"field": "certifications",
"value_before": ["ISO 9001"],
"value_after": ["ISO 9001", "CGP"],
"cascade_summary": { "products_deactivated": 0, "products_reactivated": 0 },
"source": "email_feedback",
"created_at": "2026-08-20T14:03:11.000Z",
"reverted": false,
"revertible": true
}
],
"next_cursor": null
}
Field Meaning
field Which profile field changed.
value_before / value_after The field’s value on either side of the change — a list for list fields, a scalar (or null) for the rest.
cascade_summary Catalog products deactivated or reactivated as a side effect of this change (manufacturer-partner removals and their reverts only — everything else reports zeros).
source Where the change came from: email_feedback, portal_feedback, portal_revert, email_undo, portal_edit (an edit you made in the portal or through PATCH /api/v1/profile, shown as You — portal edit), or portal_import (a catalog import, shown as You — catalog import).
reverted Whether this change has since been reverted.
revertible Whether POST .../revert will currently succeed on this id — see below.

Page past the first 20 with next_cursor:

Terminal window
curl "https://app.prokure.ca/api/v1/profile/changes?cursor=$NEXT_CURSOR" \
-H "Authorization: Bearer $PROKURE_API_KEY"
Terminal window
curl -X POST "https://app.prokure.ca/api/v1/profile/changes/$ID/revert" \
-H "Authorization: Bearer $PROKURE_API_KEY"

Requires profile:write. A revert is itself a new, ordinary profile change — it writes the field back to its prior value (undoing a manufacturer-partner cascade too, where one applied), and a successful call returns that new change, not the one you reverted. The original row is left in place with reverted: true.

Only the latest unreverted change to a field can be reverted — revertible in the change-history response tells you which id that is for each field without your having to work it out. Calling revert on any other id fails:

Status error Meaning
404 not_found No change with this id.
409 already_reverted This change was reverted already.
409 superseded The field has changed again since — this is no longer the latest change to it, so reverting it would clobber something newer.

This is the same rule the portal’s Company Profile page enforces in its UI (only the newest entry per field offers a revert control) — the API rejects it independently rather than trusting the client to have checked first.