FateMatch AI - Servant Compatibility Analyzer
Application that analyze servant compatibility using AI
Share this project:
Project Overview
๐ฎ FateMatch AI โ Servant Compatibility Analyzer

An AI-powered personality matching application that determines which Fate/Grand Order Servant best fits the user's personality.
Built using React (Frontend) and Flask (Backend) โ with a bit of extra AI roasting spice ๐
๐จโ๐ป Creator Identity
| Master Username |
|---|
| Fanthom |
๐ง Overview
FateMatch AI is a simple expert system that analyzes a userโs personality and matches it with the most compatible Servant from the Fate/Grand Order universe.
In addition to compatibility analysis, the system also generates logical explanations and funny roast lines from the AI to make the user experience more engaging.
Users only need to provide:
- Master name / nickname
- A short personality description
- (Optional) Feedback on whether the result is accurate
โ๏ธ Technologies Used
Backend
- Python 3.x
- Flask
- Flask-CORS
- OpenAI API (for reasoning + roasting)
Frontend
- React + Vite
- Tailwind CSS
- Axios
- Framer Motion (UI animations)
๐ How to Run the Project
1๏ธโฃ Run the Backend (Flask)
cd backend
pip install flask flask-cors openai
python app.py
Backend will run at:
http://localhost:5000
2๏ธโฃ Run the Frontend (React)
cd frontend
npm install
npm run dev
Frontend will run at:
http://localhost:5173
๐งฉ Project Structure
FateMatch-AI/
โโโ backend/
โ โโโ app.py
โ โโโ requirements.txt
โ
โโโ frontend/
โ โโโ src/
โ โ โโโ App.jsx
โ โ โโโ components/
โ โ โ โโโ ResultCard.jsx
โ โ โ โโโ LoadingScreen.jsx
โ โ โโโ ...
โ โโโ package.json
โ
โโโ README.md
๐ง System Workflow
- The user provides their Master name and personality description.
- The system uses AI reasoning to determine the most compatible Servant.
- AI generates a compatibility explanation + a humorous roast.
- The result is displayed in a Result Card with options:
- ๐ Match
- ๐ Not a match
๐งพ API Endpoints
1๏ธโฃ POST /analyze_match
Analyze the userโs personality and determine the matching Servant.
Request Body
{
"master_name": "Fanthom",
"personality": "Kesel dan marah, tapi tetap berjuang walau sendirian."
}
Response
{
"servant": {
"name": "Nezha",
"className": "Lancer",
"image": "https://fategrandorder.fandom.com/nezha.png"
},
"compatibility": {
"reason": "Nezha cocok dengan Master karena keduanya sama-sama pantang menyerah.",
"roast": "Nezha sering dianggap 'Lancer yang bunuh diri', kayaknya kalian dua sekawan."
}
}
2๏ธโฃ POST /feedback_match
Save user feedback about whether the match result is accurate.
Request Body
{
"master_name": "Fanthom",
"servant_name": "Jeanne d'Arc",
"match": true
}
Response
{
"status": "success",
"message": "Feedback diterima dan disimpan ke feedback_data.json"
}
๐งฉ Additional Features
๐ฌ Feedback System
- Users can vote whether the match result is accurate or not.
- Feedback is stored for future iteration improvements.
๐ Share Button
- Results can be shared directly to social media (Twitter, WhatsApp, etc.)
- Implemented using Web Share API for convenience.
โณ Loading Animation
- While AI processes the analysis, a full-screen loading animation is shown.
๐ด Centered Result Display
- Final results appear in a centered card for a clean and aesthetic presentation.
๐งฌ AI Matching Logic
- User personality text is processed with an AI model to detect key personality traits.
- These traits are mapped against the FGO Servant personality database.
- The closest compatibility match is selected, along with reasoning and a roast.
- User feedback helps refine future matching accuracy.
๐ Example Feedback File (feedback_data.json)
[
{
"master_name": "Fanthom",
"servant_name": "Jeanne d'Arc",
"match": true
},
{
"master_name": "Rin",
"servant_name": "Gilgamesh",
"match": false
}
]