Getting Started
Welcome to the Witness Project investigative platform. Start here if you're new.
1
Create Your Profile
Go to Profiles and create an investigator handle. Use a codename — no real names. Pick a color and specialty. Your profile ties your workspace and chat identity together.
2
Review the Case Dashboard
Go to Dashboard and review the current case data — entities, timeline, leads, tail numbers. Use the search bar to find specific names or events.
3
Review Intel Cards
Go to Intel to see visual entity cards with photos, notes, and timeline connections. Click any card to expand its full profile.
4
Set Up Your Workspace
Go to Workspace to add URLs, documents, and notes to your personal research space. Your workspace is private by default.
5
Join the Team Chat
Go to Chat and set your handle to start messaging the team. Real-time, all investigators see all messages.
Platform Guide
PageWhat It Does
DashboardFull case database — entities, timeline, leads, tail numbers, contradictions, findings. Search everything. Log new findings directly.
IntelVisual entity cards with photos pulled from Wikipedia. Click any card for full profile, notes, and timeline. Override photos with custom URLs.
WikiTeam knowledge base. Filter by category. Expand entries. Add new entries — they save to Google Sheets automatically.
WorkspaceYour personal research space. Add URLs, upload documents, write notes. Private by default — toggle to share with team.
CollaborateShared team workspace for joint investigations. Create projects, add items, everyone can contribute.
ChatReal-time team messaging. Set your handle before sending. Messages load last 100, polls every 3 seconds.
ConverterConvert any file to TXT or Markdown for AXIOM. PDF, DOCX, EPUB, JSON, images with OCR, and more. Everything stays in your browser.
ToolsCurated OSINT and investigative resources. 15 built-in tools. Add your own for the team.
ProfilesCreate and manage investigator identities. Handles only — no real names. Activate a profile to link it to your session.
AXIOM Discord Bot
AXIOM is the AI investigative analyst running on your Discord server. Tag @Axiom to activate in any channel.
All searches check the internal master file first. Reply YES to authorize external searches.

Files & Analysis

CommandDescription
Upload any fileAuto-scans and analyzes PDF, TXT, MD, PNG, JPG. Extracts entities, timeline, leads, tail numbers into Google Sheets.
Reply + @AxiomReply to any Discord message and tag @Axiom to analyze the content of that message.
@Axiom YESConfirm processing of large files or authorize external searches.

Search Commands

CommandDescription
!search [query]Checks internal master file first, then asks permission to search the web.
!news [query]News search — internal first, then external news sources.
!lookup [entity]Deep entity lookup — combines web search, news, and SEC/corporate filings.
!youtube [url]Fetches video transcript and analyzes it as case evidence.

Case Intelligence

CommandDescription
!synthesizeFull case synthesis from the master file. Generates leads, cross-references, suppression patterns.
!readhistoryScans all files ever uploaded to this channel and synthesizes them.
!exportDownloads a complete case report as a .txt file — all entities, timeline, leads, tail numbers.

Database Commands

CommandDescription
!masterView the last 30 entries in the server-wide master file.
!entitiesLast 20 entities logged.
!timelineLast 20 timeline events.
!leadsAll active leads with status.
!tailnumbersAll aircraft tail numbers tracked.
!conflictsAll contradictions flagged.
!updatelead [title] | [status] | [notes]Update a lead status directly from Discord. Status: OPEN / IN PROGRESS / CONFIRMED / CLOSED
!searchesSearch history log.
!memoryMaster file status — total record count.
!queueCurrent job queue — how many files are processing.

AXIOM Classification System

