SLMGEN is a production-ready web application that automates SLM fine-tuning. Upload your JSONL dataset and receive ready-to-run Google Colab notebooks with Unsloth + LoRA optimization.
Your Data β Best Model β Matched. One notebook. Zero setup. Ready to train.
| Feature | Description |
|---|---|
| π€ Smart Upload | Drag-and-drop JSONL with instant validation (min 50 examples) |
| π Quality Scoring | Duplicate detection, consistency checks, 0-100% quality score |
| π§ 11 Model Support | Phi-4, Llama 3.2, Gemma 2, Qwen 2.5, Mistral 7B + more |
| π― 100-Point Matching | Task fit (50pts) + Deploy target (30pts) + Data traits (20pts) |
| π Self-Contained Notebooks | Dataset embedded as base64 - no file uploads needed |
| βοΈ 6 Deploy Targets | Cloud, Server, Desktop, Edge, Mobile, Browser |
- Personality Detection - Infers tone, verbosity, technicality, strictness
- Hallucination Risk - Scores likelihood of model fabrication (0-1)
- Confidence Score - Measures training reliability via coverage/diversity
- Behavior Composer - Generate system prompts from trait sliders
- Prompt Linter - Detects contradictions, redundancy, ambiguity
- Prompt Diff - Semantic comparison between prompts
- "Why This Model?" - Strength/weakness deep dive per model
- Failure Previews - Synthetic failure cases before training
- Model Card Generator - Auto-generated deployment README
| Component | Technology |
|---|---|
| Backend | Python 3.11, FastAPI, Pydantic v2 |
| Frontend | Next.js 16, TypeScript, React 19 |
| Auth | Supabase (OAuth + Email) |
| Training | Unsloth + LoRA on Google Colab (Free T4) |
| Deployment | Vercel (Frontend) + Render (Backend) |
- Python 3.11+
- Node.js 18+
- Supabase project
cd libslmgen
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Configure Supabase keys
uvicorn app.main:app --reload --port 8000cd slmgenui
npm install
cp .env.example .env.local # Configure API URL + Supabase
npm run devOpen http://localhost:3000 π
slmgen/
βββ libslmgen/ # Python Backend
β βββ app/
β β βββ main.py # FastAPI app
β β βββ routers/ # API endpoints
β β β βββ upload.py # Dataset upload
β β β βββ analyze.py # Dataset analysis
β β β βββ recommend.py # Model recommendation
β β β βββ generate.py # Notebook generation
β β β βββ advanced.py # Intelligence features
β β β βββ jobs.py # Job history
β β βββ session.py # Thread-safe sessions
β βββ core/
β βββ ingest.py # JSONL parsing
β βββ quality.py # Quality scoring
β βββ analyzer.py # Dataset analysis
β βββ recommender.py # 100-point scoring engine
β βββ notebook.py # Jupyter generator
β βββ personality.py # Personality detection
β βββ risk.py # Hallucination risk
β βββ confidence.py # Training confidence
β βββ behavior.py # Behavior composer
β βββ prompt_linter.py # Prompt linting
β βββ model_card.py # README generator
βββ slmgenui/ # Next.js Frontend
β βββ src/
β βββ app/ # Pages (dashboard, login, signup)
β βββ components/ # UI components
β βββ lib/ # API client & types
β βββ hooks/ # React hooks (with persistence)
βββ docs/
β βββ API.md # API reference
β βββ USER_GUIDE.md # User guide
β βββ DEPLOY.md # Deployment guide
βββ supabase/
βββ schema.sql # Database schema
| Model | Size | Context | Best For | Gated |
|---|---|---|---|---|
| Phi-4 Mini | 3.8B | 16K | Classification, Extraction | β |
| Llama 3.2 | 1B/3B | 8K | Q&A, Conversations | β |
| Gemma 2 | 2B | 8K | Edge, Mobile | β |
| Qwen 2.5 | 0.5B-3B | 32K | Multilingual, JSON | β |
| Mistral 7B | 7B | 32K | Generation, Creative | β |
| TinyLlama | 1.1B | 2K | Ultra-lightweight | β |
| SmolLM2 | 135M-1.7B | 8K | Small devices | β |
Each line in your JSONL file should be a conversation:
{"messages": [{"role": "user", "content": "Hello!"}, {"role": "assistant", "content": "Hi there!"}]}
{"messages": [{"role": "system", "content": "You are helpful."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}Requirements:
- β Minimum 50 examples
- β At least one user and one assistant message
- β UTF-8 encoding
- β Valid JSON per line
npx vercel --prodUses render.yaml blueprint for auto-deployment.
See DEPLOY.md for full instructions.
# Backend (.env)
ALLOWED_ORIGINS=https://slmgen.vercel.app,http://localhost:3000
UPLOAD_DIR=/tmp/uploads
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_key
JWT_SECRET=your_jwt_secret
# Frontend (.env.local)
NEXT_PUBLIC_API_URL=https://slmgen-api.onrender.com
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_keyMIT License - See LICENSE
Eshan Roy
- π§ eshanized@proton.me
- π @eshanized
β Star this repo if SLMGEN helped you fine-tune faster!
