OpenChart
Claude·Codex와 함께하는 무료 데스크톱 차트 도구. 알림 설정·차트 움직임 분석·데이터 제공자 선택
필리핀 중소기업을 위한 무료 급여 계산기로 13번째 월, 휴일수당, 최종 급여 및 사회보장·건강보험·주택기금 등을 공식 규칙에 따라 계산합니다
Free payroll calculators for Philippine small businesses: 13th month, holiday pay, final pay and SSS, PhilHealth, Pag-IBIG, with the official rule behind every amount.
금융GitHub @Zebbb01온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Payroll answers for Philippine micro-businesses: exact amounts from tested Python, the official rule quoted beside every result. FastAPI + multilingual embeddings + LanceDB hybrid search.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live: https://zebbb01--tamang-sahod-web.modal.run (the first visit after a quiet spell takes about 5 seconds to wake)
Payroll answers for Philippine micro-businesses. An owner asks in English or Taglish, or opens one of five calculators, and gets the exact peso amount together with the official rule it follows, quoted word for word.
Owners of businesses with 1–20 staff run payroll by hand or in Excel. What a worker is owed on a holiday, in 13th month pay, in final pay, or in SSS, PhilHealth and Pag-IBIG contributions is spread across DOLE advisories, a Presidential Decree and three agencies' circulars that change every year. Owners guess. A wrong guess underpays a worker or ends in a DOLE complaint.
question ─┬─> multilingual embeddings ─> LanceDB (vector + full-text, rank fusion)
│ └─> not-covered check ─> quoted rule passages, or "not covered"
│
└─> LLM, optional ─> {topic, fields} ─> validated ─> pre-filled form
│ owner checks
v
Python calculator (Decimal, dated rate tables) ─> amount + rule + source
The AI never does the math. Language models are good at reading "pumasok siya noong Dec 30, 645 ang daily" and bad at arithmetic, so the model only fills in a form. The owner confirms every field, and tested code computes the pesos. The model's reply is treated as untrusted input: unknown topics, fields and out-of-range values are dropped.
Rates are data with an expiry. Every rate lives in data/rates.toml with its source
and the last date it was verified. A pay date outside every verified period is refused
("No verified SSS rates for January 2027 yet"), never computed with an old rate.
Everything the owner types travels in a POST body, so amounts and questions never land in URLs, access logs or analytics. Nothing is stored.
| Measure | Target | Result |
|---|---|---|
| Calculators vs official worked examples | 100% | all pass (pytest, 108 tests) |
| Right rule in top 3 results | ≥ 90% | 96% (44/46) |
| Out-of-scope questions refused | ≥ 19/20 | 20/20 |
| In-scope questions answered, not refused | — | 41/46 |
| Question-to-form extraction | ≥ 90% | not yet run: needs GROQ_API_KEY |
| Running cost | ₱0 | Modal Starter without a card: $1 of compute a month |
Measured 12 October 2026 with python -m evals.run, locally and in CI. Two caveats. The 46 in-scope and 20
out-of-scope questions are a seed set written by the builder, half in Taglish; real
questions from the beta will replace them. And the list of not-covered topics was written
after seeing which probes slipped through, so 20/20 is optimistic until it is re-measured on
questions it has not seen.
Worked examples come from the DOLE-BWC Handbook on Workers' Statutory Monetary Benefits
(₱184,219.96 ÷ 12 = ₱15,351.66; 5.833 days × ₱610 = ₱3,558.13), the SSS 2025 contribution
table, PhilHealth Advisory 2025-0002, Pag-IBIG Circular 460 and DOLE Labor Advisory 12-25. Every source, with where
it was fetched from, is listed in data/sources.toml and on the site's Sources page.
uv sync
uv run python -m app.search # downloads the embedding model (~220 MB), builds the index
uv run uvicorn app.main:app --reload # http://127.0.0.1:8000
uv run pytest
uv run playwright install chromium # once: the browser for the browser tests
uv run pytest e2e # browser tests (Playwright) against a live server
uv run python -m evals.run # retrieval and not-covered evals
uv run python -m evals.run extract # extraction eval, needs GROQ_API_KEY
Optional settings: GROQ_API_KEY (question-to-form), GROQ_MODEL (default
openai/gpt-oss-20b), GOATCOUNTER_CODE (cookieless visit counts).
Gitflow: main holds released code, develop collects finished work. New work starts with
git flow feature start <name> and merges back into develop once uv run pytest and
uv run pytest e2e pass; releases go through git flow release start <version>. CI runs
the unit tests, the evals and the browser tests on every push.
Modal, from modal_app.py:
uv run modal token new # once: approve in the browser
uv run modal deploy modal_app.py
The image installs the locked dependencies and builds the search index at build time; there
is no database. Without a card, the Starter plan gives $1 of compute a month, so the app runs
on half a CPU and scales to zero two minutes after the last request: roughly 30 warm hours a
month, after which it stops until the next month. Measured on 12 October 2026: 4.7 s to wake,
6.8 s for the first question after waking (the embedding model loads), under a second after
that. The Dockerfile serves the same app on any container host.
A guide, not legal advice. Design and goals: docs/superpowers/specs/2026-09-28-tamang-sahod-design.md.