A beginner-friendly, clean Python FastAPI project designed to extract common technical skills from resume text. This is a perfect student portfolio project that demonstrates natural language processing (using spaCy) and RESTful API development without the overhead of databases or authentication.
- FastAPI backend that provides automatic, interactive API documentation.
- spaCy NLP integration to match and extract technical skills.
- Standard JSON REST API architecture.
- Containerized via Docker for easy deployment on Railway.
First, ensure you have Python 3.8+ installed. It is highly recommended to use a virtual environment.
# Clone or navigate to the project directory
cd resume-skill-extractor
# (Optional) Create and activate a virtual environment
python -m venv venv
# On Windows:
venv\Scripts\activate
# On Mac/Linux:
source venv/bin/activate
# Install the Python dependencies
pip install -r requirements.txt
# Download the required spaCy English NLP model
python -m spacy download en_core_web_smOnce the dependencies are installed, you can start the application using uvicorn:
uvicorn app:app --reloadThe application will now be running at http://127.0.0.1:8000.
FastAPI includes an interactive documentation interface powered by Swagger UI.
- Open your browser and navigate to: http://127.0.0.1:8000/docs
- You will see both the
GET /andPOST /extract-skillsendpoints. - Click on the
/extract-skillsendpoint and click Try it out. - Inside the request body box, enter the following JSON:
{ "resume_text": "I know Python, SQL, Machine Learning and Docker" } - Click Execute.
- The API should respond with:
{ "extracted_skills": [ "docker", "machine learning", "python", "sql" ] }
This project includes a Dockerfile specifically designed to be easily deployed on Railway.
- Create a GitHub repository and push this project's code to it.
- Sign up or log into Railway.
- Click "New Project" and select Deploy from GitHub repo.
- Choose your new repository.
- Railway will automatically detect the
Dockerfileand build your image. - Railway automatically provides the
$PORTenvironment variable which the Dockerfile uses via the start command:uvicorn app:app --host 0.0.0.0 --port ${PORT} - Once the build deployment is complete, generate a domain in Railway's network settings. You can now access your API globally!