Contacts: a page for each contact, with everything that happened with them across applications #1097

Closed
opened 2026-10-30 21:25:16 +00:00 by tiagoagueda · 0 comments
Owner

Applications have a timeline and listings have a history, but a contact has neither, nor a page. Before calling a recruiter one wants to see everything that happened with them: which applications, interviews, messages and reference letters. Today a contact has a form only.

What exists today

  • Contact addresses are create, edit, delete, merge, export and vCards (jobs/urls.py:97-132). There is no detail view; templates/jobs/ holds contact_form.html and contact_vcards.html.
  • The rows exist: Application.contact and referred_by, the contacts of an Interview, Appointment.contact, ListingEvent, ApplicationEvent, ContactNote, ReferenceLetter, and Reference in the career record.

What would change

  • A contact page: details, company and department, the person's own note, and one timeline of every event, interview, appointment, message and document that names this contact, newest first, each linking to its application or listing.
  • Read-only. No new model.
  • Search results and the company page link to it rather than to the edit form.

Decisions

  • Shared contacts. Recommended: the timeline shows only the reader's own rows, as every shared record does since #896.
  • What names a contact. Recommended: foreign keys only, no matching of names in text.

Checked against main at daee30b15 (2026-10-30). From the status review and feature suggestions of 2026-10-30.

Applications have a timeline and listings have a history, but a contact has neither, nor a page. Before calling a recruiter one wants to see everything that happened with them: which applications, interviews, messages and reference letters. Today a contact has a form only. ## What exists today - Contact addresses are create, edit, delete, merge, export and vCards (`jobs/urls.py:97-132`). There is no detail view; `templates/jobs/` holds `contact_form.html` and `contact_vcards.html`. - The rows exist: `Application.contact` and `referred_by`, the contacts of an `Interview`, `Appointment.contact`, `ListingEvent`, `ApplicationEvent`, `ContactNote`, `ReferenceLetter`, and `Reference` in the career record. ## What would change - A contact page: details, company and department, the person's own note, and one timeline of every event, interview, appointment, message and document that names this contact, newest first, each linking to its application or listing. - Read-only. No new model. - Search results and the company page link to it rather than to the edit form. ## Decisions - **Shared contacts.** Recommended: the timeline shows only the reader's own rows, as every shared record does since #896. - **What names a contact.** Recommended: foreign keys only, no matching of names in text. Checked against `main` at `daee30b15` (2026-10-30). From the status review and feature suggestions of 2026-10-30.
tiagoagueda added this to the 0.6.0 milestone 2026-10-30 21:25:16 +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#1097
No description provided.