This is the GitHub repository for Task 1 of the BreadButter Fullstack Internship Assignment.
I have successfully completed the core objective of building a fullstack matchmaking application with a REST API and a responsive React frontend.
- React (TypeScript)
- Axios – for making HTTP requests
- React Router – for routing (if applicable)
- Node.js + Express
- CORS – to enable cross-origin requests
- Dotenv – for environment variable management
- FS – for reading local JSON files
- Nodemon – for hot-reloading during development
-
Fork the repo and clone it into your working directory.
-
Open two terminals:
- In one, navigate to the
clientdirectory. - In the other, navigate to the
serverdirectory.
- In one, navigate to the
-
Run
npm iin both terminals to install dependencies. -
Create
.envfiles in bothclientandserverdirectories.-
Client
.env:VITE_CLIENT_API=<your_backend_url>
-
Server
.env:PORT=<your_port_number>
-
-
Start the backend:
npm run dev
- Copy the backend's
localhostURL and paste it intoVITE_CLIENT_APIin the client.env.
- Copy the backend's
-
Start the frontend:
npm run dev
-
You're done! 🎉 You can now use the local website to test talent-client matchmaking.
This project primarily uses one dataset:
Contains creator data including:
name: Creator’s full namecity: Location of the creatorskills: Array of skills offeredstyle_tags: Tags describing the creator's styleportfolio[].tags: Style tags used in specific portfolio projects
These fields are used to match against the client's input brief.
The backend assigns scores to each creator based on how well they match the client’s brief. The scoring rules are:
| Criteria | Score |
|---|---|
| Location match | +3 |
| Budget match (within range) | +2 |
| Each matching skill | +2 per skill |
| Each matching style (in tags/portfolio) | +1 per style match |
- If the creator's
citymatches the client's selected location → +3 points. - If the client's budget falls within the creator’s expected budget range → +2 points.
- For every skill in the client’s input that matches the creator’s
skillsarray → +2 points per match. - For every style keyword that matches:
- the creator's
style_tags - or their
portfolio[].tags→ +1 point per match
- the creator's
The backend calculates scores for all creators using this logic and returns the top 3 matches along with a breakdown of why they were selected.
Click here to visit the Talent Matchmaker
Not implemented, but possible enhancements include:
- ✅ Thumbs up/down feedback per creator match (stored in
match_history.json) - ✅ Display past feedback for each creator
- ✅ Use fuzzy matching (e.g., sentence embeddings) for better style detection