Dashboard → Arrange: three widget descriptions promise figures their widgets do not show #502

Closed
opened 2026-10-01 10:47:08 +00:00 by tiagoagueda · 0 comments
Owner

Found on 2026-09-29 in a read-only review of postulo at 95348908d, comparing each dashboard widget's blurb with its template.

Checked again on 2026-10-01 against main at 0a5cad587: still present.

The blurb is the sentence a person reads in the arrange picker to decide whether a widget is worth adding. Three of them describe something other than what the widget draws.

  • Where:
    • applications/widgets.py:241 (How long they take): "Days to a first reply and to a first interview: fastest, median, slowest." templates/widgets/durations.html shows only fastest, median and slowest reply times. The median to a first interview is computed (applications/analytics.py:460) but shown only in the Interviews widget (templates/widgets/interviews_summary.html:6), and fastest and slowest to an interview are not computed at all.
    • applications/widgets.py:267 (Where they came from): "Applications, replies and offers per company, with the ones gone quiet." templates/widgets/sources.html:8 heads its table Source, the "found via" field on a posting, with further tables by referrer and agency; only the "Gone quiet at:" line names companies. The comment at lines 265-266 keeps the sentence to avoid untranslating it, but the sentence was wrong about the table it introduces, not only silent about the two added by #239.
    • applications/widgets.py:214 (Outcomes): "Replied, rejected, went silent, still waiting". templates/widgets/outcomes.html shows Still live, Waiting on a reply, Rejected and Ghosted; there is no replied figure.
  • What happens: somebody adds How long they take to see how long interviews take to arrive and finds no interview figure; somebody adds Where they came from expecting a per-employer breakdown and gets a per-source one.
  • Why it matters: the picker is the only description of a widget before it is added, and these three mislead about what it holds.
  • Fix: reword the three blurbs to match what each widget draws (for example "Days to a first reply: fastest, median, slowest.", "Applications, replies, interviews and offers by where you found the posting, by referrer and by agency.", "Still live, waiting, rejected, ghosted: what became of what you sent."), accepting that each needs retranslating; or, for How long they take, add the interview figures to durations.html so the sentence becomes true.

Done when

  • A test in tests/test_dashboard_grid.py renders each of the three widgets with data and asserts that what its blurb names appears in it (a first-interview figure in How long they take, a Replied row in Outcomes) or the blurbs are reworded and the test pins the new wording; it fails today.
Found on 2026-09-29 in a read-only review of postulo at 95348908d, comparing each dashboard widget's blurb with its template. Checked again on 2026-10-01 against `main` at `0a5cad587`: still present. The blurb is the sentence a person reads in the arrange picker to decide whether a widget is worth adding. Three of them describe something other than what the widget draws. - **Where:** - `applications/widgets.py:241` (*How long they take*): "Days to a first reply and to a first interview: fastest, median, slowest." `templates/widgets/durations.html` shows only fastest, median and slowest reply times. The median to a first interview is computed (`applications/analytics.py:460`) but shown only in the *Interviews* widget (`templates/widgets/interviews_summary.html:6`), and fastest and slowest to an interview are not computed at all. - `applications/widgets.py:267` (*Where they came from*): "Applications, replies and offers per company, with the ones gone quiet." `templates/widgets/sources.html:8` heads its table *Source*, the "found via" field on a posting, with further tables by referrer and agency; only the "Gone quiet at:" line names companies. The comment at lines 265-266 keeps the sentence to avoid untranslating it, but the sentence was wrong about the table it introduces, not only silent about the two added by #239. - `applications/widgets.py:214` (*Outcomes*): "Replied, rejected, went silent, still waiting". `templates/widgets/outcomes.html` shows *Still live*, *Waiting on a reply*, *Rejected* and *Ghosted*; there is no replied figure. - **What happens:** somebody adds *How long they take* to see how long interviews take to arrive and finds no interview figure; somebody adds *Where they came from* expecting a per-employer breakdown and gets a per-source one. - **Why it matters:** the picker is the only description of a widget before it is added, and these three mislead about what it holds. - **Fix:** reword the three blurbs to match what each widget draws (for example "Days to a first reply: fastest, median, slowest.", "Applications, replies, interviews and offers by where you found the posting, by referrer and by agency.", "Still live, waiting, rejected, ghosted: what became of what you sent."), accepting that each needs retranslating; or, for *How long they take*, add the interview figures to `durations.html` so the sentence becomes true. ## Done when - A test in `tests/test_dashboard_grid.py` renders each of the three widgets with data and asserts that what its blurb names appears in it (a first-interview figure in *How long they take*, a *Replied* row in *Outcomes*) or the blurbs are reworded and the test pins the new wording; it fails today.
tiagoagueda added this to the 0.6.0 milestone 2026-10-01 10:47:08 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#502
No description provided.