Synaplan
기업을 위한 오픈소스 AI 플랫폼
직원 ID를 입력하면 AI가 3주 맞춤 온보딩 플랜을 생성하고, HR이 검토 후 새 직원에게 이메일로 전달한다
Enter an employee ID, generate a personalised 3-week onboarding plan with AI, review it as HR and email it to the new joiner.
비즈니스Python · JavaScriptGitHub @Shibani58온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
AI-generated, HR-reviewed onboarding plans on AWS Lambda (demo rebuild of a hackathon project)
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AI-generated, HR-reviewed onboarding plans on a serverless AWS stack.
HR enters a new joiner's employee ID → Athena fetches their profile → picks the most relevant training with embeddings and cosine similarity → drafts a 3-week plan with an LLM → HR reviews and approves → the plan is emailed to the new joiner, with every step in an audit trail.README 전문 보기 ↗AI-generated, HR-reviewed onboarding plans on a serverless AWS stack.
HR enters a new joiner's employee ID → Athena fetches their profile → picks the most relevant training with embeddings and cosine similarity → drafts a 3-week plan with an LLM → HR reviews and approves → the plan is emailed to the new joiner, with every step in an audit trail.
This is a public demo rebuild of a hackathon project I worked on. The original ran on Amazon Bedrock (Titan Text + Titan Embeddings); this version uses the Google Gemini API free tier so the demo costs nothing. All employees and training content are synthetic.
Static UI (GitHub Pages)
│
▼
API Gateway (HTTP API, throttled)
├── GET /employees/{id} → get-employee-details (mock HR system)
├── POST /plans → generate-plan (cosine similarity + LLM → DynamoDB)
├── GET /plans/{id} → review-plan
├── PUT /plans/{id} → review-plan (HR approve / reject, versioning, audit)
└── POST /plans/{id}/send → send-email (SES, or an email preview in demo mode)
| Piece | Choice |
|---|---|
| Compute | AWS Lambda (Python 3.12, arm64) |
| API | API Gateway HTTP API with throttling |
| Storage | DynamoDB (plans, versions, audit trail) |
| Amazon SES (optional; preview mode when not configured) | |
| LLM | Gemini (gemini-2.5-flash) for plan generation, gemini-embedding-001 for content selection |
| Fallback | Template planner + bag-of-words cosine when no API key is set or the free quota is used up |
| UI | Plain HTML/CSS/JS single page; runs fully in the browser in demo mode |
| IaC | AWS SAM (backend/template.yaml) |
Guarding against hallucinations: the LLM only sees the top training modules picked by cosine similarity and must reference them by ID; anything else is dropped before the plan is saved.
Demo mode needs no backend: config.js has an empty API URL, so mock-api.js stands in for the Lambdas.
mkdir -p site/data && cp -r frontend/* site/ && cp backend/src/data/*.json site/data/
python -m http.server 8000 --directory site
Open http://localhost:8000 and try EMP1001.
Prerequisites: an AWS account, the AWS CLI (aws configure) and the AWS SAM CLI. Optional: a free Gemini API key from Google AI Studio.
cd backend
sam build
sam deploy --guided # stack name: athena-onboard; paste the Gemini key when asked (or leave empty)
Then put the ApiUrl output into frontend/config.js and push; GitHub Actions republishes the UI.
Cost: Lambda and DynamoDB stay within the AWS free tier at demo traffic; the API is throttled and plan generation is limited to 2 concurrent runs. Set an AWS budget alert anyway.
backend/
template.yaml SAM template (API, Lambdas, DynamoDB)
src/
get_employee_details.py GET /employees/{id}
generate_plan.py POST /plans
review_plan.py GET / PUT /plans/{id}
send_email.py POST /plans/{id}/send
llm.py Gemini text + embeddings, cosine similarity, offline fallback
common.py responses, data loading, DynamoDB + audit helpers
data/ synthetic employees and training catalogue
frontend/ single-page UI (index.html, app.js, mock-api.js, styles.css, config.js)