Skip to content

Time-to-offer on the employer dashboard: stamp the duration on ats_application, seed offers for hired applications, and correct §04's wording #55

Description

@os-sam

The fourth tile of ats_employer_hiring that #8 could not build. Deliberately left out rather than approximated (PR #54); this card is what would make it real. Blocked-by: #53. Unblocked#53 merged as PR #64 (62e496d).

DESIGN.md §04 asks for median days from applied_at to the offer's created_at for hired applications. #8 established, by measurement, four independent reasons it could not be expressed. Three still hold; the fourth is gone:

  1. No median aggregate. The available set is count / sum / avg / min / max / count_distinct.
  2. A dataset cannot compute a duration across two objects. The only derived form combines other measures of the same dataset by name.
  3. A measure-scoped filter answers 501 NOT_IMPLEMENTED on the memory driver (objectstack#16642) — so even a single-object formulation would error on the boot AGENTS.md documents.
  4. The demo seed has no offer on any hired application — all 14 ats_offer rows sit on offer-stage applications (Demo seed: no ats_offer row belongs to a hired application — all 14 offers sit on offer-stage applications, so "days to offer for hired applications" is unmeasurable on the seed #53). DONE in feat(data): an accepted offer on every hired application; seed-count docs read 818 #64. The seed now carries one accepted ats_offer per hired application in both locale packs (23 offers: 14 on offer-stage applications + 9 accepted, one per hired). Verified in the artifact and through RLS at runtime: 9 of 9 hired applications have exactly one accepted offer, and no accepted offer sits anywhere else. The tile will have data; do not re-seed it.

Scope

⛔ Do not touch src/security/, src/data/, the other two dashboards, or anything #39 / #45 covers.

What the seed gives you to check against

After a boot on the memory driver, the nine hired applications and their accepted offers are readable per employer. As a starting cross-check: admin@quillstone.example reads 3 offers (1 accepted), admin@harborline.example reads 4 (2 accepted). So the tile's denominator per employer is small and hand-checkable — which is the point: the acceptance below asks for the number, not the render.

Acceptance

Out of scope

The conversion-% tiles: those need a ratio over two differently-filtered counts and are blocked on objectstack#16642. Separate card when that lands.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions