Skip to content

[ClickUp] Add 'Promoted to Project List' relationship field on queue tasks #271

@semicolint

Description

@semicolint

Why

The ingestion design in #268 needs to join each Pipeline #2 queue task to its Pipeline #1 active-project list so the queue task's status can drive the active project's lifecycle status. Today we have no explicit link between them — only name similarity.

Name-matching works for most current cases (e.g., "Idaho Water Law Repository" ↔ "Water Law Database") but is fragile:

An explicit link field eliminates ambiguity and survives renames.

Proposal

Add a custom field on queue tasks (i.e., tasks in the "AI4UI New Project Requests" list) named Promoted to Project List, type:

Option A — URL field

  • Type: URL
  • Value: the ClickUp URL of the corresponding active-project list (https://app.clickup.com/9017337878/v/l/li/<list_id>)
  • Pros: easy to set; copy-paste from list URL
  • Cons: ingest script has to regex-parse out the list ID

Option B — Dropdown field with a curated list of project-list names

  • Type: dropdown (type: drop_down)
  • Options: maintained in sync with the project lists
  • Pros: typo-proof, structured
  • Cons: needs maintenance as new lists are added

Recommendation: A, because option B requires keeping the dropdown options in sync with reality, which is exactly the kind of drift this issue is trying to fix.

Direction of the link

Why on the queue task and not on the project list? ClickUp lists don't support custom fields directly — only tasks within lists do. Putting the field on queue tasks is the path of least resistance.

Backfill scope

Once the field exists, IIDS triage staff populate it for the ~7 queue tasks that map to existing active lists (Invoice Processing, RPR, Bid Waivers, Water Law, Out-of-State Tax, Daily Register/MyUI, Contract Extraction). The 5 lists without queue tasks (MindRouter 2.0, Nexus, etc.) get new queue tasks created per #270, each pre-populated with this field.

Ingest behavior

  • When the field is set: explicit link wins; ignore name-match
  • When the field is empty: fall back to fuzzy name-match (and log a warning so we can chase down the gap)
  • Eventually, after backfill: make the field required for queue tasks with status active or beyond

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions