A fan-made Mewgenics breeding planner with a React + TypeScript frontend and a TypeScript server for screenshot parsing and planner recommendations.
Fan-made tool only. This project is not affiliated with, sponsored by, or endorsed by Mewgenics or its creators.
This recording shows the planner customization flow, including prompt customization and the resulting analysis output.
This app is designed to help you import, organize, review, and analyze Mewgenics breeding data in one place.
You can paste tab-separated rows directly from Excel or another spreadsheet, validate them, and save them into browser storage.
You can add a cat by filling fields manually, or use screenshot parsing to pre-fill the form when GPT features are enabled.
Once cats are loaded, you can:
- edit cells inline
- filter by name, mutation text, or gender
- move or delete rows with row actions
- drag to reorder rows
- highlight columns
- see invalid mutation warnings and priority mutation highlights
- export the current data back into spreadsheet-ready text
You can control the planner by maintaining screenshot skill mappings, editing mutation priority order by body part, and defining what each room should focus on.
When GPT features are enabled, the app can analyze your current cats and produce:
- a summary
- recommended trims
- potential trims
- move recommendations
- follow-up prompts when more input is needed
Supported move and delete recommendations can be applied directly from the result cards, and then undone from the same output.
The full customization plus analysis flow is also shown in the demo above.
- Node.js 18+
- An OpenAI API key for screenshot parsing and planner recommendation features (optional)
- Sign in or create an account on the OpenAI Developer Platform.
- Open the API keys page and create a new secret key.
- Open the billing page, add a payment method, and add credits or configure billing.
- Put the key in your local
.envfile.
Links:
- API keys:
https://platform.openai.com/api-keys - Developer quickstart:
https://platform.openai.com/docs/quickstart - Billing:
https://platform.openai.com/settings/organization/billing/overview
Important:
- This project uses the OpenAI API, not just the ChatGPT web app.
- The API key stays on your local server and is not exposed to the React client.
- Do not share, commit, or post your API key.
- If you host this for other people, screenshot parsing and planner requests send user-provided data to OpenAI.
Only the OpenAI-powered features cost money:
- parsing a screenshot
- running a recommendation
- sending a follow-up recommendation request
All other features are local and do not cost money, including:
- importing spreadsheet rows
- editing cat rows
- moving, deleting, dragging, and undoing rows
- filtering, highlighting, and organizing current cat rows
- changing planner customization fields
- storing cat data in local browser storage on the current machine only
Rough cost estimates for the current codebase are:
- screenshot parse: about
$0.005to$0.015per image - recommendation run: about
$0.01to$0.04per analysis - follow-up recommendation: usually about
$0.01to$0.05each
These are estimates, not fixed prices. Actual cost depends on:
- the current model price
- screenshot size and image detail level
- how many cat rows you send
- how long the model's response is
- Install Node.js from the official site:
- Node.js downloads:
https://nodejs.org/
- Verify the install:
node --version
npm --version- Install dependencies from the project root:
npm install- Create your local environment file from the template:
Copy-Item .env.example .env- Edit
.envand set your real API key if you want GPT-powered features:
OPENAI_API_KEY=your_real_openai_api_keyOptional:
- if you want to override the default local port, edit config/app-config.json
If you do not set a valid API key:
- the app still starts
- spreadsheet import and local cat editing still work
- screenshot parsing is locked
- ChatGPT planner recommendation is locked
Start the TypeScript server:
npm startnpm start automatically runs npm run build first, then starts the server in the foreground and keeps the terminal attached to it.
If you only want to rebuild the frontend manually:
npm run buildStop it with:
Ctrl+CIf you want the server in the background instead:
npm run start:bgTo stop the background server:
npm run stopIf there is no PID file, npm run stop also falls back to stopping whatever is listening on the configured server port (default: 38147).
Background server output is written to .mewgenics-server.log.
The app runs at http://127.0.0.1:38147/planner by default.
You can override the default port in config/app-config.json.
If you want to work on the frontend and backend separately:
- Run the backend in one terminal:
npm run dev:server- Run the Vite frontend in another terminal:
npm run dev- Open the Vite URL shown in the terminal, usually
http://127.0.0.1:5173/.
The Vite dev server proxies planner API requests to the backend port from config/app-config.json, or 38147 if that file is missing or invalid.
Go to http://127.0.0.1:38147/planner after starting the server, unless you changed the port in config/app-config.json.
You can add cats in two ways:
- Paste spreadsheet rows into
Import Excel Data, then clickSave to Browser Data - Click
Add Catand either fill out the fields manually or paste/upload a screenshot for parsing
Expected import format:
- tab-separated rows
- 25 columns per cat
- optional room labels such as
A,B,C,D,Room A, and similar variants
After saving data, Current Cat Rows shows the cats stored in this browser only. From there you can:
- edit cells inline
- use the row
Actionsmenu to move cats between rooms or delete them - drag to reorder rows or move them between rooms
- delete cats
- undo recent row actions
- filter across all rooms by name, mutation text, or gender
- click a column header to highlight that column across every room table
- click a row to keep it selected/highlighted
- see gold highlights for mutations that match your configured priority order
- see inline red highlights on invalid mutation cells that need correction before analysis
Important:
- cat data is stored only in the current browser on the current machine
- switching browsers or moving to another computer will not bring that stored data with you
Inside ChatGPT Planner Recommendation, expand Skill Mapping (IMPORTANT!) when needed.
Each mapping row contains:
- original screenshot text
- mapped token
Example mappings:
10% chance to reflect projectiles => reflectYour basic attack inflicts Leech => leech
This list should be maintained whenever the screenshot parser encounters new wording. Otherwise the same mutation may be mapped to different tokens across different parses.
Inside Planner Recommendation Customization, you can edit:
- mutation priority order
- Room A focus
- Room B focus
- Room C focus
- Room D focus
Additional planner behavior:
- mutation priority order is split by body part in the UI
- Room B, Room C, and Room D can be enabled or disabled individually
- disabled rooms are excluded from planner validation and recommendations
If you leave those fields alone, the app uses the backend defaults.
Click Analyze Cats to send the normalized cat data and planner settings to the server.
The response is streamed live first, then rendered into structured sections such as:
- summary
- recommended trims
- potential trims
- move
- planner follow-up, if the model asks for more input
For supported move/delete recommendations, the UI also shows Apply buttons that can update the current cat rows directly. After applying one, the recommendation can be undone from the same card without rerunning analysis.
If the planner returns a follow-up prompt, type your response in the follow-up box and submit it. The app sends the previous analysis back along with your reply so the next response stays in the same structure.
- Cat rows are stored in browser
localStorage, not in a database. - That means your saved cats stay on this browser and this machine only.
- The default local server port is configured in config/app-config.json.
- Screenshot parsing and planner analysis both require a valid OpenAI API key.
- If the API key is missing or invalid, GPT-powered sections are visually locked and disabled in the UI.
- Pasting an image into the page only auto-starts screenshot parsing when GPT features are available.
- The optional
/saveendpoint appends rows tocats.csv, which is ignored by git. - This is a fan-made tool and is not affiliated with or endorsed by Mewgenics or its creators.
Before making the repo public:
- review the git history and rotate any secret that may ever have been committed
- avoid uploading official Mewgenics logos, art, or other copyrighted assets unless you have permission
- keep the fan-made/non-affiliation disclaimer in the repo and UI
- understand that using the
Mewgenicsname may still carry trademark or branding risk even with a disclaimer
If you plan to host the app publicly:
- add a public privacy policy that discloses OpenAI processing for screenshot parsing and planner recommendations
- disclose any server-side logging or retention you keep
- disable or document the optional
/saveendpoint if it writes user data tocats.csv
Repository documents:
- License: LICENSE
- Privacy template for hosted deployments: PRIVACY.md






