Veritap docs
v1.0.0
Get help
● Set up

Console guide
every section, in order.

The operator console at /admin is where you run the service: which outside services are on, how much each install may check per day, what the app says after a verdict, and what it all costs you. It is the MIKODES Admin Kit, built into the server.

/adminowner · manager · vieweraudit log

01Signing in and roles

Open https://your-server/admin and sign in. The first account is the owner, created with the one-time setup code (see Installation). The owner can invite more people under Team with one of three roles:

RoleCan do
OwnerEverything, including provider keys, provider addresses, the research provider and assistant API type, store keys and inviting people.
ManagerDay-to-day settings and content, and Test connection. Cannot change keys, provider addresses or the provider choice.
ViewerReads every page, changes nothing.

Every change is written to the audit log with who made it and what changed. Saved keys are write-only: you can replace or test them, but the console never shows them again.

02The sidebar, group by group

GroupItems
OverviewOverview (metrics and revenue tiles)
SetupGet started · Brand · Legal · Link reputation (Web Risk) · Domain age (RDAP) · Published fact checks · Cited web research · AI media signals (Sightengine) · Seen elsewhere (Vision) · Content Credentials · Speech to text
MoneyPlans · Ads · Store
ProductAssistant · Media caps and thresholds · Privacy
ContentTrends · Playbooks · Alerts · Lessons
SystemNotifications · Security & alerts · Export / Import
MonitorUnit prices · Installs · Reported answers · Costs · Revenue · Status · Audit log · History
TeamTeam

03Setup: one section per outside service

Each outside service has its own section with an on/off switch, its key fields and, where a key is needed, a Test connection button. Every service starts off, except Content Credentials, which runs on your server. While a service is off or missing a key, the checks that need it are listed in the app as not checked.

SectionWhat it powersPage
Link reputation (Web Risk)Phishing, malware and unwanted-software lists for linksWeb Risk
Domain age (RDAP)When a link's domain was registeredRDAP
Published fact checksFact checks about a claimFact Check Tools
Cited web researchWeb research with cited sources for a claimWeb research
AI media signals (Sightengine)AI-made, face-swap and AI-speech scoresSightengine
Seen elsewhere (Vision)Pages where an image appearsCloud Vision
Content CredentialsOrigin data inside images and videosContent Credentials
Speech to textTranscripts of voice messages and video soundSpeech to text

Test connection makes one small, fixed call and keeps the result for the Status page. It can run once per service every 10 seconds; it is refused on a demo server.

Addresses and keys belong together

Where a service lets you set its address (base URL) or choose a vendor, only the owner can change it, and changing it clears the saved key, in the same save, with an audit entry. Provider addresses must be https on a public address; this is checked when you save and again before every call. A key is never sent to an address or vendor it was not entered for. Importing settings or rolling back a version follows the same rules.

Brand holds the product name, tagline, accent colour, logo, support e-mail and website the server uses. Legal holds the links to your privacy policy and terms.

04Product: assistant, media caps, privacy

  • Assistant. The language model on your own account: API type (Chat Completions for compatible providers and local models, or the Messages API), address, model, an optional model for Pro installs, the key, the provider name shown to users, extra instructions and a daily cap over all installs (default 5,000; 0 = no cap). The same model also reads messages, pages and screenshots, finds claims and writes summaries. See Language model.
  • Media caps and thresholds. The largest image (default 12 MB, at most 20), audio file (20 MB, at most 25) and its length (300 s, at most 600), video (100 MB, at most 200) and its length (60 s, at most 60), and pasted text (20,000 characters). Larger uploads are refused before any provider is called. Two scores decide the authenticity label: at or above the Likely score (default 0.80) the label is "Likely AI-made or altered"; when every score is at or below the No signs found score (default 0.20) it is "No signs found"; in between it is "Unclear". The Likely score must be higher than the other. See Uploads.
  • Privacy. How long a check result stays on the server (default 24 hours, from 1 to 720) and how long a shared verdict page stays up (default 30 days, from 1 to 365). See Privacy.

05Money: plans, store, ads

Plans. The Pro plan switch (off by default) and the daily limits per install:

Per install and dayFreePro
Light checks (links, messages, e-mails, QR codes, screenshots: one each)10200
Media units (an image is 1, audio 1 per started minute, video 10 per started 30 seconds)230
Claim checks120
Assistant messages10200

