Back to projects

Work Tool · AI

Partner Radar: Customer-Matched Update Feed

Internal Tool
Screenshot of Partner Radar: Customer-Matched Update Feed

Screenshot shows sanitized example data, not real customer or employee information.

Internal web app for Unity's Partner Relations team that surfaces engine, platform, and program updates, prioritized so nothing important gets lost in Slack noise. Each update is matched to the specific customers it actually affects based on their tracked tech stack, with ingestion running as a scheduled AI agent job.

Architecture

A FastAPI + Postgres app that stores a curated feed of engine/platform updates and matches each one to the Partner Relations Managers whose own customers it actually affects, based on each customer's tracked tech stack.

Step 1

Agent-driven ingestion

Rather than a deployed scraping job, a scheduled AI agent session reads team Slack channels directly and writes structured records through the app's own data-model rules, using judgment for parts (like safely deduplicating reposts) that are hard to automate reliably in code.

Step 2

Structured data model

Every update is validated against a controlled vocabulary of categories, sections, and products transcribed from a taxonomy spec, so the feed can't drift into inconsistent tagging over time.

Step 3

Priority computation

A priority (critical/high/normal/low) is computed from category, curation source, and customer-impact flags, and recalculated automatically if an update is later reposted with new context.

Step 4

Customer-relevance matching

Each Partner Relations Manager's own customer roster and tracked tech stack are cross-referenced against update tags, so the feed can flag exactly which of a PRM's accounts an update actually affects.

Key decisions

  • Chose agent-driven ingestion over a deployed scraper or bot, since judgment calls like safely deduplicating a repost without false-merging two different updates are exactly the kind of thing an AI agent handles better than fixed heuristics.
  • Built the taxonomy as a hard, code-enforced enum rather than free-text tagging, so categorization stays consistent as more people and update sources feed into it over time.
  • Iterated on customer-relevance matching after an early version trusted an unreliable name-matching column; moved to a single authoritative source of truth for the customer-to-manager mapping instead of inferring it.

Tech stack

PythonFastAPISQLAlchemyPostgreSQLJinja2Claude Code agents