Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

Interview Assistant

A desktop application that simplifies the interview process by letting you load a list of questions from a file, search them by keyword, and leave notes for each question - all saved automatically back to the source file.


Table of Contents


Features

Feature Description
File loading Open .xlsx, .xls, .csv, or .txt files
Live search Filter questions by any keyword as you type
Results list Scrollable dropdown showing all matching questions
Full question view Read the complete text of the selected question
Auto-saved notes Type a note - it saves automatically 1.4 s after your last keystroke
Save indicator Shows Saving… while writing, then Saved. on success
Interview timer Counts total elapsed time from the moment the app is launched
Per-question timer Resets each time you select a new question
Cross-platform Works on macOS and Windows
Packagable Can be built into a .exe or .dmg with one command

Requirements

  • Python 3.9+
  • The following Python packages:
pandas>=2.0
openpyxl>=3.1
xlrd>=2.0

tkinter is part of the Python standard library - no separate install needed.


Installation

# 1. Clone or download the project folder
cd /path/to/Project

# 2. Install dependencies
pip install -r requirements.txt

Running the App

python interview_assistant.py

The window opens immediately and the Interview timer starts counting.


How to Use

1. Opening a File

Click Open File in the top-left corner and select your questions file (.xlsx, .xls, .csv, or .txt).

After loading, the top bar shows:

  • the file name
  • how many rows were found
  • which column was detected as the question column

Question column detection - the app checks your column headers for common names (question, questions, text, prompt, topic, title, content, q). If none match, it uses the first column automatically.


2. Searching Questions

Type any keyword into the Keyword field inside the Search Questions panel.

  • Results update live as you type - no need to press Enter.
  • A counter below the field shows how many results were found (e.g. 5 results found).
  • Click ✕ Clear to reset the search field and clear the list.

3. Selecting a Question

Click any item in the results list.

  • The full question text appears in the Question text area below.
  • Any existing note for that question is loaded into the Notes area.
  • The On question timer resets and starts counting from 00:00.

4. Writing Notes

Click inside the Notes area and start typing.

  • Notes are editable plain text - write anything you like (e.g. "good answer", "no answer", "needs follow-up").
  • Saving happens automatically 1.4 seconds after you stop typing.
  • The bottom-right corner shows the save state:
Text Meaning
(empty) No changes since last save
Saving… Debounce delay in progress
Saved. Written to file successfully
Save failed - file is open in another program! Close the file in Excel / another app and try again
Save failed: <error> Unexpected error - check file permissions

5. Timers

Two timers run simultaneously:

Timer Location Behaviour
Interview time Top-right, HH:MM:SS Starts when the app launches, runs continuously
On question Inside the question panel, MM:SS Starts (or resets) each time you select a question from the list; shows --:-- when nothing is selected

Supported File Formats

Excel (.xlsx / .xls)

  • All rows in the detected question column are loaded.
  • Notes are written back to the same file as a new Notes column (added automatically if missing).
  • Keep the file closed in Excel while the app is running to avoid save conflicts.

CSV (.csv)

  • Parsed with pandas. Comma-separated by default.
  • Notes are written back to the same file as a Notes column.

Plain Text (.txt)

  • Each non-empty line is treated as one question.
  • Because .txt has no column structure, notes are saved to a companion CSV file in the same folder:
    my_questions.txt        ← original, untouched
    my_questions_notes.csv  ← created automatically, contains questions + notes
    

Packaging as a Standalone App

A helper script build_app.py automates packaging with PyInstaller.

Install PyInstaller first

pip install pyinstaller

macOS (.app / .dmg)

Run on a Mac:

python build_app.py --mac

Output:

dist/InterviewAssistant.app   ← double-clickable app bundle
dist/InterviewAssistant.dmg   ← drag-to-install disk image (if hdiutil is available)

To add a custom icon, place an icon.icns file in the project folder before building.

Windows (.exe)

Run on a Windows machine:

python build_app.py --windows

Output:

dist/InterviewAssistant.exe   ← single portable executable

To add a custom icon, place an icon.ico file in the project folder before building.

The resulting binary bundles Python and all dependencies - no installation required on the target machine.


Project Structure

PyCharmMiscProject/
├── interview_assistant.py   # Main application (single file)
├── requirements.txt         # pip dependencies
├── build_app.py             # Packaging helper (PyInstaller wrapper)
├── README.md                # This file
├── icon.ico                 # (optional) Windows icon
└── icon.icns                # (optional) macOS icon

Troubleshooting

ModuleNotFoundError: No module named 'pandas' Run pip install -r requirements.txt and try again.

Save fails on Excel file Close the file in Excel (or any other application) before running the app. Only one process can write to an .xlsx file at a time.

Question column not detected correctly Rename your column header to Question (or any name from the list: question, questions, text, prompt, topic, title, content, q), save the file, and reload it.

.xls file fails to open Make sure xlrd is installed: pip install xlrd. Note that xlrd supports only the old binary .xls format - save the file as .xlsx if possible.

App window is too small The minimum window size is 800 × 620 px. Resize or maximise the window freely - all panels stretch to fill the available space.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages