Post-award contract review combining USASpending and SAM.gov data into a structured checklist of 12 factual observations about a federal contract award. Trigger on: award review, post-award review, contract review, PIID review, award checklist, review this award, check this contract, post-award check, contract observations, award check, contract check, review award. Requires usaspending-api and sam-gov-api skills installed.
This skill produces a structured post-award review report for a federal contract award. It documents 12 factual observations about the award's structure, entity registration, competition, and related data patterns. Each observation is either present or not present based on data from USASpending.gov and SAM.gov.
What this skill produces: A review report with award summary, entity profile, and 12 observation checks. The report is for contract file documentation and CO decision support.
What this skill does NOT do: It does not score, rank, or classify observations. It does not draw conclusions. It does not use the words "risk," "fraud," "anomaly," or "suspicious." Observations are factual data points. The reviewing officer determines their significance.
Regulatory context: Supports periodic contract oversight and file documentation. COs may use this review during pre-award responsibility determinations, post-award administration, or periodic contract reviews under FAR 42.302.
| Skill |
|---|
| Provides |
|---|
usaspending-api | Award detail, transaction history, subaward data, recipient search |
sam-gov-api | Entity registration, entity search by address/CAGE/UEI, contract awards by PIID |
This skill contains no API code. It orchestrates the two API skills above.
API keys required: SAM.gov API key (configured in sam-gov-api skill).
Collect all inputs in a single pass.
| Input | Required | Description |
|---|---|---|
| PIID | Yes | Procurement Instrument Identifier (e.g., W912BV22P0112, 75A50126C00004) |
| Awarding Agency | No | Narrows search if PIID matches multiple awards |
| Solicitation NAICS | No | Provides additional context for entity evaluation |
POST /api/v2/search/spending_by_award/ with filters:
award_type_codes: ["A", "B", "C", "D"] (contracts)keywords: [PIID]limit: 5search_contract_awards(piid=PIID)generated_internal_id (USASpending) or generated_unique_award_id for subsequent callsFetch full award metadata from USASpending.
GET /api/v2/awards/{generated_internal_id}/
Extract and store:
piiddescriptionrecipient.recipient_namerecipient.ueitotal_obligationbase_and_all_options_valuedate_signedperiod_of_performance.start_dateperiod_of_performance.end_dateawarding_agency.toptier_agency.name (agency)awarding_agency.office_agency_name (office)funding_agency.toptier_agency.namelatest_transaction_contract_data.extent_competedlatest_transaction_contract_data.type_of_contract_pricinglatest_transaction_contract_data.number_of_offers_receivedlatest_transaction_contract_data.naicslatest_transaction_contract_data.product_or_service_codeexecutive_details.officers[] (names and amounts)generated_unique_award_idtype (award type code)Also fetch modification history from SAM.gov Contract Awards:
lookup_award_by_piid(piid=PIID)
From modification records, identify:
actionObligationtotalActionObligationdateSigned of base awardBuild the USASpending URL: https://www.usaspending.gov/award/{generated_unique_award_id}
Fetch entity data from SAM.gov using the recipient UEI from Step 1.
lookup_entity_by_uei(uei=RECIPIENT_UEI, include_sections="entityRegistration,coreData,assertions")
Extract and store:
entityRegistration.legalBusinessNameentityRegistration.ueiSAMentityRegistration.cageCodeentityRegistration.registrationStatusentityRegistration.registrationDateentityRegistration.activationDateentityRegistration.registrationExpirationDatecoreData.entityInformation.entityStartDatecoreData.physicalAddress (addressLine1, city, stateOrProvinceCode, zipCode)coreData.generalInformation.entityStructureDesccoreData.generalInformation.profitStructureDescassertions.goodsAndServices.primaryNaicsIf entity not found, note "Entity not found in SAM.gov" and skip entity-dependent observations (OBS-01, 02, 10, 12).
Pause 0.5s between SAM.gov calls to respect rate limits.
These use data already collected. No additional API calls.
OBS-01: RECENT_INCORPORATION
entityStartDate vs award date_signeddate_signed - entityStartDate <= 180 days: PresententityStartDate missing: Not evaluatedOBS-02: POST_AWARD_REGISTRATION
registrationDate vs award date_signeddate_signed < 2003-01-01: Not evaluated (pre-SAM era)registrationDate > date_signed: PresentOBS-04: NO_PRIOR_AWARDS
POST /api/v2/search/spending_by_award/
filters: {
"recipient_search_text": [UEI],
"time_period": [{"end_date": date_signed}],
"award_type_codes": ["A","B","C","D"]
}
extent_competed in [B, C, E, G, NDO]total_obligation > $10,000,000: PresentOBS-07: SINGLE_OFFER
number_of_offers_received and extent_competednumber_of_offers_received == 1 AND extent_competed in [A, D] (full and open): PresentOBS-05: OBLIGATION_GROWTH
current / base >= 3.0 AND modification count >= 2: PresentOBS-08: HIGH_VALUE_COST_TYPE
type_of_contract_pricingtotal_obligation > $50,000,000: Presentaward-review-reference Section 2 for code-to-description mappingOBS-03: NO_SUBAWARD_REPORTING
POST /api/v2/subawards/
{ "award_id": generated_unique_award_id, "limit": 10 }
total_obligation > $5,000,000:
award-review-reference Section 4):
OBS-09: SUBAWARD_CONCENTRATION
amount fieldstotal_subaward / total_obligation > 0.50: PresentThese require additional SAM.gov API calls. Pause 0.5s between calls.
OBS-10: SHARED_ADDRESS
search_entities(free_text="[street] [city] [state]", registration_status="A", size=10)
OBS-06: SHARED_OFFICERS
executive_details.officers[], extract officer namesOBS-12: SHARED_IDENTIFIERS
search_entities(free_text="[CAGE]", registration_status="A", size=10)
OBS-11: NONSTANDARD_OFFICE
award-review-reference Section 5)Present the report in this order:
AWARD REVIEW
============
PIID: [piid]
Date of Review: [today]
Table with: Recipient, UEI, Awarding Agency, Awarding Office, Total Obligation, Date Signed, Period of Performance, Contract Type (with code), Competition (with code), Offers Received, NAICS, PSC, Description (truncated to 200 chars).
Table with: Legal Name, UEI, CAGE, SAM Status, Registration Date, Activation Date, Expiration Date, Entity Start Date, Physical Address, Entity Structure, Business Types.
Each observation in this format:
[N]. OBSERVATION_NAME: [Present / Not present / Not evaluated / Excluded]
Detail: [one factual sentence]
Source: [API and field]
"[X] of 12 present, [Y] not evaluated, [Z] not present."
"This review documents factual attributes of a federal contract award using publicly available data from USASpending.gov and SAM.gov. Observations are structural data points, not assessments or conclusions."
Do NOT use these terms anywhere in the output:
| Prohibited | Use instead |
|---|---|
| risk | observation |
| fraud | (omit entirely) |
| anomaly | observation |
| red flag | observation present |
| suspicious | notable |
| shell company | recently formed entity |
| bid manipulation | (omit entirely) |
| scheme | (omit entirely) |
| severity | (omit entirely) |
| CRITICAL / HIGH / MEDIUM | (omit entirely) |
| score | (omit entirely) |
| threat | (omit entirely) |
| warning | (omit entirely) |
A single award review uses approximately:
Pause 0.5s between SAM.gov calls. USASpending has no API key requirement.
MIT © James Jenrette / 1102tools. Source: github.com/1102tools/federal-contracting-skills