Skip to main content
Glama
lprdgds

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
```