Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Upload the case's Excel file (Applications + Territories, with the fixed Existing stores sheet). Every applicant gets a recommendation (Recommended, Waitlist, On hold or Rejected), the reason, next steps, a training plan and an email draft. A chat panel answers "why" questions and takes new facts ("APP-012 has now found a ground-floor space"), then re-runs the whole batch and reports every knock-on change.
No login. The file is read in the browser.
npm install
cp .env.example .env.local # add OPENROUTER_API_KEY (or GEMINI_API_KEY)
npm run dev # http://localhost:3000
The app works without a key too: the chat falls back to built-in handling of simple questions and updates.
OPENROUTER_API_KEY (and optionally OPENROUTER_MODEL, default google/gemini-3.7-flash). Or use a Google AI Studio key: GEMINI_API_KEY and GEMINI_MODEL. If both keys are set, OpenRouter is used.If the model ever returns errors (for example, a retired model name), set OPENROUTER_MODEL (or GEMINI_MODEL) to a current Flash model and redeploy. The dashboard keeps working either way.
Code decides; Gemini only explains and turns chat messages into data updates. Same input, same output, every time.
Minimum investment: Tier 1 ₹30 lakh, Tier 2 ₹22 lakh, Tier 3 ₹18 lakh. All thresholds are editable under "Brand rules" in the app.
public/sample-applications.xlsx is built on the real template and plants the traps judges are likely to use:
| Applicant | Trap | Expected |
|---|---|---|
| APP-005 | Pin 570009 already has ST-06 | Rejected |
| APP-016 | Pin outside every territory | Rejected |
| APP-009 | ₹18 lakh in Tier 1 | Rejected |
| APP-008 | ₹26 lakh in Tier 1 (small shortfall) | On hold |
| APP-007 | No space yet, 2-month launch | On hold |
| APP-012 | Upper floor | On hold → Recommended after "found a ground-floor space", which pushes APP-013 off pin 572101 |
| APP-015 | City Mangaluru, pin from Mysuru | On hold |
| APP-017 | "Not yet identified" but gives size and floor | On hold |
| APP-018 | Investment blank | On hold |
| APP-019 | Form says Ground, notes say second floor | On hold |
| APP-020 | 260 sq ft | On hold |
| APP-004, APP-010 | Lose slots to higher scorers | Waitlist |
| APP-014 | Score below a Low-priority territory's bar | Waitlist |
npm run check # 48 checks against the sample file
docs/: the original case PDF and template, plus HANDOFF.md
scripts/check-sample.mjs: the self-check
lib/parse.js: reads the template (skips the grey example rows, keeps pin codes as text)
lib/engine.js: rules, scoring, allocation, before/after comparison
lib/plan.js: next steps, training plans, email drafts
lib/snapshot.js, app/api/chat/route.js: what Gemini sees, and the server call (key never reaches the browser)
lib/chatLocal.js: chat fallback without Gemini
app/page.js, app/components/*: the dashboard