Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗This web app goes with the MEST Africa "AI for SMEs" Workshop (6 November 2026). SME owners fill in a 5-step form about their business, their pain points and their workshop takeaways. A Claude-powered planning agent then writes a personalised 90-day AI adoption plan. The app turns the plan into a branded PDF and emails it to the owner. The owner can also download it on the spot.
docs/sample-plan-mock-data.pdf shows the PDF layout, filled with placeholder data.
Form (5 steps) → POST /api/plan
├─ Input guardrails: schema validation, sanitising, honeypot, rate limits, prompt-injection screen
├─ Planning agent (Claude Opus 5.5, structured JSON output)
│ · system prompt built from the concept note: Modules 1–5, partners Oze / Kudobuzz / Intelli
│ · respects the owner's budget, weekly hours, devices and AI familiarity
│ · scope check: rejects non-genuine or harmful businesses and injection attempts
├─ Output guardrails: 3 phases covering weeks 1–13, 3–5 processes, KPIs, safeguards,
│ and a ban on guaranteed results, fake reviews, scraped contact lists, pirated software, etc.
│ → one self-correction retry, then fail closed
├─ PDF (@react-pdf/renderer, MEST branding)
├─ Email with the PDF attached (Gmail/SMTP or Resend), optional BCC to a MEST inbox
└─ Optional lead webhook (Google Sheet / Airtable via Zapier, Make or Apps Script)
The form follows the workshop agenda:
Each PDF contains: a summary, strengths and opportunities, quick wins for this week, 3–5 priority processes with tools and costs, a week-by-week roadmap for weeks 1–13 in 3 phases, KPIs, a budget in GHS, responsible-AI safeguards (including Ghana's Data Protection Act, 2012 (Act 843)), skills to build, and next steps with MEST.
Push this folder to a GitHub repository.
In Vercel, choose Add New → Project, import the repository, and keep the defaults (Next.js is detected automatically).
Add these Environment Variables:
| Variable | Required | Notes |
|---|---|---|
ANTHROPIC_API_KEY | ✅ | From console.anthropic.com |
SMTP_USER / SMTP_PASS | email, option A | A Gmail / Google Workspace address and its app password. No DNS changes needed. |
RESEND_API_KEY | email, option B | From resend.com. The sending domain must be verified in Resend. |
EMAIL_FROM | ✅ for email | e.g. MEST Africa <[email protected]>. With Gmail it must be SMTP_USER or one of its aliases. |
EMAIL_BCC | optional | MEST inbox that gets a copy of every plan |
LEADS_WEBHOOK_URL | optional | Receives each submission as JSON. Use it to build the SME lead list. |
RATE_LIMIT_PER_HOUR | optional | Requests per IP per hour (default 5) |
GOOGLE_SERVICE_ACCOUNT_EMAIL / GOOGLE_PRIVATE_KEY | for certificates | See "Certificates" below |
CERT_SHEET_ID and/or CERT_FOLDER_ID | for certificates | Where to find each attendee's certificate |
Click Deploy.
Notes:
maxDuration = 300, which needs Vercel Fluid Compute (on by default for new projects). On a plan with a lower limit, raise the function duration in Project Settings → Functions.RESEND_API_KEY the app still works: users see the "download PDF" option instead of email delivery.lib/guardrails.ts).RATE_LIMIT_PER_HOUR (for example to 200). The per-email limit of 3 per hour still applies./certificate (the "Get certificate" button in the nav) lets attendees download their certificate by entering the email they registered with. Certificates stay in Google Drive and don't need to be shared publicly. The app reads them through a Google service account.
GOOGLE_SERVICE_ACCOUNT_EMAIL (client_email from the JSON) and GOOGLE_PRIVATE_KEY (private_key from the JSON).CERT_SHEET_ID, the ID in the sheet's URL): a header row with an Email column and a column with each certificate's Drive link, such as the "Merged Doc URL" column Autocrat writes. An optional Name column personalises the greeting.CERT_FOLDER_ID, the ID in the folder's URL): each certificate's file name contains the attendee's email, e.g. [email protected]./api/health shows "certificates": true.Google Docs and Slides certificates are converted to PDF automatically. Keep each certificate under about 4 MB (Vercel's response limit).
cp .env.example .env.local # fill in ANTHROPIC_API_KEY (and Resend if you want to test email)
npm install
npm run dev # http://localhost:3000
app/page.tsx Landing page (light theme, images, scroll animations, CTA to /plan)
app/plan/page.tsx Form page
app/certificate/page.tsx Certificate download page (animated headline)
lib/certificates.ts Google Drive / Sheets certificate lookup
components/PlanForm.tsx 5-step form, loading and result screens, PDF download
app/api/plan/route.ts Pipeline: validate → agent → PDF → email → lead webhook
lib/schema.ts Form options, form schema, AI output schema
lib/agent.ts System prompt and Claude call (structured output, refusal fallback, self-correction)
lib/guardrails.ts Input, prompt and output guardrails, rate limiting
lib/pdf.tsx Branded PDF document
lib/email.ts Email template and sending