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
client
directory. - In the other, navigate to the
server
directory.
- In one, navigate to the
-
Run
npm i
in both terminals to install dependencies. -
Create
.env
files in bothclient
andserver
directories.-
Client
.env
:VITE_CLIENT_API=<your_backend_url>
-
Server
.env
:PORT=<your_port_number>
-
-
Start the backend:
npm run dev
- Copy the backend's
localhost
URL and paste it intoVITE_CLIENT_API
in 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
city
matches 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
skills
array → +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