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
Save hours every week with Intake AI CRM. Research, qualify, and act on every opportunity, instantly.
BusinessTypeScript · CSSGitHub @RealtaNuaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Inbound email enquiry intake and triage CRM. Next.js + Supabase + Claude, deployed on Vercel.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
An inbound enquiry handling system. Someone emails a dedicated address; the system
researches their company, writes a structured record, checks whether they've emailed
before, assigns a priority with reasoning, and surfaces it on a login-gated dashboard
where records can be updated by chatting in plain language.
Live: https://email-intake-crm.vercel.app
Intake address: [email protected]Read the full README ↗An inbound enquiry handling system. Someone emails a dedicated address; the system researches their company, writes a structured record, checks whether they've emailed before, assigns a priority with reasoning, and surfaces it on a login-gated dashboard where records can be updated by chatting in plain language.
Live: https://email-intake-crm.vercel.app
Intake address: [email protected]
email -> Mailgun MX -> route: forward()
-> POST /api/inbound/mailgun (verify HMAC signature, insert row, return 200)
-> Supabase enquiries table
-> [enrichment + classification, separate path]
-> dashboard
The webhook stays thin on purpose. Mailgun retries any non-2xx response for hours, and two Claude calls would blow past its timeout — so the handler verifies, inserts, and returns 200. Enrichment happens off the request path.
Current state, what is outstanding, costs, and configuration live in STATUS.md.
Eight of the nine build-order steps are complete and deployed; the chat-based record update interface is the remaining item.
Every problem hit during this build — with the actual error text, the real cause, and the fix — is documented in TROUBLESHOOTING.md.
It covers seven issues, including two application bugs that failed completely silently, a DNS misconfiguration that made inbound mail impossible, and two occasions where work still in flight was wrongly declared dead. The closing section draws out what the failures had in common.
ENRICHMENT_DAILY_CAP,
currently 25) bounds the spend. The cap is claimed with a single atomic Postgres
statement and fails closed. Measured cost is roughly $0.15-0.25 per enriched enquiry
at medium effort; a full-effort run measured $0.54, almost entirely from web search
results being fed back into context.src/lib/business-context.ts. That file describes what
a valuable enquiry looks like for this specific business. It is the difference between
real triage and a keyword rule, and it should be edited to match reality.main deploys to production. The GitHub repo is connected to the
Vercel project, so a broken commit goes live. npm run build passing locally is the
gate before each commit.npm install
cp .env.example .env.local # then fill in every value
npm run dev
Database migrations live in supabase/migrations/ and are applied with:
supabase db push --db-url "postgresql://postgres.<ref>:<password>@aws-0-<region>.pooler.supabase.com:5432/postgres"