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