TagMeaning
[CONFIRMED]Directly supported by evidence in case files.
[INFERRED]Reasonably implied by evidence but not directly stated.
[SPECULATIVE]Possible interpretation, limited evidence.
[MISSING]Critical gap in evidence — needs investigation.
[CONFLICT]Directly contradicted by other evidence.
[FLAG]Requires attention or follow-up.
[SUPPRESS-ALERT]Evidence of information suppression or narrative management.
[SURVIVOR-ALERT]Finding directly related to victim or survivor welfare.
📂 INTERNALFinding is from the internal master case file.
🌐 EXTERNALFinding is from a web or news search.
Investigation Workflow
The recommended workflow for new evidence:
1
Convert the file
If the file is a PDF, EPUB, DOCX, or image — go to Converter and convert it to .txt first. This makes AXIOM faster and cheaper to process.
2
Upload to AXIOM
In Discord, tag @Axiom and attach the .txt file. AXIOM will scan it, estimate processing time, and queue it automatically.
3
Review extraction
AXIOM posts an embed showing new entities found, timeline events added, and any contradictions. Review these and flag anything that looks wrong.
4
Search internal first
Use !search before going to external sources. If AXIOM finds internal records, review them. Only go external when internal data is exhausted.
5
Log your findings
Any connections you identify manually — go to the Dashboard and use the Log Finding panel. This creates a permanent record tied to your handle.
6
Synthesize weekly
Run !synthesize once a week to get a fresh cross-referenced synthesis of everything in the master file. This updates the leads list on the website automatically.
Never upload files containing victim personal information, testimony, or identifying details to AXIOM. Keep sensitive victim data completely off this platform.
Operational Security
The password gate on this site is a deterrent, not true security. Treat the dashboard as semi-public.
RuleWhy
Handles only — no real namesIn chat, profiles, and Discord. Anyone who gains access to the platform cannot identify you.
Rotate the password monthlyEdit auth.js and redeploy. Takes 2 minutes. Locks out anyone who had the old password.
Don't share the Cloudflare loginOnly share the site URL and password with investigators. Keep the hosting account private.
Sensitive findings in Discord onlyAXIOM chats are not public. The website is. Keep the most sensitive details in Discord.
Assume Supabase data is accessibleChat and workspace data is in Supabase. Treat it as if it could be read by others.
Don't store victim data anywhere on this platformVictim names, testimony, identifying information — keep this completely off the platform.
Back up Google Sheets weeklyFile → Download → Excel. This is your entire case database. Protect it.
FAQ
Why does AXIOM say "No internal records found" for something I know is in the database? +
The internal search uses keyword matching. If you spelled the name differently from how it was extracted, it won't find it. Try shorter search terms — just a surname or key word rather than a full name.
The website shows old data. How do I refresh it? +
The website reads from Google Sheets CSV URLs which are cached by Google for a few minutes. Click the ↻ Refresh button on any page, or wait 5-10 minutes for Google's cache to update after new data is added.
AXIOM timed out processing a large PDF. What should I do? +
Convert the PDF to .txt first using the Converter page. Text files process 10x faster and cheaper. For very large documents, split them into sections of about 50 pages each.
How do I update a lead status? +
In Discord: @Axiom !updatelead [title keywords] | [status] | [notes]. Status options: OPEN, IN PROGRESS, CONFIRMED, CLOSED. The website will reflect the change after the next refresh.
Why don't entity photos show up for some entities? +
Photos are pulled automatically from Wikipedia. If Wikipedia doesn't have an article or photo for that entity, a placeholder with initials is shown instead. You can override this by clicking the entity card and pasting a custom image URL.
Can I add entries to the Wiki from outside Google Sheets? +
Yes — on the Wiki page, click "Suggest Wiki Entry". The form will copy the entry in the correct format to your clipboard. Paste it directly into a new row in the Wiki tab in Google Sheets.
How do I change the platform password? +
Open auth.js, find PASSWORD: 'witness2026', change it to your new password, save the file, and redeploy all 9 files to Cloudflare Pages. Takes about 2 minutes.
AXIOM is using the wrong vision model. How do I fix it? +
Check console.groq.com/docs/deprecations for the current vision model name. Open axiom_discord.py, find the model name in the run_groq function, update it, commit and push to GitHub. Railway will redeploy automatically.
How often should I run !synthesize? +
Once a week, or after a major batch of new files is uploaded. Synthesis reads the most recent 100 master file entries, so running it more often than weekly doesn't significantly change the output unless a lot of new data was added.
What happens to my workspace data if I clear my browser? +
Workspace items are stored in Supabase and persist permanently. Your active profile and login session are in sessionStorage and will be cleared when you close the browser — just log in and re-select your profile next time.