ARGUS Documentation

Complete reference for the ARGUS algorithmic authenticity analysis platform. Setup, API, detection methodology, and deployment.

Overview

ARGUS analyzes any social media profile or post across LinkedIn, Reddit, Instagram, X, and Facebook and returns a trust score (0–100) with full reasoning. Flagged profiles get a public landing page indexed by Google. All analysis is framed as algorithmic opinion — not a verdict. Profile owners can dispute at any time.

Every page that goes live has been reviewed and approved by a human.

Setup & Deploy

1. Prerequisites

npm install -g wrangler
wrangler login

2. Create Cloudflare Resources

# D1 database
wrangler d1 create argus-db

# R2 buckets
wrangler r2 bucket create argus-evidence-vault
wrangler r2 bucket create argus-screenshots

# KV namespaces
wrangler kv:namespace create SCORE_CACHE
wrangler kv:namespace create RATE_LIMITER
wrangler kv:namespace create SESSION

# Queues
wrangler queues create argus-analysis-queue
wrangler queues create argus-notify-queue

3. Update wrangler.toml

Paste the IDs from step 2 into wrangler.toml.

4. Initialize Database

wrangler d1 execute argus-db --file=./schema/d1_schema.sql

5. Set Secrets

wrangler secret put ADMIN_SECRET_KEY      # Your private admin key
wrangler secret put HIVE_API_KEY          # hive.ai free tier
wrangler secret put GPTZERO_API_KEY       # gptzero.me free tier
wrangler secret put SEARCH_CONSOLE_KEY    # Google Search Console
wrangler secret put EMAIL_API_KEY         # Resend or Cloudflare Email

6. Deploy

# Deploy Worker API
wrangler deploy workers/api/index.js

# Deploy Pages frontend
cd pages && npm install && npm run build
wrangler pages deploy .next

Public API Endpoints

POST /api/analyze
Submit any URL for analysis. Rate limited: 10 req/IP/hour.
ParameterTypeRequiredDescription
urlstringYesProfile URL to analyze
enginesarrayNoEngines to run: image, text, behavioral, network, or all
notify_emailstringNoEmail for completion notification
POST /api/submit
Community submission. Goes to admin approval queue. Rate limited: 5 req/IP/hour.
GET /api/score
Quick score lookup for browser extension. Returns cached result or auto-queues analysis.
ParameterTypeRequiredDescription
platformstring*Platform: linkedin, reddit, instagram, x, facebook
handlestring*Profile handle/username
urlstring*Full profile URL (alternative to platform+handle)
POST /api/dispute
Submit a dispute or opt-out request.
POST /api/report
Community flag for an existing profile.
GET /api/profile/:platform/:handle
Public profile data for approved/published profiles.

Admin API Endpoints

All admin endpoints require the X-Admin-Key header.

GET /api/admin/queue
Pending submissions awaiting review.
POST /api/admin/approve
Approve a submission — publishes page, triggers Google indexing, notifies submitter.
POST /api/admin/reject
Reject a submission.
POST /api/admin/dispute/resolve
Resolve a dispute — approve (remove page) or reject (keep page).
GET /api/admin/disputes
Pending disputes awaiting review.

Detection Engines

Image Engine (20% weight)

CheckToolDetects
GAN ArtifactsHive AIAI-generated faces, StyleGAN artifacts
C2PA ProvenanceC2PA SDKMissing Content Credentials, origin verification
Reverse ImageSerpAPIStock photos, cross-platform image reuse
EXIF MetadataExifToolStripped metadata, inconsistent camera data

Text Engine (15% weight)

CheckToolDetects
AI Text ProbabilityGPTZeroAI-generated text across bio and posts
Stylometric VarianceCustomUnnaturally consistent writing style
Agenda ConcentrationCustomSingle-topic content farming
Linguistic PatternsNLPNon-human linguistic markers

Behavioral Engine (30% weight)

