open311-pipeline:芝加哥 311 市民服务请求的流式 LLM 紧迫度分类与数据仓库流水线
tjromack/open311-pipeline · Streaming civic-data pipeline: Chicago 311 → Kafka → Claude urgency classification (Langfuse-traced) → DuckDB or Snowflake via idempotent MERGE → dbt SLA marts. Runs with no accounts: make demo-local.
该项目是一个可复用的「流 → 分类 → 数据仓库 → 建模」市民数据流水线模板:轮询 Open311(芝加哥 311)请求,写入按 service_request_id 分键的 Kafka,用 Claude Haiku 4.5 对请求做结构化输出的紧迫度分级(每次调用在 Langfuse 中留有 trace),失败进入死信队列,再通过幂等 MERGE 写入 DuckDB(默认)或 Snowflake,最后由 dbt 构建部门 SLA 合规度数据模型。项目提供无需账号、无需 API key 的本地演示(make demo-local / make demo-local-nokafka),演示回放 300 条真实芝加哥 311 请求及其由 Claude Haiku 4.5 标注的标签;另有一条路径可从城市数据门户加载整个财年(约 212 万行)并测量整体队列的 SLA 合规度。仓库含 61 个 pytest 测试与 45 个 dbt 数据测试,覆盖 schema 漂移、DLQ、MERGE 幂等性等失效模式。README 明确指出其 SLA 阈值为项目自设而非芝加哥官方标准。