From tender-assessment
Scrape Victorian government tenders, score alignment to marcov capabilities, and generate pursuit packages for qualified opportunities
How this skill is triggered — by the user, by Claude, or both
Slash command
/tender-assessment:tender-assessmentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Automated tender discovery, alignment scoring, and pursuit package generation for marcov's government tender opportunities.
Automated tender discovery, alignment scoring, and pursuit package generation for marcov's government tender opportunities.
This skill provides an end-to-end tender assessment workflow:
Load these before processing:
references/company-profile.md - marcov's capabilities, industries, constraintsreferences/scoring-matrix.md - Weighted alignment criteriareferences/pursuit-package-template.md - Deep assessment output formatreferences/shortlist-report-template.md - Summary report formatBefore running the assessment, confirm the following with the user:
Scraper location: Where is vic_tenders_scraper.py located?
Keyword filtering: Use default marcov keywords or custom?
New tenders only?:
--new-only flag for last 24 hours--track-new to compare against previously seenOutput preferences:
User provides explicit instructions like:
Execute the Victorian tenders scraper to get current open opportunities.
# Default: All open tenders with marcov keywords
python vic_tenders_scraper.py --all-keywords --pretty
# New tenders only (last 24h)
python vic_tenders_scraper.py --all-keywords --new-only --pretty
# Track genuinely new (vs previously seen)
python vic_tenders_scraper.py --all-keywords --track-new --pretty
Output: JSON array of tender objects with:
id, rfx_number, title, issuercategories (UNSPSC)date_opened, date_closingurl (link to tender detail page)matched_keywords (if keyword filtering applied)For each tender, calculate alignment score using the weighted matrix:
| Dimension | Weight | Assessment Basis |
|---|---|---|
| Domain Fit | 30 pts | Keywords, title, categories vs marcov services |
| Industry Match | 25 pts | Issuer, sector vs marcov target industries |
| Service Type | 20 pts | Tender type, scope vs marcov offerings |
| Strategic Value | 15 pts | Client tier, sector priority, reference potential |
| Competitive Position | 10 pts | Relationship, incumbent status, differentiators |
Domain Fit (30 points):
Industry Match (25 points):
Service Type (20 points):
Strategic Value (15 points):
Competitive Position (10 points):
Based on total score:
| Score | Category | Action |
|---|---|---|
| ≥80 | Shortlisted | Generate full pursuit package |
| 60-79 | Flagged | Include in report for manual review |
| <60 | Declined | Log with reason, no further action |
Upgrade to review even if <80:
Flag for review even if ≥80:
Create summary report using references/shortlist-report-template.md:
For each shortlisted tender (≥80%):
Use WebFetch to retrieve the tender detail page:
URL: {tender.url}
Prompt: Extract all tender details including:
- Full description and scope of work
- Mandatory requirements
- Evaluation criteria
- Contract value (if stated)
- Contract duration
- Key dates (briefing, Q&A, submission)
- Required certifications or qualifications
- Incumbent information (if mentioned)
- Any attachments or documents referenced
Using references/pursuit-package-template.md, create comprehensive assessment:
Generate tender-shortlist-[DATE].md with:
Generate:
tender-shortlist-[DATE].md - Summary reportpursuit-[RFX_NUMBER].md - One file per shortlisted tenderGenerate interactive HTML with:
User: "Run tender assessment"
Action:
1. Run scraper with default keywords
2. Score all tenders
3. Generate shortlist report
4. Generate pursuit packages for ≥80% aligned
User: "Check for new tenders today"
Action:
1. Run scraper with --new-only flag
2. Score new tenders only
3. Generate shortlist report
User: "Generate a pursuit package for tender RFT-12345"
Action:
1. Fetch tender details from URL
2. Score against matrix
3. Generate full pursuit package regardless of score
marcov (SAS Asset Management) specialises in:
See references/company-profile.md for full details.
| Dimension | Weight | Top Score Criteria |
|---|---|---|
| Domain Fit | 30 | Direct match to core service |
| Industry Match | 25 | Rail/transport sector |
| Service Type | 20 | Advisory/strategy work |
| Strategic Value | 15 | Opens Tier 1 client or growth sector |
| Competitive Position | 10 | Known to client, our niche |
Pass threshold: ≥80 points
See references/scoring-matrix.md for full rubric.
The skill expects vic_tenders_scraper.py to be accessible. If not in the current directory, ask the user for the path.
The scraper supports --track-new with a state file (seen_tender_ids.json) to identify genuinely new tenders. This persists across runs.
Deep assessment uses Claude API (via the skill execution context) to:
No external API keys required beyond the Claude Code session.
This skill is designed for marcov's Victorian government tender pipeline. Adjust the company profile and scoring matrix for different organisations or jurisdictions.
npx claudepluginhub sas-asset-management/sasamclaudecodeskills --plugin tender-assessmentIdentifies potential B2B clients matching service definitions and ideal client profiles using industry, size, location filters and 10-point fit scoring. Outputs prospects to Markdown files.
Structured vendor selection, RFP, and contract negotiation process with a build-vs-buy framework. Evaluates SaaS tools, infrastructure providers, and agencies using a rubric-based scoring system.
Develops consulting proposals and manages business development lifecycle from RFP analysis, opportunity assessment, SOW drafting, pitch decks to submission.