CheckDetects
Account Age vs. ActivityNew accounts with disproportionate activity
Digital FootprintZero pre-account digital presence
Posting Time PatternsRobotic posting intervals
Personal Content RatioAbsence of personal/casual content

Network Engine (35% weight)

CheckDetects
Connection Age DistributionNetworks of predominantly new accounts
Flagged Account ClustersConnections to previously flagged profiles
Coordinated BehaviorSynchronized posting patterns across accounts

Scoring Methodology

The final trust score is a weighted aggregate of all engine scores.

Score RangeVerdictMeaning
0 – 25CriticalMultiple high-severity signals across engines
26 – 40High RiskSignificant anomalies in at least two engines
41 – 60Medium RiskSome suspicious signals; review recommended
61 – 100Low RiskNo significant authenticity concerns detected
Weight Distribution
Network (35%) > Behavioral (30%) > Image (20%) > Text (15%). Network analysis carries the highest weight because coordinated inauthentic behavior is the strongest indicator of fake account networks.

Database Schema

ARGUS uses Cloudflare D1 (SQLite) with six tables:

TablePurposeKey Fields
profilesAnalyzed accountstrust_score, signals, risk_level, slug, status
disputesOpt-out/challenge requestsevidence_tier, status, resolution
submissionsIncoming analysis queueadmin_status, profile_id
networksCoordinated account clusterscoordination_score, account_count
network_membersProfile-to-network junctionnetwork_id, profile_id
community_reportsCrowdsourced flagsprofile_id, report_reason

Full schema: d1_schema.sql on GitHub

Cloudflare Services

ServiceBindingPurposeFree Tier
D1DBSQLite database5 GB + 25M reads/day
R2EVIDENCE_VAULT, SCREENSHOTSImmutable evidence archive10 GB + 10M ops/month
KVSCORE_CACHE, RATE_LIMITER, SESSIONScore cache + rate limiting100K reads/day
WorkersAPI + pipeline orchestration100K req/day
QueuesANALYSIS_QUEUE, NOTIFY_QUEUEAsync job processing1M messages/month
PagesFrontend hostingUnlimited

Browser Extension

ARGUS includes a Chrome MV3 extension that injects trust badges directly onto social media platforms as you browse.

Supported Platforms

Installation

  1. Clone the repository: git clone https://github.com/itallstartedwithaidea/argus.git
  2. Open Chrome → chrome://extensions
  3. Enable Developer Mode (top right)
  4. Click “Load Unpacked” → select the extension/ folder

How It Works

The content script uses MutationObserver to detect dynamically loaded profile cards on SPAs. When a profile is found, it queries /api/score for the trust score. Profiles with scores below 75 get a color-coded badge injected next to the profile name. Clicking the badge opens the full analysis page.

ScoreBadgeColor
≤ 25CRITICALRed
26 – 40HIGH RISKOrange
41 – 60MEDIUMAmber
61 – 75CLEANGreen
> 75(no badge)

Every published ARGUS page is protected by five elements:

  1. “Algorithmic analysis, not a verdict” — displayed prominently on every page
  2. Full methodology disclosure — open source, publicly auditable code
  3. Confidence and false positive rate — transparency in scoring
  4. Prominent dispute mechanism — above the fold, not buried
  5. Human editorial review — every published page reviewed by admin

Language used throughout: “flagged for review”, “high risk”, “scored X/100 based on these signals” — never “fake”, “fraud”, or “criminal”.

Dispute Process

Anyone can submit a dispute at /tools/argus/dispute.html.

TierEvidenceOutcome
Tier 1Government ID + platform verificationAuto-approve removal
Tier 2Cross-platform presence, employer confirmationHuman review
Tier 3“I am real” with no supporting evidenceDispute denied

Resolved disputes convert the page to a “dispute resolved” notice — retained for transparency, score removed from public display. Review timeline: 14 business days.