hired.tracking#

Application tracking system for managing job applications.

Track applications, statuses, follow-ups, and outcomes.

Classes

Application(job_title, company[, id, ...])

Represents a job application.

ApplicationTracker([db_path])

Track job applications in a SQLite database.

class hired.tracking.Application(job_title, company, id=None, job_url=None, location=None, salary_range=None, resume_path=None, cover_letter_path=None, status='draft', applied_date=None, created_at=None, updated_at=None, follow_up_date=None, last_contact_date=None, notes='', contacts='', interview_dates='', match_score=None, source=None, source_data='')[source]#

Bases: object

Represents a job application.

classmethod from_job_result(job, **kwargs)[source]#

Create an Application from a JobResult.

Parameters:
  • job (JobResult) – JobResult object

  • **kwargs (Any) – Additional fields to set

Return type:

Application

Returns:

Application object

to_dict()[source]#

Convert to dictionary.

Return type:

Dict[str, Any]

class hired.tracking.ApplicationTracker(db_path=None)[source]#

Bases: object

Track job applications in a SQLite database.

Examples

>>> tracker = ApplicationTracker()
>>>
>>> # Add application from job search
>>> app_id = tracker.add_application(
...     job=job_result,
...     resume_path="resume.pdf",
...     status="applied"
... )
>>>
>>> # Update status
>>> tracker.update_status(app_id, "interview")
>>>
>>> # Get all applications in interview stage
>>> interviews = tracker.get_applications(status="interview")
>>>
>>> # Get statistics
>>> stats = tracker.get_statistics()
add_application(job=None, **kwargs)[source]#

Add a new application.

Parameters:
  • job (Optional[JobResult]) – Optional JobResult to create application from

  • **kwargs (Any) – Additional fields (or all fields if job not provided)

Return type:

int

Returns:

ID of created application

Examples

>>> # From JobResult
>>> app_id = tracker.add_application(
...     job=job_result,
...     resume_path="resume.pdf",
...     status="applied"
... )
>>>
>>> # Manual entry
>>> app_id = tracker.add_application(
...     job_title="Software Engineer",
...     company="TechCorp",
...     status="applied"
... )
delete_application(app_id)[source]#

Delete an application.

Parameters:

app_id (int) – Application ID

Return type:

bool

Returns:

True if deleted, False if not found

export_to_csv(output_path)[source]#

Export applications to CSV file.

Parameters:

output_path (str) – Path to output CSV file

Return type:

None

get_application(app_id)[source]#

Get application by ID.

Parameters:

app_id (int) – Application ID

Return type:

Optional[Application]

Returns:

Application object or None if not found

get_applications(status=None, company=None, limit=None)[source]#

Get applications with optional filtering.

Parameters:
Return type:

List[Application]

Returns:

List of Application objects

get_follow_ups_due(days=7)[source]#

Get applications that need follow-up.

Parameters:

days (int) – Number of days to look ahead

Return type:

List[Application]

Returns:

List of Application objects needing follow-up

get_statistics()[source]#

Get application statistics.

Return type:

Dict[str, Any]

Returns:

Dictionary with statistics

update_application(app_id, **kwargs)[source]#

Update application fields.

Parameters:
  • app_id (int) – Application ID

  • **kwargs (Any) – Fields to update

Return type:

bool

Returns:

True if updated, False if not found

update_status(app_id, status, notes=None)[source]#

Update application status.

Parameters:
  • app_id (int) – Application ID

  • status (str) – New status

  • notes (Optional[str]) – Optional notes to append

Return type:

bool

Returns:

True if updated, False if not found