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
Search every open Indian government tender, see them on a map, and get email alerts for your area.
BusinessPython · TypeScriptGitHub @devreddy1015OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
easy crawl on on website and get you active tendder links
Loading the full README. The saved excerpt is shown below.
TenderLens is a tender-intelligence SaaS for Indian public procurement. It finds every
open tender on 35 official NIC GePNIC portals (central, PSU, defence and 27 states and UTs),
helps a contractor understand the tender documents in minutes with a Copilot that runs on
our own open-weight LLM, and lets a team manage each bid until it is won. The build spec
is docs/PLATFORM_V2.md; section 5 sets out how it competes with
incumbents such as TenderDetail: published prices, AI on every plan, page citations,
visible data freshness, and an API.Read the full README ↗TenderLens is a tender-intelligence SaaS for Indian public procurement. It finds every open tender on 35 official NIC GePNIC portals (central, PSU, defence and 27 states and UTs), helps a contractor understand the tender documents in minutes with a Copilot that runs on our own open-weight LLM, and lets a team manage each bid until it is won. The build spec is docs/PLATFORM_V2.md; section 5 sets out how it competes with incumbents such as TenderDetail: published prices, AI on every plan, page citations, visible data freshness, and an API.
Find
pg_trgm; no Elasticsearch)/coverage: every portal with its open tenders and last successful crawlUnderstand (Copilot)
mode: "extractive"). No paid LLM API.Manage
Stack: Python 3.12 · Django 5.2 + DRF · PostgreSQL 16 (full-text, pg_trgm, pgvector) ·
Celery 5 + Redis · llama.cpp · sentence-transformers (multilingual-e5-small) · OCRmyPDF ·
React 19 + TypeScript + Tailwind 4 + TanStack Query · Docker · Caddy
| Doc | What is in it |
|---|---|
| docs/PLATFORM_V2.md | Build spec, API contract, competitive positioning, status and next steps |
| docs/SOURCE_NOTES.md | The 35 portals, rejected ones, why award data is not collected, cross-portal duplicates |
| docs/SAAS.md | Workspaces, pipeline, calendar, recommendations, API keys, exports, billing |
| docs/DEPLOY.md | Production runbook: VPS, Caddy, backups, monitoring, monthly cost |
| LLM kit (not on GitHub) | Model choice, QLoRA fine-tuning, GGUF export, LLM evaluation. Kept on the founder's disk next to the repo (../tenderlens-llm, linked as llm/) |
| docs/INTERVIEW_NOTES.md | The non-obvious engineering decisions, explained |
cp .env.example .env # then set DJANGO_DEBUG=true and DEV_LOGIN_ENABLED=true
make up # postgres, redis, web, workers, beat, mailpit, caddy → http://localhost:8080
make crawl SOURCE=central MODE=full
No docker compose plugin on the host? Every compose target takes COMPOSE=; run
Compose from the official CLI image instead:
make up COMPOSE="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $PWD:$PWD -w $PWD docker:27-cli compose"
Running Django on the host instead (what the tests do): start only postgres and redis,
run uv sync --frozen --extra copilot once (the Copilot's embedding model needs torch, which
is an optional extra so the Vercel build stays under its 500 MB function limit), then
uv run --frozen python manage.py migrate && uv run --frozen python manage.py runserver.
Settings come from the process environment (not from .env), so export DJANGO_DEBUG=true DEV_LOGIN_ENABLED=true for the any-email dev sign-in, and CELERY_TASK_ALWAYS_EAGER=true
if no worker is running. The Copilot's LLM is optional: start it with
COMPOSE_PROFILES=llm (needs the model file, e.g. Qwen3.5-4B-Q4_K_M.gguf, in llm/models/); without it, answers are
extractive. The frontend dev server (npm run dev in frontend/) proxies /api to
localhost:8000. If the host's node is broken, use
docker run --rm -u $(id -u):$(id -g) -e HOME=/tmp -v "$PWD/frontend":/app -w /app node:22-bookworm-slim npm ….
Integration run, 6 October 2026 (all 35 portals, live, through the real pipeline; a bounded check, not a full crawl: up to 25 organisations and 15 detail pages per portal, ≤ 1 request/second per host):
This is the beginning of the README. Read the rest at the original. Read the full README ↗