Three caps over all installs together limit your provider bills: light checks 50,000, media units 5,000 and claim checks 2,000 per day (0 = no cap). Limits start again at midnight UTC; the app shows the local time. With the default plan limits a Free install has 10 media units a day, enough for one video of up to 30 seconds (a video costs 10 media units per started 30 seconds, an image 1, audio 1 per started minute).

Store. Pro is a subscription sold through Google Play and the App Store; the stores set the price and collect the money. The app offers Pro on a platform only when the Pro switch is on and that platform's product ids are set here. Fields:

  • Pro product ids for Google Play and for the App Store: the subscription ids you created in each store.
  • Android package name and iOS bundle id: your app's ids (see Rename guide). Purchases and notifications for any other app are refused.
  • Google Play service account JSON (owner only): a Google Cloud service account invited in Play Console under Users and permissions with "View app information" and "Manage orders and subscriptions"; add "View financial data" so the Revenue page shows the amount paid.
  • Real-time developer notifications: the push audience and the service account e-mail of your authenticated Pub/Sub push subscription to https://<your server>/v1/store/google-rtdn. Empty: notifications are refused and Pro follows the verified expiry only.
  • App Store Server API key id, issuer id and private key (.p8), optional (owner only): with all three, every purchase is also confirmed with Apple's server API.

The app never decides a purchase itself: it sends every purchase to the server, and only the server's answer turns Pro on. Step by step for both stores: Deployment, Pro subscriptions.

Ads. The switch, the AdMob app ids and the banner unit ids for Android and iOS, all off and empty by default. In the app, a banner can appear only on the History and Learn screens, never on a verdict, the intake, the assistant or a playbook, and never for Pro installs.

The app is ads-ready; no ad package is included

Version 1.0.0 ships the banner slot and the console settings, but no ad SDK and no ad consent form, so no banner is shown even with ads switched on. To show ads, add an ad package and its consent flow to the app and pass a banner builder to Ads(banner: …) in app/lib/main.dart. The banner then shows only after the person's ad consent and while the console sends a banner id for that platform. The console's own help text says "settings screen"; the app places banners on History and Learn.

06Content: trends, playbooks, alerts, lessons

  • Trends. The minimum sample (default 50 opted-in checks in 7 days, at least 20) and the minimum number of different installs on one day of the 7 (default 10, at least 5) before the app shows any trend. See Trends privacy.
  • Playbooks. What the app tells a person to do after a verdict, per scam type and language: steps and official contacts. Twelve playbooks ship in English, Slovak and Czech, each contact pinned to its official source page. Edit them for your country and customers; you can always go back to the shipped text.
  • Alerts. Notices you publish on the app's home screen, per language. None ship with the product.
  • Lessons. The lessons and quizzes of the Learn screen, per language. Ten ship in each language.

07System: notifications, security, export

Notifications is where the console sends its own alerts: a webhook address and its signing secret. The console signs every alert it sends there. Security & alerts holds your two-factor authentication, the places you are signed in, the team rule and the alert settings. Export / Import downloads the settings as a file and loads them back; keys are never in the export, and an import that moves a provider address clears that provider's key.

08Monitor: installs, costs, status

  • Unit prices and Costs. You enter what one light check, media unit, claim check and assistant message costs you; the Costs page multiplies today's and this month's counts by those prices. It is your estimate, not a bill. See Costs.
  • Installs. App installs registered with your server: plan, activity and usage today. Installs are random ids; the app has no user accounts.
  • Reported answers. Assistant answers people reported from the app with "Report this answer", for your review.
  • Revenue. Pro subscriptions, gross, from verified store transactions.
  • Status. Whether the secret key comes from the environment, each provider is configured and tested, ffmpeg and ffprobe are installed, the Content Credentials reader works, the Node.js version, PUBLIC_BASE_URL is set, the assistant is configured, ad ids are set when ads are on, and store verification is set when Pro is on. Status never calls a paid provider: it shows the last Test connection result.
  • Audit log and History. Who changed what, and earlier versions of the settings you can roll back to.

09Finding your way

The console opens with Overview. Get started in the Setup group walks a new owner through the first settings. Every section page shows its group as a small heading above the title, so the table in The sidebar, group by group tells you where each setting lives. Press ⌘K (Ctrl+K on Windows and Linux) to jump to a section, save or discard changes, or re-run the status checks.