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

01
  1. Import 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

02

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.

Source tiers and how they are currently decided
TierDefinitionHow it is decided todayCount today
Tier 1 — issuing agencyA page published by the agency that issues the ruleNeeds a per-source human label; that field does not exist yetHostname ends in .gov.tw / .gov.taipei31 across government domains
Tier 2 — other government bodyAnother government body restating the same thingNeeds a per-source human label; that field does not exist yetAs above — a domain cannot separate tier 1 from tier 2
Tier 3 — university or operatorA university or a service operator's own explanationHostname 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 say6 on university domains, 4 on other domains (www.cht.com.tw, www.easycard.com.tw)
Tier 4 — communityA forum, a blog, or a community compilationNeeds a per-source human label; that field does not exist yetNot labelled
Plainly: each source record currently stores a name and a URL and nothing else, so the tiers above are derived from the hostname rather than assigned by a person. That means we cannot currently separate tier 1 from tier 2, and we do not yet record the revision date each source publishes for itself.

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.

03

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.

Review cycle by risk level
Risk levelReview cycleTasks today
RiskHigh90 days11
RiskMedium180 days4
RiskLow365 days1
WarningAll 16 tasks currently share the verified date 2026-07-20, because there has been exactly one complete human review pass. We deliberately did not scatter it into different per-task dates to look fresher — that is precisely the fabrication this product exists to prevent.

As of 2026-09-17: 16 within their cycle, 0 due soon, 0 past the review date.

04

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.

Risk definitions and the current distribution
LevelDefinitionTasks today
RiskHighGetting it wrong risks your legal status, money you cannot recover, or your health — overstaying, unauthorised work, fraud loss, a missed tax deadline.11
RiskMediumGetting it wrong costs a wasted trip, a re-application, or an extension request.4
RiskLowRecoverable 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

05
WarningThe conclusion first: this site calls no generative language model. The “AI” in the code is two rule-based functions, both on the admin side, and neither can publish anything.

1. 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

06

The 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.

The verification dates printed on this page belong to the Traditional Chinese and English editions. Pages in the other interface languages print no verification date.

Corrections

07

If 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

08

The 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]

Back to About us