Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Aligned Interviewer — AI-led interviews for qualitative research, built on Anthropic's Claude models — three stages, end to end:
This is the demo build: a single Next.js app, state held in the browser, no
database — enough to run a convincing live interview and show stakeholders the
whole loop. Scale, persistence, consent flows, and a rigorous analysis pipeline
are deliberately out of scope (see docs/plan for the roadmap).
📄 First live run: see
docs/first-test-run.md— a real end-to-end interview (anonymized) showing the interviewer probing, following emergent threads, and producing a full synthesis.
@anthropic-ai/sdk in server-side API routesModels are env-configurable (server-side), defaulting to Sonnet 4.6 for live interview turns and Opus 4.8 for plan + synthesis:
| Env var | Default | Used by |
|---|---|---|
MODEL_INTERVIEW | claude-sonnet-4-6 | live interview turns |
MODEL_REASONING | claude-opus-4-8 | plan + synthesis |
Set MODEL_INTERVIEW=claude-haiku-4-5 for cheap plumbing tests, then switch back
for a real demo. (effort is auto-omitted on Haiku/Sonnet-4.5, which don't
support it.) The interview route uses prompt caching — the interviewer
system prompt and conversation prefix are cached across turns, so cost stays low
even though each turn resends the growing transcript. A full demo interview costs
roughly $0.20–0.40 on the defaults; pennies on Haiku.
cp .env.local.example .env.local # then add your ANTHROPIC_API_KEY
npm install
npm run dev # http://localhost:3000
Set APP_PASSCODE to require a shared passcode for the whole app — enforced
in middleware.ts, so it protects the API routes (the cost surface), not just
the UI. Visitors get a lock screen; the API returns 401 without a valid cookie.
Leave APP_PASSCODE unset to disable the gate (it fails open, so you can't lock
yourself out before configuring it). To enable on the deployed demo, add
APP_PASSCODE in Vercel → Settings → Environment Variables and redeploy.
Configured for Vercel via vercel.json (Next.js framework, lhr1 region —
London, close to UK/Europe respondents; change it in vercel.json if your
audience is elsewhere).
npm i -g vercel # if you don't have the CLI
vercel # first run links/creates the project
vercel env add ANTHROPIC_API_KEY # paste your key (Production + Preview)
vercel --prod # deploy
Or connect the GitHub repo in the Vercel dashboard and add ANTHROPIC_API_KEY
under Project → Settings → Environment Variables.
Plan note: the API routes set maxDuration = 60, which fits the Vercel
Hobby plan. Streaming responses work on Vercel's Node runtime. On Pro you can
raise maxDuration in the route files if long transcripts ever need it.
training-log/ is a separate, standalone service (own package.json) that
ingests strength-training session files from Google Drive into a Google
Sheet — unrelated to the interviewer app, just hosted alongside it. See
training-log/README.md.
app/
page.tsx # stage router: plan → interview → synthesize
layout.tsx, globals.css
components/ # PlanStage, InterviewStage, SynthesisStage, chat UI
api/
plan/route.ts # Opus → structured interview guide
interview/route.ts # Sonnet → streamed interviewer turns (SSE)
synthesize/route.ts # Opus → structured analysis
lib/
anthropic.ts # SDK client + model constants
prompts.ts # interviewer persona + plan/synthesis prompts
types.ts # shared Guide / Transcript / Synthesis types