让系统主动找商机之前,先把“绝对不投”的项目挡在门外。筛选条件通常分三层:业务红线做硬性排除,区域与资质要求做可投性判断,软条件只影响商机排序和提醒级别。三层里只有第一层能直接挡住商机,第二、三层建议先放宽再逐步收紧,避免一开始就把可投项目挡掉。
实用做法是:品类、明确不做的区域、拒绝的采购方类型写成硬排除,命中即不进商机池;金额区间、区域偏好、竞争强度写成软过滤,只改排序和提醒;资质要求映射到公司现有证照,用有效期逐条核对。每条红线改动都留变更记录和复核人,并用已投项目回测,重点排查误杀。
把‘绝对不投’写成硬性排除条件
第一层只放命中后一定不投的条件,命中后商机连候选池都不进。这一层不写偏好,只写事实型排除项,写多了会直接造成漏项。
- 品类:公司没有对应资质或类似业绩的工程类别,例如土建总包、劳务分包。
- 区域:明确不参与的地区,例如港澳台、海外项目,或需要本地社保、本地备案的区域。
- 采购方类型:个人名义发布、无实缴注册资本的贸易公司、付款记录不明的采购方。
- 付款与工期硬线:要求全额垫资、付款周期明显超出承受范围、工期短于常规施工周期的项目。
这类条件通常以清单或关键词规则的形式配置在筛选入口,命中后由系统直接拦掉,不出现在商机列表里。替换项是与公司实际业务对照后的清单内容;验证方式是发布一批测试商机,确认被硬排除的项目确实没有出现在结果中。
hard_exclude:
categories: ['土建总包', '劳务分包']
regions: ['港澳台', '海外']
buyer_types: ['个人', '无实缴贸易公司']
payment_terms: ['全额垫资', '付款周期超出承受范围']
把‘能投但优先级低’写成软过滤条件
第二层不排除任何商机,只影响排序和提醒级别。担心漏掉可投项目,多数情况是软条件被当成了硬条件。
| 条件类型 | 作用 | 命中后的行为 | 能否放宽 |
|---|---|---|---|
| 硬排除 | 定义绝对不投 | 不进商机池 | 需走变更记录 |
| 软过滤 | 影响排序和提醒 | 保留但降权 | 可随时调权重 |
| 资质判断 | 判断能不能投 | 标记待人工确认 | 按证照有效期调整 |
软条件建议写成打分项,比如落在某个金额区间、属于本省或邻省、采购方有既往中标记录、报名截止时间不少于几天。分数低的商机仍会出现在列表里,只是排在后面或提醒级别更低。验证方式是只改一次权重,观察同一批商机的排序变化,而不是数量变化。
soft_score:
amount_range: [2000000, 8000000]
region_preference: ['本省', '邻省']
buyer_history: '有既往中标记录'
deadline_days: '不少于 3 天'
把资质要求映射到公司现有证照
第三层回答“能不能投”。招标文件里的资质要求通常分散在资格条件和评分办法中,需要人工整理成字段。不要默认平台能自动判断公司是否满足某项资质,多数平台只做关键词匹配,是否满足要结合证照实际情况确认。
- 字段:资质名称、等级、发证机关、证书编号、有效期起止、当前状态、扫描件存放位置。
- 核对方式:把商机里的资质要求逐条与证照表比对,临近到期的单独标出。
- 风险边界:证照正在办理续期或变更的,先按不确定处理,不要按满足放行。
qualification:
name: '电子与智能化工程专业承包'
level: '二级'
valid_until: 'YYYY-MM-DD'
status: '可用 / 临近到期 / 已过期'
evidence_path: '证照扫描件存放位置'
验证方式是随机挑几条商机,按资质字段手工核对一遍,看比对结果是否与证照表一致;不一致的地方要么补字段,要么把该商机标回待确认。
用历史投标项目回测三层条件
上线前做一次回测:把过去实际投过、并且投得下去的项目拉出来,逐条对照现在写好的硬排除条件,重点看有没有被硬排除、但实际上可以投的项目。
- 导出历史已投项目清单,保留品类、区域、采购方、金额、资质要求这几列。
- 用与线上一致的硬排除条件跑一遍,可以手工对照,也可以用脚本批量判断。
- 记录命中的条件、实际是否参与投标、最终结论,逐条判断是补白名单还是收紧规则。
matched = [p for p in history if hit_hard_rule(p)]
for p in matched:
print(p.name, hit_rule(p), p.actual_bid, p.note)
| 项目 | 命中的硬条件 | 实际是否可投 | 处理结论 |
|---|---|---|---|
| 示例项目 A | 区域不在白名单 | 可投 | 把该区域加入白名单 |
| 示例项目 B | 采购方类型命中排除 | 不可投 | 保留排除 |
回测记录要保留下来,它既是红线的依据,也是下次调整时的对照材料。没有命中任何硬条件、但当时放弃的项目,可以顺带看看是不是软条件权重定得过低。
给红线条件设变更记录和复核人
红线被随手改动,比红线写得不准更麻烦。建议每条硬排除条件都留变更记录,字段至少包含条件、原因、生效时间、复核人,改动前先确认影响范围。
- rule_id: R-001
rule_content: '品类 = 土建总包'
reason: '无对应资质与类似业绩'
effective_at: 'YYYY-MM-DD'
reviewer: '复核人姓名'
created_at: 'YYYY-MM-DD'
验证方式是随机挑一条被挡掉的商机,倒查它命中的是哪个版本的规则、由谁确认生效。查不到来源,说明记录环节还不完整,先把这条补上再继续调条件。