/score-rfi
SkillDatabases & dataScore vendor RFI responses using a 0-3 rubric with SQLite storage
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /score-rfi skill
What this skill tells your AI
The instructions your AI receives, as published by davidroliverba/architectkb in .claude/skills/score-rfi/SKILL.md and read by ahel’s review.
Score vendor RFI responses stored in SQLite databases using a standardised 0-3 rubric.
Usage
/score-rfi <vendor-name>
/score-rfi pwc
/score-rfi accenture
/score-rfi ibm
Prerequisites
Before scoring, ensure the vendor's CSV has been converted to SQLite:
# Convert CSV to SQLite (see /csv-to-sql skill)
node scripts/csv-to-sqlite.js "Inbox/<vendor>-rfi-responses.csv" --start-row <n> --fts --verbose
Scoring Rubric (0-3 Scale)
| Score | Rating | Qualitative Assessment |
|---|---|---|
| 3 | High | Strong proven experience; clear, detailed answer demonstrating deep understanding; high confidence in capability |
| 2 | Medium | Some capability demonstrated; potential but unproven or limited evidence; moderate risk |
| 1 | Low | Insufficient evidence; generic or superficial response; does not address specifics; high risk |
| 0 | Zero | Not demonstrated at all; no evidence or response; very high risk |
Scoring Criteria
When evaluating responses, consider:
- Domain Specificity - Does the response demonstrate understanding of your industry operations and relevant regulations?
- Organisation Context - Does it show awareness of your organisation's scale, operations, existing systems?
- Technical Depth - Are specific technologies, frameworks, methodologies named with concrete examples?
- Proven Experience - Are past implementations cited? Client references? Metrics?
- Risk Indicators - Are there red flags like "we will learn", "to be determined", "partner with"?
Score Format
All scores MUST be written in this format:
[score] - [brief reason for score]
Examples:
3 - Strong domain-specific response with mature frameworks; explicit regulatory references; relevant experience cited2 - Solid methodology but no domain-specific examples; generic enterprise approach1 - Insufficient evidence of capability; significant capability gap0 - No response provided
Instructions
Phase 1: Database Setup
-
Verify database exists:
sqlite3 .data/<vendor>-rfi-scoring.db ".tables" -
Check schema and scorer columns:
sqlite3 .data/<vendor>-rfi-scoring.db ".schema" -
Identify the scorer column (e.g.,
john_smith,jane_doe)
Phase 2: Parallel Scoring
Launch sub-agents to score questions in parallel. Each agent scores ~10-12 questions.
Agent Prompt Template:
You are scoring vendor RFI responses for the Systems Integrator procurement.
**Vendor:** <vendor-name>
**Database:** .data/<vendor>-rfi-scoring.db
**Table:** <table-name>
**Scorer Column:** <scorer-column>
**Questions:** <start-id> to <end-id>
**Scoring Rubric (0-3):**
- 3 = High: Strong proven experience, detailed response, high confidence
- 2 = Medium: Some capability, potential but unproven, moderate risk
- 1 = Low: Insufficient evidence, generic response, high risk
- 0 = Zero: Not demonstrated, no evidence, very high risk
**Focus Areas:**
- Domain specificity (industry regulations and compliance)
- Organisation context awareness
- Technical depth with concrete examples
- Proven implementations and references
**Instructions:**
1. Query questions <start-id> to <end-id>
2. For each, read the question and response columns
3. Apply the rubric to score each response
4. Return results in this format:
ID|SCORE|REASON
Example:
1|3|Strong domain-specific frameworks; compliance explicit
2|2|Solid approach but lacks specific examples
After scoring, update the database:
sqlite3 .data/<db>.db "UPDATE <table> SET <scorer_col> = '<score> - <reason>' WHERE id = '<id>';"
Phase 3: Execute Scoring
-
Launch 4 parallel agents covering all questions (e.g., 1-11, 12-22, 23-33, 34-44)
-
Verify updates:
sqlite3 .data/<vendor>-rfi-scoring.db -markdown -header \ "SELECT id, <scorer_col> FROM <table> ORDER BY CAST(id AS INTEGER);"
Phase 4: Generate Summary
-
Query score distribution:
sqlite3 .data/<vendor>-rfi-scoring.db \ "SELECT CAST(SUBSTR(<scorer_col>, 1, 1) AS INTEGER) as score, COUNT(*) FROM <table> GROUP BY score ORDER BY score DESC;" -
Query low scores (risks):
sqlite3 .data/<vendor>-rfi-scoring.db -markdown -header \ "SELECT id, SUBSTR(question, 1, 60) as question, <scorer_col> FROM <table> WHERE <scorer_col> LIKE '1 -%' OR <scorer_col> LIKE '0 -%' ORDER BY CAST(id AS INTEGER);" -
Create summary Page using template below
Phase 5: Create Summary Page
Create a Page note at: Page - SI RFI Scoring - <Vendor> - <Scorer> Scores.md
Template:
---
type: Page
title: SI RFI Scoring - <Vendor> - <Scorer> Scores
created: <today>
modified: <today>
tags:
- project/<project-name>
- activity/evaluation
- vendor/<vendor-lowercase>
- workstream/rfi-scoring
confidence: high
freshness: current
source: primary
verified: true
reviewed: <today>
relatedTo:
- "[[Project - <Project Name>]]"
- "[[Page - SI RFI Scoring - <Vendor> Response]]"
---
# SI RFI Scoring - <Vendor> - <Scorer> Scores
Scoring assessment of <Vendor>'s response to the Systems Integrator RFI.
## Summary
| Metric | Value |
| ---------------- | ---------------- |
| Total Questions | <count> |
| Average Score | <avg> / 3.00 |
| Score 3 (High) | <count> (<pct>%) |
| Score 2 (Medium) | <count> (<pct>%) |
| Score 1 (Low) | <count> (<pct>%) |
| Score 0 (Zero) | <count> (<pct>%) |
## Key Findings
### Strengths (Score 3)
<bullet list of strength themes>
### Gaps (Score 1-2)
| ID | Area | Score | Risk |
| --- | ---- | ----- | ---- |
<table of low-scoring questions>
### Risk Summary
<brief summary of primary risks and mitigation>
## Detailed Scores
| ID | Question | Score | Reason |
| --- | -------- | ----- | ------ |
<full table of all scores>
## Data Source
Scores stored in SQLite database: `.data/<vendor>-rfi-scoring.db`
Useful Queries
# All scores with full questions
sqlite3 .data/<db>.db -markdown -header \
"SELECT id, question, <scorer_col> FROM <table> ORDER BY CAST(id AS INTEGER);"
# Compare multiple scorers
sqlite3 .data/<db>.db -markdown -header \
"SELECT id, scorer_1, scorer_2, scorer_3 FROM <table> ORDER BY CAST(id AS INTEGER);"
# Average score
sqlite3 .data/<db>.db \
"SELECT ROUND(AVG(CAST(SUBSTR(<scorer_col>, 1, 1) AS REAL)), 2) FROM <table>;"
# Search responses for keyword
sqlite3 .data/<db>.db -markdown -header \
"SELECT id, question FROM <table>_fts WHERE <table>_fts MATCH 'integration';"
Multi-Vendor Comparison
After scoring all vendors, create a comparison summary:
# Export each vendor's scores
sqlite3 .data/pwc-rfi.db "SELECT id, SUBSTR(scorer_col,1,1) as score FROM data;" > pwc-scores.txt
sqlite3 .data/accenture-rfi.db "SELECT id, SUBSTR(scorer_col,1,1) as score FROM data;" > accenture-scores.txt
Create a comparison Page: Page - SI RFI Scoring - Vendor Comparison.md
Related Skills
- [[.claude/skills/csv-to-sql/SKILL.md]] - Convert CSV to SQLite database
- [[.claude/skills/csv-to-markdown/SKILL.md]] - Convert CSV to markdown table
Signals
- GitHub stars
- 52
- Forks
- 12
- Last commit
- Mar 2026
Advanced
- Catalog kind
- skill
- Gateway key
score-rfi- Source
- github.com/davidroliverba/architectkb