Procurement Intelligence Copilot
Pricing
from $4.00 / 1,000 opportunity returneds
Procurement Intelligence Copilot
Find and qualify public tenders from SAM.gov, UK Contracts Finder, and TED. This Actor filters noise, scores fit, and uses AI review to surface the procurement opportunities actually worth pursuing.
Pricing
from $4.00 / 1,000 opportunity returneds
Rating
0.0
(0)
Developer

Marielise
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Public Procurement Intelligence
Find government contract opportunities and qualify them before your team burns time on bad bids. This Actor aggregates procurement notices from SAM.gov, UK Contracts Finder, and TED, then scores each opportunity against your company profile.
Best for: founders, business development teams, bid managers, consultants, and agencies that need a ranked pipeline instead of another raw tender dump.
What This Actor Does
- Searches multiple procurement portals in one run
- Normalizes opportunities into one schema
- Scores each opportunity by:
- keyword relevance
- hard relevance gates that suppress obvious non-software work
- NAICS / CPV code match
- budget fit
- preferred geography
- set-aside compatibility
- deadline urgency
- Optionally uses OpenAI to re-rank the strongest candidates and demote false positives
- Produces a ranked pipeline with clear next actions
- Exports JSON, CSV, and a Markdown management report
Why This Is Useful
Most tender tools stop at collection. The problem is not finding notices. The problem is deciding:
- Which ones are actually relevant?
- Which ones fit your contract size?
- Which ones should be reviewed now?
- Which ones should be ignored?
This Actor turns procurement search into go / no-go triage.
AI Review
The Actor can optionally use OpenAI to review the best rule-scored opportunities and apply semantic judgment to questions like:
- Is this actually software work, or just a generic procurement that happened to match one weak term?
- Is this a physical-goods or construction notice that should be demoted?
- Does the notice genuinely fit the company profile?
This is controlled by input flags. The Actor reads OPENAI_API_KEY from the environment, so users do not need to pass API credentials in Actor input.
Supported Sources
| Source | Region | Notes |
|---|---|---|
SAM.gov | United States | Federal procurement opportunities |
Contracts Finder | United Kingdom | UK public sector contracts |
TED | European Union | EU-wide procurement notices |
Input Examples
Basic Search
{"query": "software development","countries": ["us", "uk", "eu"],"maxItems": 60,"useAiReview": true}
Company-Profile Qualification
{"query": "cybersecurity","countries": ["us", "uk"],"onlyQualified": true,"minFitScore": 65,"companyProfile": {"companyName": "SecureOps","keywords": ["cybersecurity", "SOC", "incident response", "threat detection"],"excludedKeywords": ["construction", "catering"],"naicsCodes": ["541512", "541519"],"preferredCountries": ["us", "uk"],"minContractValueUsd": 100000,"maxContractValueUsd": 5000000,"targetAgencies": ["Department of Defense", "NHS"]}}
Small Business Focus
{"query": "data analytics","countries": ["us"],"onlyQualified": true,"companyProfile": {"keywords": ["data analytics", "dashboard", "business intelligence"],"setAsideEligibility": ["small business", "8a"]}}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | "" | Search keywords. If empty, profile keywords are used. |
countries | array | ["us","uk","eu"] | Which procurement sources to search. |
postedWithinDays | integer | 30 | Only include recently posted notices. |
deadlineWithinDays | integer | 60 | Only include deadlines within N days when available. |
status | array | ["open"] | Opportunity statuses to include. |
valueMin | number | none | Minimum contract value in USD. |
valueMax | number | none | Maximum contract value in USD. |
maxItemsPerSource | integer | 30 | Raw fetch limit per source. |
maxItems | integer | 90 | Final ranked result limit. |
onlyQualified | boolean | false | If true, only keep opportunities above minFitScore. |
minFitScore | integer | 60 | Qualification threshold used when onlyQualified is enabled. |
sortBy | string | fit_desc | fit_desc, deadline_asc, posted_desc, value_desc. |
includeAnalytics | boolean | true | Include summary analytics. |
outputFormat | string | full | full, summary_only, opportunities_only. |
useAiReview | boolean | false | Use OpenAI to re-rank the strongest rule-scored opportunities. |
aiReviewModel | string | gpt-5-mini | OpenAI model used for semantic review. |
aiReviewMaxItems | integer | 25 | Maximum number of opportunities to send to AI review. |
aiReviewMinRuleScore | integer | 40 | Minimum rule score required before AI review is attempted. |
companyProfile | object | {} | Business profile used for qualification scoring. |
proxy | object | Apify Proxy | Proxy configuration for browser-based sources. |
Company Profile Fields
| Field | Type | Description |
|---|---|---|
companyName | string | Your company name for context |
description | string | Short description of what you sell |
keywords | array | Positive fit terms |
excludedKeywords | array | Terms that count against fit |
naicsCodes | array | Target US industry codes |
cpvCodes | array | Target EU procurement codes |
preferredCountries | array | Preferred geographies |
minContractValueUsd | number | Smallest target contract size |
maxContractValueUsd | number | Largest target contract size |
setAsideEligibility | array | Eligible US set-aside programs |
targetAgencies | array | Buyers you actively want |
Output
The Actor writes two record types to the default dataset.
Summary Record
{"type": "summary","summary": {"totalOpportunities": 42,"qualifiedOpportunities": 11,"highPriorityOpportunities": 3,"averageFitScore": 58.7,"deadlinesNext7Days": 4,"quickTake": "11 of 42 opportunities look viable. Best fit: \"Enterprise SOC Services\" (86/100).","recommendedActions": ["Review 3 pursue-now opportunities immediately.","Prioritize 4 opportunities closing within 7 days."]}}
Opportunity Record
{"type": "opportunity","tenderId": "12345","title": "Cybersecurity Monitoring Services","country": "us","source": "SAM.gov","agency": {"name": "Department of Defense","country": "us"},"value": {"cents": 250000000,"display": "$2,500,000","currency": "USD"},"qualification": {"ruleFitScore": 71,"fitScore": 84,"qualification": "strong_fit","recommendedAction": "pursue_now","matchedKeywords": ["cybersecurity", "soc"],"matchedCodes": ["541512"],"riskFlags": ["Deadline is within 14 days."],"aiReview": {"model": "gpt-5-mini","relevanceScore": 92,"decision": "strong_fit","confidence": "high","summary": "This is a genuine software/security services procurement."}}}
Dataset Views
Overview: one-row management summaryRanked Opportunities: all scored opportunitiesPriority Pipeline: best opportunities with signals and risks
Key-Value Store Outputs
| File | Format | Description |
|---|---|---|
OUTPUT | JSON | Main structured output |
opportunities.csv | CSV | Spreadsheet export |
REPORT.md | Markdown | Human-readable report |
Qualification Logic
Each opportunity gets a fitScore from 0-100.
Positive signals:
- keyword matches
- software-delivery evidence in title/category/description
- NAICS / CPV code matches
- preferred geography
- budget within target range
- target buyer match
- compatible set-aside
Negative signals:
- excluded keywords
- construction / furniture / physical-goods language
- placeholder values such as
£0or£1 - weak generic matches like
developmentwithout software evidence - budget mismatch
- incompatible set-aside
- missing value data
- weak description
- very short deadline
- expired deadline
Typical Workflow
- Define what your company actually sells.
- Add contract size and geography preferences.
- Run daily or weekly.
- Review
Priority Pipeline. - Export qualified opportunities to CRM or bid tracker.
Limitations
- Source websites can change HTML structure at any time.
- Some notices do not publish contract value or clean classification codes.
- Set-aside compatibility is heuristic and should be manually verified.
- This Actor ranks opportunities, but it does not replace bid/no-bid review by a human.
Apify Integration Notes
This project includes:
.actor/input_schema.json.actor/output_schema.json.actor/dataset_schema.json.actor/actor.json- typed TypeScript source
- Dockerfile for Apify build/runtime
Development
npm installnpm run buildnpm run start
Local AI setup:
$cp .env.example .env
Then add:
$OPENAI_API_KEY=your_key_here
Example local input:
{"query": "software development","countries": ["us", "uk", "eu"],"onlyQualified": false}
Positioning
This is not just a tender scraper. It is a procurement qualification layer for companies that need a faster answer to:
Should we spend time on this bid?