fast_award_screener_mcp
by lprdgds
README.md
# fast_award_screener_mcp
**DK Elite AI Solutions — DIBBS Fast Award Screener**
Screens DIBBS RFQs for micro-purchase viability against your Net30 + sub-$1K + 1–2 business day threshold. Zero LLM calls in the pipeline — pure deterministic logic.
---
## Architecture
```
screen_rfq / screen_rfq_batch
│
▼
┌─────────────────────────────────────┐
│ Node 1: parse_rfq │ ← PDF fetch + regex extraction
│ Node 2: check_flags │ ← QPL/Berry/CMMC/ITAR/CAI/HAZMAT
│ Node 3: score_opportunity │ ← 0–100 score across 5 dimensions
│ Node 4: lookup_grainger │ ← Price + margin (skipped if disq'd)
└─────────────────────────────────────┘
│
▼
HITL Summary → Zapier → Gmail/Slack → You approve → DIBBS Fast Trak
```
---
## Tools
| Tool | Description |
|------|-------------|
| `screen_rfq` | Full pipeline for one RFQ |
| `screen_rfq_batch` | Parallel screen up to 10 RFQs, ranked by score |
| `explain_flags` | Reference: what each disqualifying flag means |
---
## Installation
```bash
cd fast_award_screener_mcp
pip install -r requirements.txt
python -m py_compile server.py && echo "✅ Syntax OK"
```
---
## Claude Desktop Config
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"fast_award_screener": {
"command": "python",
"args": ["/path/to/fast_award_screener_mcp/server.py"],
"env": {}
}
}
}
```
---
## Zapier Integration (HTTP mode)
```bash
python server.py --transport streamable_http --port 8001
# Then expose via ngrok:
ngrok http 8001
```
Zapier webhook → POST to ngrok URL → tool `screen_rfq_batch` → parse summary → Gmail HITL alert
---
## Scoring Dimensions
| Dimension | Max | Notes |
|-----------|-----|-------|
| Delivery window | 30 | ≤1 day = 30pts, ≤2 day = 22pts |
| Total value | 25 | $50–$500 sweet spot |
| Set-aside match | 20 | WOSB = 20pts, SB = 14pts |
| Quantity | 15 | ≤10 units = 15pts |
| Price clarity | 10 | Known price = 10pts |
**Thresholds:** BID ≥ 65 | REVIEW 40–64 | SKIP < 40
---
## Files
```
fast_award_screener_mcp/
├── server.py ← FastMCP server + 3 tools
├── state.py ← Single RFQState TypedDict (consolidated)
├── requirements.txt
├── nodes/
│ ├── __init__.py
│ ├── parse_rfq.py ← Node 1: PDF parsing
│ ├── check_flags.py ← Node 2: Disqualifying clauses
│ ├── score_opportunity.py ← Node 3: Viability scoring
│ └── lookup_grainger.py ← Node 4: Grainger price lookup
└── README.md
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing