How we verify
我們如何查核內容
How sources are tiered, how the verification dates are calculated, what the risk levels mean, what the AI in this project does and does not do, and how to report an error.
On this page (8)
The only thing this site sells is being able to show its working. So the method has to be inspectable, including the parts we have not built yet. Everything below describes behaviour that exists in the code.
How a page is made
01Import an official source
An administrator pastes a URL. The importer accepts https only, refuses private and loopback addresses, follows at most 3 redirects, accepts only HTML or plain text, reads at most 1 MB and 100,000 characters, and times out after 10 seconds. The endpoint is admin-only.
Rule-based draft extraction
The source text is split into a title, audience, dates, a document list, steps and a contact by fixed rules. This step is not a generative model; the next section says exactly what it is. Every draft is flagged as requiring human review.
Human review
A person compares the source with the draft and decides, claim by claim, what to accept, edit or reject. Nothing that fails this gate reaches a public page.
Publish
Reviewed content is written into the approved content files in version control. Public pages read only those files. There is no automatic path from a draft to a published page.
Label
The page shows the date it was last checked, the next review date derived from its risk level, and the official sources it cites.
Report and re-check
A reader reports a problem, an administrator resolves it and an audit record is written, the sources are checked again, and the verification date is updated. Confirming that content is still correct is itself a legitimate update.
Source tiers
Tiers exist so you can tell at a glance whether a statement comes from the agency that issued the rule or from somebody restating it. The lower the tier, the less it can carry a rule on its own.
| Tier | Definition | How it is decided today | Count today |
|---|---|---|---|
| Tier 1 — issuing agency | A page published by the agency that issues the rule | Needs a per-source human label; that field does not exist yetHostname ends in .gov.tw / .gov.taipei | 31 across government domains |
| Tier 2 — other government body | Another government body restating the same thing | Needs a per-source human label; that field does not exist yet | As above — a domain cannot separate tier 1 from tier 2 |
| Tier 3 — university or operator | A university or a service operator's own explanation | Hostname ends in .edu.twAny domain that is neither government nor a university; whether it is an operator or a community page needs a human to say | 6 on university domains, 4 on other domains (www.cht.com.tw, www.easycard.com.tw) |
| Tier 4 — community | A forum, a blog, or a community compilation | Needs a per-source human label; that field does not exist yet | Not labelled |
4 of 16 tasks currently cite no government-domain source at all — only university or operator pages. Most of those are matters each school or operator sets for itself, and the page says so under its classification; by our own rule this is still a gap to close.
Verification dates
Next review date = last verified date + a cycle set by risk level. Within 14 days of that date a page says the review is due soon; past it, the page says so in a warning rather than in small grey type.
Note what is derived and what is not: the next review date is calculated, the last verified date is always the day a person actually checked.
| Risk level | Review cycle | Tasks today |
|---|---|---|
| RiskHigh | 90 days | 11 |
| RiskMedium | 180 days | 4 |
| RiskLow | 365 days | 1 |
As of 2026-09-17: 16 within their cycle, 0 due soon, 0 past the review date.
Risk levels
Risk describes the consequence of getting it wrong, not how hard the task is. It is shown as dots plus a word, never as colour alone.
| Level | Definition | Tasks today |
|---|---|---|
| RiskHigh | Getting it wrong risks your legal status, money you cannot recover, or your health — overstaying, unauthorised work, fraud loss, a missed tax deadline. | 11 |
| RiskMedium | Getting it wrong costs a wasted trip, a re-application, or an extension request. | 4 |
| RiskLow | Recoverable the same day at no cost. | 1 |
The distribution today is 11 high, 4 medium and 1 low across 16 tasks. When most tasks are labelled high, the label stops carrying information; recalibrating against the definitions above is work we have not finished.
AI and the human gate
051. Draft extraction (draftFromSource)
The input is the plain text of an imported announcement. Fixed rules pull out the fields: the first line becomes the title; keyword matching finds the audience, a date or deadline, and a contact; list items under the “required documents” and “steps” headings become those lists; every field is length-capped.
It does not rewrite sentences and it does not add anything the source does not contain. If a field is not found, it stays empty.
Risk is always set to medium at this stage; a human assigns the real level against the definitions above.
The return value always carries the “requires human review” flag. No input can make it false.
2. Question answering (answerFromApprovedContent)
It retrieves from already-approved content and generates no new claims.
A question passes three keyword rules first. Anything touching document numbers, passwords or verification codes, and anything we have no basis for — a scholarship outcome, a guarantee, what will happen next year — returns “not enough information”. Anything legal, medical, visa-eligibility or emergency related returns “high risk, use an official channel”. Only what is left returns approved content.
In other words, it is built to say it does not know rather than to guess.
Access gates
- The draft endpoint (POST /api/ai/draft) requires a signed-in administrator and an explicit consent flag on the request; anything else is rejected with a 400.
- The answer endpoint (POST /api/ai/answer) requires a signed-in account.
- The source import endpoint (POST /api/source/web) requires an administrator.
- Public pages read the approved content files, which are written to version control only after content review. There is no automatic path from a draft to a public page.
Limits of this section today
- Human review currently happens by editing the approved content files in version control. The side-by-side source-versus-draft review screen does not exist yet.
- Pages do not yet carry a per-page content-state badge saying whether a page was AI-assisted or written by hand.
Language coverage
06The language of the interface and the language of the content are two different things. This section separates them.
- Interface languages
- 中文EnglishBahasa IndonesiaTiếng Việt
- Content languages
- 中文English
Interface strings are the navigation, the buttons, the field captions, the section headings and the empty states. The Indonesian and Vietnamese interface strings have not yet been read by a native speaker; the review list is in the repository's content-review directory.
The 16 tasks have cleared human content review in Traditional Chinese and English only. An Indonesian or Vietnamese page shows a machine translation of that English edition which no native speaker has read; every such page says so before it shows the content, and prints no verification date.
Why these four
- The Ministry of Education publishes open data on international-student numbers per institution, as a row-level file. This site's author aggregated that file to get a nationality breakdown for this university. NTUST publishes no such breakdown, so this is our own aggregation, not a figure the university released.
- The method: filter the ministry's row-level file to this institution's degree-seeking rows, total them by nationality, and sort. This page quotes no headcount — that aggregation has not been re-derived here, and we do not repeat a number we have not re-checked.
- What decides a language is not the headcount by itself but whether an existing edition is readable. Among the largest groups, Indonesian and Vietnamese students are neither Chinese-reading nor studying through English, so each added interface language adds readers.
- The languages left out were left out for reasons too: groups that are mostly 僑生 already read Chinese; groups that study through English already have the English edition; and where a country has single-digit degree enrolment, an interface language adds no reader.
What we do not do
We do not publish UNLABELLED machine translation of guidance on residency, health insurance, tax or medical care. When one of those pages is translated wrongly the cost is a missed legal deadline, and the reader has no way to detect it. The Indonesian and Vietnamese editions ARE machine translations today, so each of those pages states it before the content: produced by AI, not yet read by a person, verification record held by the Chinese and English editions — with links to both reviewed editions and to the cited sources. Until a native speaker has reviewed them, those pages stay noindex.
Corrections
07If something is wrong, out of date, or different from what you were told at the counter, report it. This is our main way of finding content that has drifted.
A report is stored with an open status. When an administrator resolves it, an audit record is written saying who resolved which report and when.
Limits today
- Reporting requires a signed-in account and a note of at least 10 characters.
- The audit trail is currently visible only in the admin area; the public changelog page is still being built.
- We do not promise a response time. Better to say that than to publish a number we cannot keep.
Licence and contact
08The content is compiled from public official sources; keep the source links when you quote it. Our own licence terms and contact address are not decided yet — the fields below are unfilled.
- Content licence
- [TO FILL: content licence]
- Corrections and contact email
- [TO FILL: contact email]