All posts

BaoHost / Engineering

How I use AI to help review accounts at BaoHost

Combining rules, AI analysis, and staff review to protect a game server hosting platform without treating every suspicious signal as proof.

Why account review matters

Running BaoHost means looking after more than Minecraft servers. Free hosting gives people a way to start playing with friends, but it also attracts repeated registrations, attempts to get around account restrictions, and abuse of shared resources. Account review is part of keeping that service usable for everyone.

The difficult cases are rarely explained by one signal. Several accounts can belong to one person, or to different people using the same network. A suspicious-looking connection can be relevant without proving who is behind it. We use AI to help interpret that context alongside our existing rules.

A layered review workflow

Our panel combines conventional detection with an AI analysis service backed by Azure. Rules identify activity that needs attention. The application gathers the relevant account context, and the AI returns a structured assessment for the backend to process.

Account review, at a glance

AI recommends. Application code controls the action.

Context matters more than a single signal

The analysis looks at relationships between accounts, network and device context, and activity over time. Its job is to help explain whether several observations fit together, including whether there is a plausible legitimate explanation.

A shared connection is a useful example. People at home or on a campus may appear behind the same public address. Treating that address alone as an identity would make review unnecessarily blunt. The AI instructions ask it to consider legitimate shared networks and uncertainty when assessing a case.

That does not make the model infallible. Its explanation is another piece of review information, and staff still need to examine the underlying evidence. A confident sentence can be wrong.

Recommendations the backend can check

Instead of asking for an open-ended chat response, we request a structured result. It contains a recommendation to suspend, retain for manual review, or dismiss the concern, together with a confidence value, a summary, and relevant indicators.

The application checks that the recommendation is one it recognizes and restricts target accounts to the candidate set being evaluated. The model does not get unrestricted access to choose arbitrary accounts or execute panel actions.

The confidence value is a model-generated assessment, not a measured probability that an account has broken the rules. We use it as one input to the configured decision process rather than presenting it as proof.

Automation has to stay bounded

This is not an entirely manual workflow. The implementation supports automatic suspension when an AI recommendation passes the configured checks and automation is enabled. Cases that do not meet those conditions remain available for staff review.

The action layer also has execution limits, a dry-run mode, and checks designed to stop an older queued assessment from overriding a newer staff resolution. These controls live in application code, outside the prompt.

That separation matters: changing the wording of a model response should not give it new permissions. An AI recommendation and an account action are separate stages with different responsibilities.

Service failures and appeals need a review path

If the AI service is unavailable or returns an unusable result, the analysis falls back to manual review. That failure should not become an AI-driven suspension. Other account rules still operate independently, so this fallback is not a promise that every account is automatically approved.

We also use AI to assist with appeal triage by summarizing an explanation against the recorded flags and review context. A summary can help staff understand a case, but it does not make the underlying account history irrelevant.

User-written explanations are untrusted input. Instructions in a message are not authorization to approve an account. Prompts describe that boundary, while backend permissions and validation remain essential; prompting alone cannot guarantee that a model will never be manipulated.

What this post leaves out

This is an overview of the review architecture, not a guide to the detection rules. I have left out operational thresholds, exact matching logic, internal prompts, and real account records. The example of a shared network above is illustrative, not a published user case.

Any use of account context for AI analysis also deserves care around what information is sent, who can access the result, and how long it is retained. Adding a model does not remove those responsibilities.

What I am learning from building this

The most useful part of AI in this workflow is its ability to turn a collection of signals into an explanation that can be examined. The surrounding engineering is just as important: validating outputs, handling failed requests, limiting actions, and preserving the ability to review a decision.

I am not claiming a measured reduction in fraud or a particular accuracy rate here. Those claims need evaluation against reviewed cases. What this implementation provides is a layered way to investigate abuse, with explicit places for uncertainty and operational control.