A simple web application that classifies text and markdown files to determine if they are resumes using OpenAI's Responses API with the gpt-5-nano model.
- Upload individual or multiple files (
.txtor.md) - Parallel processing of multiple files for fast classification
- Real-time results display with classification status and response time
- Persistent storage using localStorage
- Clean, modern UI with drag-and-drop support
- Clear button to reset results
- Node.js (v18 or higher)
- OpenAI API key with access to gpt-5-nano model
-
Install dependencies:
npm install
-
Set your OpenAI API key:
macOS/Linux:
export OPENAI_API_KEY='your-api-key-here'
Windows (PowerShell):
$env:OPENAI_API_KEY='your-api-key-here'
-
Start the server:
npm start
For development with auto-reload:
npm run dev
-
Open your browser: Navigate to
http://localhost:3000
-
Upload Files:
- Click the upload area or drag and drop files
- Select one or multiple
.txtor.mdfiles - Click "Classify Files" button
-
View Results:
- See classification results in the table
- Each result shows: filename, classification (Yes/No), duration, and timestamp
- Results are automatically saved in browser localStorage
-
Clear Results:
- Click "Clear All" button to remove all results from the table and localStorage
The application uses OpenAI's Responses API with the following configuration:
- Model:
gpt-5-nano - Reasoning Effort:
minimal - Verbosity:
low - Response Format: Structured JSON with schema validation
The classification prompt and response schema are defined directly in server.js.
For detailed API integration documentation, see OPENAI_INTEGRATION.md.
.
├── server.js # Express backend server
├── package.json # Project dependencies
├── OPENAI_INTEGRATION.md # Detailed OpenAI API documentation
└── public/
├── index.html # Main HTML page
├── style.css # Styles
└── app.js # Frontend JavaScript
- Backend: Node.js, Express, Multer
- Frontend: Vanilla JavaScript, HTML5, CSS3
- API: OpenAI Responses API
- Storage: Browser localStorage
- This is a local testing application, not production-ready
- File size limit: 10MB per file
- All processing happens asynchronously for better performance
- Results persist across browser sessions via localStorage
- The app requires an active internet connection to communicate with OpenAI API
OPENAI_API_KEY(required): Your OpenAI API keyPORT(optional): Server port (default: 3000)
"OPENAI_API_KEY environment variable is not set"
- Make sure you've set the environment variable before starting the server
"OpenAI API error: 401"
- Check that your API key is valid and has proper permissions
"OpenAI API error: 404"
- Ensure your API key has access to the gpt-5-nano model
MIT