Manage Sourcing
Use this skill after an RFX is published: response tracking, reminders,
grading review, awarding, closing, and the handoff into a procurement request
for the winning vendor.
For building or changing the questionnaire, sheets, vendor list, or publishing,
use ramp-run-sourcing-event.
Rules
- Run commands with
--agent and pass --rationale every time; with --json,
put rationale in the JSON body. Command aliases are kebab-case, option
names are snake_case, and required *_id/*_uuid inputs are positional.
- Keep identifiers labeled:
sourcing_event_id (award/close act on this),
rfx_id (tracking acts on this), invitation_id, payee_uuid. Never
invent IDs; take them from prior responses.
- Awarding decides the event for one vendor and closing ends it — both need
the user's explicit confirmation after seeing the current state.
- A direct award notifies the winner and eligible non-winning vendors outside
Ramp. Confirmation must show those recipients, not just the proposed winner.
- When an action is unavailable for the current status, fix the state or stop;
do not retry blindly.
- Responses render dates in HTTP-date form; convert before showing the user.
- Do not offer vendor clarification Q&A; it is not supported.
- For pricing comparisons, send the user to the RFX Pricing tab in Ramp.
- This is a requester-side skill. Vendor RSVP, NDA signing, draft responses,
XLSX import/export, final submission, and pricing-line entry belong in the
vendor portal and cannot be completed with this requester skill.
Workflow
Locate the evaluation, then load its full state:
ramp sourcing list --rationale "Find the sourcing event the user is asking about" --agent
ramp sourcing event "<sourcing_event_id>" --rationale "Load event status, RFXs, and vendor progress" --agent
If next_page_cursor is not null, continue listing with --page_cursor
until it is null before concluding the event is absent. Preserve the same
--page_size on every page and never alter the returned cursor.
The event payload includes each RFX with per-vendor invitation status,
acceptance, and whether a response was submitted.
Track one RFX. Use summary for progress counts and grading mode, and
responses only when the user wants the actual submitted answers:
ramp sourcing summary "<rfx_id>" --rationale "Check vendor response and grading progress" --agent
ramp sourcing responses "<rfx_id>" --rationale "Review the submitted vendor answers" --agent
grading_mode is AI_ONLY or MANUAL_REVIEW.
suggested_grading_status reports AI grade generation for a response, not
overall or manual grading completion.
Nudge vendors with an ACTIVE invitation who have not rejected participation
or submitted a response. A per-vendor cooldown prevents duplicate reminders.
Show the exact vendors and contacts that will receive a reminder and get the
user's confirmation before sending. Pass invitation IDs to remind a confirmed
subset:
ramp sourcing remind "<rfx_id>" --json '{"rationale": "Remind the confirmed vendors before the deadline", "rfx_vendor_invitation_ids": ["<invitation_id>", "<invitation_id>"]}' --agent
Omit rfx_vendor_invitation_ids only when the user has confirmed every
eligible vendor. Report which reminders were scheduled and which were
skipped due to cooldown.
Review outcomes. The grading overview — AI-generated takeaways,
recommendation, per-vendor section scores, and recorded field grades —
becomes available once the RFX is GRADED or CLOSED. The RFX becomes GRADED
after all accepted vendors have submitted, automated grading completes, and
no still-open pending RSVP blocks completion.
mark-graded is the normal UI's destructive End submissions early
action, not general finalization. Use it only when at least one response was
submitted and the user explicitly wants to stop remaining vendors from
RSVPing or submitting. Show every unfinished active vendor and confirm that
submissions cannot resume before calling it:
ramp sourcing mark-graded "<rfx_id>" --rationale "User confirmed ending remaining vendor submissions early" --agent
ramp sourcing grading "<rfx_id>" --rationale "Review grading outcomes and the AI recommendation" --agent
Check grading_insight.status; do not claim there is an AI recommendation
when the insight or recommended vendor is absent. Present any recommendation
as input, not a decision — the user chooses the winner. Each recorded grade's
grade_state distinguishes an AUTO_ACCEPTED AI grade from a
HUMAN_EDITED grade.
Award the winner. Grading must be complete on the current RFX, and the
winner must have an ACTIVE invitation, have accepted, and have submitted a
response. Re-fetch the RFX before confirmation. Show the grading outcome,
explain that vendor settings may deactivate draft vendor records used only
for non-winning invitations, and show the exact contacts who will be
notified: the winner, plus every non-winning
ACTIVE vendor that has not rejected participation. State that a direct award
decides the event, closes its current RFX, and sends those notifications;
act only on explicit confirmation after showing that list:
ramp sourcing rfx "<rfx_id>" --rationale "Preflight award eligibility and notification recipients" --agent
ramp sourcing award "<payee_uuid>" "<sourcing_event_id>" --rationale "User confirmed awarding the event to the selected vendor" --agent
submitted_for_approval: true means an award approval policy routed the
decision to approvers in the Ramp app first; the event is still ACTIVE and
no award notifications have been sent yet. Tell the user and stop — there is
no CLI approval step. Approval later decides the event and sends the vendor
notifications.
Close out. Closing archives the event and cascades every RFX to CLOSED
(voiding outstanding e-sign envelopes). On an ACTIVE event this ends it
without an award; on a DECIDED event it archives the already-awarded event.
Confirm the event and those effects first:
ramp sourcing close-event "<sourcing_event_id>" --rationale "User confirmed archiving the sourcing event and closing all child RFXs" --agent
Hand off to purchase. After awarding, list procurement spend programs. Show
the best matching program by name/description and alternatives; if multiple
programs fit, require the user to choose. Then confirm before creating the
persistent draft. Pass the selected spend intent, awarded vendor, and
awarded RFX so the request is pre-filled with the correct response context.
This call is not deduplicated, so do not repeat it after an ambiguous
timeout:
ramp procurement_requests spend-intents --page_size 50 --rationale "List procurement spend programs for the awarded sourcing event" --agent
ramp sourcing draft-spend-request "<sourcing_event_id>" --rfx_id "<rfx_id>" --payee_uuid "<awarded_payee_uuid>" --spend_intent_uuid "<selected_spend_intent_uuid>" --rationale "User confirmed drafting the purchase request under the selected spend program" --agent
Then switch to ramp-submit-procurement-request to fill and submit the
returned draft.
Output
For event or RFX tracking, keep rows compact using returned fields:
vendor | invitation status | accepted? | responded? | contact
For a decision summary before award:
Event:
RFX and type:
Responses submitted:
Grading status:
Top-scored vendor:
AI recommendation and reasoning:
Proposed winner:
Winner notification contact:
Non-winning notification contacts:
After any write, report the returned status and message verbatim in user
language. Never show CLI commands, flags, or JSON to the end user.
Handoff
Hand off instead of guessing when the user asks to change the questionnaire,
sheets, vendors, or publish state (ramp-run-sourcing-event); to fill or
submit the purchase request (ramp-submit-procurement-request); or when a
publish or award is pending approval in the Ramp app. Include:
Sourcing event ID:
RFX ID:
RFX status:
Pending approval: publish / award / none
Awarded vendor payee UUID (if any):
Draft spend request UUID (if any):
1---2name: ramp-manage-sourcing3description: Track and decide running Ramp sourcing events: monitor vendor responses to an RFX (RFP, RFI, RFQ), send reminders, review grading outcomes, award the winning vendor, and close out. Use when: 'who responded to our RFP', 'compare RFP responses', 'remind vendors to respond', 'award the RFP', or 'close the sourcing event'. Do NOT use to create, edit, or publish an RFX or invite vendors (use ramp-run-sourcing-event), or to fill and submit the follow-on purchase request (use ramp-submit-procurement-request).4---56# Manage Sourcing78Use this skill after an RFX is published: response tracking, reminders,9grading review, awarding, closing, and the handoff into a procurement request10for the winning vendor.1112For building or changing the questionnaire, sheets, vendor list, or publishing,13use `ramp-run-sourcing-event`.1415## Rules1617- Run commands with `--agent` and pass `--rationale` every time; with `--json`,18 put `rationale` in the JSON body. Command aliases are kebab-case, option19 names are snake_case, and required `*_id`/`*_uuid` inputs are positional.20- Keep identifiers labeled: `sourcing_event_id` (award/close act on this),21 `rfx_id` (tracking acts on this), `invitation_id`, `payee_uuid`. Never22 invent IDs; take them from prior responses.23- Awarding decides the event for one vendor and closing ends it — both need24 the user's explicit confirmation after seeing the current state.25- A direct award notifies the winner and eligible non-winning vendors outside26 Ramp. Confirmation must show those recipients, not just the proposed winner.27- When an action is unavailable for the current status, fix the state or stop;28 do not retry blindly.29- Responses render dates in HTTP-date form; convert before showing the user.30- Do not offer vendor clarification Q&A; it is not supported.31- For pricing comparisons, send the user to the RFX Pricing tab in Ramp.32- This is a requester-side skill. Vendor RSVP, NDA signing, draft responses,33 XLSX import/export, final submission, and pricing-line entry belong in the34 vendor portal and cannot be completed with this requester skill.3536## Workflow37381. Locate the evaluation, then load its full state:3940 ```bash41 ramp sourcing list --rationale "Find the sourcing event the user is asking about" --agent42 ramp sourcing event "<sourcing_event_id>" --rationale "Load event status, RFXs, and vendor progress" --agent43 ```4445 If `next_page_cursor` is not null, continue listing with `--page_cursor`46 until it is null before concluding the event is absent. Preserve the same47 `--page_size` on every page and never alter the returned cursor.4849 The event payload includes each RFX with per-vendor invitation status,50 acceptance, and whether a response was submitted.51522. Track one RFX. Use `summary` for progress counts and grading mode, and53 `responses` only when the user wants the actual submitted answers:5455 ```bash56 ramp sourcing summary "<rfx_id>" --rationale "Check vendor response and grading progress" --agent57 ramp sourcing responses "<rfx_id>" --rationale "Review the submitted vendor answers" --agent58 ```5960 `grading_mode` is `AI_ONLY` or `MANUAL_REVIEW`.61 `suggested_grading_status` reports AI grade generation for a response, not62 overall or manual grading completion.63643. Nudge vendors with an ACTIVE invitation who have not rejected participation65 or submitted a response. A per-vendor cooldown prevents duplicate reminders.66 Show the exact vendors and contacts that will receive a reminder and get the67 user's confirmation before sending. Pass invitation IDs to remind a confirmed68 subset:6970 ```bash71 ramp sourcing remind "<rfx_id>" --json '{"rationale": "Remind the confirmed vendors before the deadline", "rfx_vendor_invitation_ids": ["<invitation_id>", "<invitation_id>"]}' --agent72 ```7374 Omit `rfx_vendor_invitation_ids` only when the user has confirmed every75 eligible vendor. Report which reminders were scheduled and which were76 skipped due to cooldown.77784. Review outcomes. The grading overview — AI-generated takeaways,79 recommendation, per-vendor section scores, and recorded field grades —80 becomes available once the RFX is GRADED or CLOSED. The RFX becomes GRADED81 after all accepted vendors have submitted, automated grading completes, and82 no still-open pending RSVP blocks completion.8384 `mark-graded` is the normal UI's destructive **End submissions early**85 action, not general finalization. Use it only when at least one response was86 submitted and the user explicitly wants to stop remaining vendors from87 RSVPing or submitting. Show every unfinished active vendor and confirm that88 submissions cannot resume before calling it:8990 ```bash91 ramp sourcing mark-graded "<rfx_id>" --rationale "User confirmed ending remaining vendor submissions early" --agent92 ramp sourcing grading "<rfx_id>" --rationale "Review grading outcomes and the AI recommendation" --agent93 ```9495 Check `grading_insight.status`; do not claim there is an AI recommendation96 when the insight or recommended vendor is absent. Present any recommendation97 as input, not a decision — the user chooses the winner. Each recorded grade's98 `grade_state` distinguishes an `AUTO_ACCEPTED` AI grade from a99 `HUMAN_EDITED` grade.1001015. Award the winner. Grading must be complete on the current RFX, and the102 winner must have an ACTIVE invitation, have accepted, and have submitted a103 response. Re-fetch the RFX before confirmation. Show the grading outcome,104 explain that vendor settings may deactivate draft vendor records used only105 for non-winning invitations, and show the exact contacts who will be106 notified: the winner, plus every non-winning107 ACTIVE vendor that has not rejected participation. State that a direct award108 decides the event, closes its current RFX, and sends those notifications;109 act only on explicit confirmation after showing that list:110111 ```bash112 ramp sourcing rfx "<rfx_id>" --rationale "Preflight award eligibility and notification recipients" --agent113 ```114115 ```bash116 ramp sourcing award "<payee_uuid>" "<sourcing_event_id>" --rationale "User confirmed awarding the event to the selected vendor" --agent117 ```118119 `submitted_for_approval: true` means an award approval policy routed the120 decision to approvers in the Ramp app first; the event is still ACTIVE and121 no award notifications have been sent yet. Tell the user and stop — there is122 no CLI approval step. Approval later decides the event and sends the vendor123 notifications.1241256. Close out. Closing archives the event and cascades every RFX to CLOSED126 (voiding outstanding e-sign envelopes). On an ACTIVE event this ends it127 without an award; on a DECIDED event it archives the already-awarded event.128 Confirm the event and those effects first:129130 ```bash131 ramp sourcing close-event "<sourcing_event_id>" --rationale "User confirmed archiving the sourcing event and closing all child RFXs" --agent132 ```1331347. Hand off to purchase. After awarding, list procurement spend programs. Show135 the best matching program by name/description and alternatives; if multiple136 programs fit, require the user to choose. Then confirm before creating the137 persistent draft. Pass the selected spend intent, awarded vendor, and138 awarded RFX so the request is pre-filled with the correct response context.139 This call is not deduplicated, so do not repeat it after an ambiguous140 timeout:141142 ```bash143 ramp procurement_requests spend-intents --page_size 50 --rationale "List procurement spend programs for the awarded sourcing event" --agent144 ramp sourcing draft-spend-request "<sourcing_event_id>" --rfx_id "<rfx_id>" --payee_uuid "<awarded_payee_uuid>" --spend_intent_uuid "<selected_spend_intent_uuid>" --rationale "User confirmed drafting the purchase request under the selected spend program" --agent145 ```146147 Then switch to `ramp-submit-procurement-request` to fill and submit the148 returned draft.149150## Output151152For event or RFX tracking, keep rows compact using returned fields:153154```text155vendor | invitation status | accepted? | responded? | contact156```157158For a decision summary before award:159160```text161Event:162RFX and type:163Responses submitted:164Grading status:165Top-scored vendor:166AI recommendation and reasoning:167Proposed winner:168Winner notification contact:169Non-winning notification contacts:170```171172After any write, report the returned status and message verbatim in user173language. Never show CLI commands, flags, or JSON to the end user.174175## Handoff176177Hand off instead of guessing when the user asks to change the questionnaire,178sheets, vendors, or publish state (`ramp-run-sourcing-event`); to fill or179submit the purchase request (`ramp-submit-procurement-request`); or when a180publish or award is pending approval in the Ramp app. Include:181182```text183Sourcing event ID:184RFX ID:185RFX status:186Pending approval: publish / award / none187Awarded vendor payee UUID (if any):188Draft spend request UUID (if any):189```