Project Info
Inspiration
Writing a strong self-introduction or interview answer is difficult because people often know what they did, but struggle to explain the context, evidence, and impact clearly. We wanted to create a career-writing tool that helps applicants improve their own stories without replacing their voice with generic AI text. Bomti was inspired by the idea of an AI career editor: a tool that points out vague claims, missing evidence, and weak connections between actions and results, then gives practical directions for revision.
What it does
Bomti analyzes self-introduction and interview answers against five dimensions: Context fit Specificity Evidence and credibility Generic or cliché expressions Tone and readability Users enter a question, their answer, target role, and optional company context. Bomti returns an overall score, dimension-level feedback, supporting sentence evidence, and concrete improvement directions. Guest users can try the diagnostic flow with limited usage. Logged-in users can save, review, and delete their evaluation history.
How we built it
We built Bomti with Next.js, React, and TypeScript. The interface is designed as a calm editorial workspace, with a dedicated landing page, diagnostic form, results dashboard, history page, and account settings page. For persistence and privacy-sensitive data handling, we designed the project around Supabase and PostgreSQL with row-level security policies. The project includes database migrations, generated database types, fixtures, and integration checks for tenant isolation and account deletion behavior. We also built automated checks for: Input validation and consent requirements Guest limits and provider failure states XSS-safe evidence rendering Saved evaluation history and deletion flows Account deletion lifecycle behavior Responsive layouts and accessibility Score boundaries from 0 to 100
Challenges we ran into
The biggest challenge was balancing useful feedback with privacy and user control. Career answers can contain personal experiences, employer information, and sensitive context, so we designed the flow to avoid treating the user’s original answer as disposable training data. Another challenge was making the interface feel helpful rather than judgmental. A score alone is not actionable, so we paired every result with dimension-level explanations, evidence references, and revision directions. We also had to keep the UI redesign aligned with the product’s existing behavioral contracts. As the experience evolved from a single evaluation form into separate landing, diagnosis, result, history, and account screens, we updated browser tests to verify submissions, cancellations, XSS protection, deletion, and responsive behavior end to end.
What we learned
We learned that trustworthy AI writing tools need more than a polished result screen. They need clear consent, transparent limits, safe failure states, and a way for users to control their data. We also learned how valuable automated visual and accessibility checks are during UI iteration. They helped us preserve keyboard access, score-meter semantics, responsive layouts, and user-facing flows while making large design changes.
What's next
for Bomti Next, we want to add more role-specific feedback, richer revision workflows, and a production deployment with a fully configured authentication and Supabase environment. Our goal is to make career writing feel less like guessing what recruiters want and more like clearly communicating real experience.
Bomti
Bomti는 취업 준비생의 자기소개서 답변이 질문·직무·회사 또는 공고 맥락에 비해 얼마나 상투적이거나 과장됐는지 판단하는 한국어 웹 서비스다. 답변을 대신 작성하지 않고, 높은 점수일수록 더 밤티인 0–100 지수와 근거 문장·설명·개선 방향을 제공한다.
현재 구현 기준
승인된 요구사항은 요구사항 원장에, 변경 불가한 실행 제약은 Handoff와 승인 계획에 있다. 지금은 계획 순서에 맞춰 로컬 검증 기반부터 구현 중이며, 실제 배포·Google OAuth 설정·유료 모델 호출·외부 데이터 import·push/PR은 별도 운영자 승인이 있어야만 실행한다.
사용자 경험
- 사용자는 질문, 답변, 목표 직무, 회사/공고 맥락을 입력한다.
- 모든 필수 동의를 직접 선택한다.
- 입력은 문장 세그먼트화와 가명처리를 거친 뒤에만 모델로 전달된다.
- 결과는 Bomti 지수, 다섯 위험 차원, 문장 근거, 설명, 제한된 개선 방향을 보여 준다.
- 비로그인은 하루 한 번의 비영속 미리보기를 받고, Google 인증 사용자는 캠페인당 세 번의 상세 평가와 삭제 가능한 이력을 가진다.
공개 서비스는 답변 하나를 평가한다. 답변 쌍 비교와 사람 평점은 익명 내부 벤치마크 보정에만 사용하며 공개 기능이나 관리자 대시보드가 아니다.
안전 경계
- 동의 → 세그먼트화·가명처리 → 모델 전송 순서를 바꾸지 않는다.
- 원문은 로그, DB, 증거에 저장하지 않는다.
- 공급자 장애·예산 부족·검증 실패 시 다른 유료 모델로 자동 대체하지 않는다.
- 실제 공급자, OAuth, Supabase, Vercel의 변경은 운영자 입력과 명시적 승인이 있을 때만 가능하다.
로컬 시작
npm ci
npm run typecheck
npm run lint
npm run test -- --run
npm run build
세부 계약, 예정된 API/화면, 증거 규칙은 docs/requirements.md를 따른다.
Analysis
View
Metric
- 37
- 36
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- TypeScriptIn code
- VercelIn code
- HTMLClaimed
- Node.jsClaimed
- PostgreSQLClaimed
7 of 10 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
684 KB
Source files
138
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
yt010108/bomti
183 files · 1.1 MB · @ 24c89eb
Structure
Interface
23 files · 13%Screens, components and styles rendered to the user.
+1 moreAPI & routing
12 files · 7%Request entry points: routes, handlers and controllers.
Application logic
46 files · 25%Domain rules, services and shared utilities.
+4 moreData & schema
7 files · 4%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript65%
- Markdown22%
- SQL8%
- CSS4%
- YAML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 19- next
- react
- react-dom
- zod
- +15 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.