← Back to Chat

CIU Chatbot — Help

Everything you need to know about Ray, the investigation assistant — what he can do, how to ask, and where the data comes from.

Overview

The CIU Chatbot is an AI investigation assistant named Ray. Ray is not a generic chatbot — every answer is grounded in the Epstein investigation corpus.

Ray can search across multiple data layers:

  • Wiki — Curated, investigator-authored wiki pages covering key cases, actors, and evidence
  • Network Graph — 5M+ entities across 10 datasets: people, organizations, documents, flights, financial transactions, offshore entities, emails, sanctions, court records
  • Documents — Full document corpus with OCR text, EFTA numbers, and metadata
  • Research Archive — 7,591 reviewed findings and 17,541 citations from prior deep investigations
  • Case Files — Your investigation notes and uploaded documents, unified in one view
  • Web Search — External web search via Brave API (requires your own key)

Zero wiki hits does not mean zero corpus coverage. Many questions need the graph, documents, or archive as fallback.

Getting Started
  1. Create an account at chat.goyfiles.com (email + password)
  2. Confirm your email via the link sent to your inbox
  3. Complete onboarding: choose a username, upload a profile photo, acknowledge the workspace rules
  4. Go to Dashboard and open API Settings
  5. Add your OpenRouter API key — this is required. You bring your own key, the platform does not provide one.
  6. Optionally add a Brave API key to enable web search tools
  7. Choose your preferred model and reasoning level (minimal / low / medium / high)
  8. Go to Chat and start investigating

OpenRouter key: Get one at openrouter.ai/keys. Add credits to your OpenRouter account — all model usage is billed through your key.

Brave key: Get one at brave.com/search/api. Without it, Ray cannot search the web (Web Search, Deep Web Research, and Read a Web Article will not be available).

Investigation Workflow

The recommended investigation flow:

  1. Create or select a case — go to Dashboard and create a personal case or track a wiki case. You must have an active case before you can chat or create files. The case selector at the top of the chat lets you switch between cases.
  2. Ask a question about a person, event, document, or topic. Ray searches the wiki and graph first (these are always-on core tools). All work is scoped to your active case.
  3. Go deeper — ask follow-up questions. Ray will pull documents, check the archive, search the web as needed. Use specific keywords to trigger specialized tools (see Tool Selection below).
  4. Save your findings — ask Ray to write investigation notes to workspace files. Example: "Save this timeline as timeline.md". Files are saved under your active case.
  5. Attach evidence — upload PDFs or images via the Upload button, or add YouTube URLs as workspace assets in Dashboard. Ray can analyze them in context.
  6. Submit for review — when your investigation file is ready, ask Ray to submit it. Submissions go to an admin review queue before wiki publication.

Tool Budget

Ray uses as many tool calls as the question needs — often 2–3 is enough, up to 8 for complex investigations. If the first few calls produce a solid answer, Ray stops early. Each tool can be called at most 5 times per turn.

Tool Reference (37 tools)

Wiki

Search the Wikiwiki_searchCORE

Searches the curated, investigator-authored wiki pages. Returns matched passages with page path, title, heading, and content. The wiki is only one layer — zero wiki hits does not mean zero corpus coverage.

Try saying:Tell me about Ghislaine MaxwellWhat does the wiki say about Les Wexner?Search for information about the flight logs
Parameters (3)
ParamTypeNote
querystringSearch text
match_countnumber | nullResults to return. Default 8
scope"all" | "cases" | "actors" | nullFilter by page type. Default "all"

Network Graph

Search the Network Graphneo4j_search_graph_nodesCORE

Searches 5M+ entities across all datasets — people, organizations, locations, events, documents, flights, offshore entities, and more. The graph is far larger than the wiki.

Try saying:Find all entities named BrunelSearch for Person nodes matching 'Clinton'Find organizations related to Bear Stearns
Parameters (6)
ParamTypeNote
querystringSearch text
labelstring | nullFilter to a node label (e.g. Person, Organization)
source_datasetstring | nullFuzzy match source dataset
exact_source_datasetstring | nullExact source dataset match
offsetnumber | nullPagination offset. Default 0
limitnumber | nullMax results. Default 25, max 100
Get Full Profileneo4j_get_node_profileCORE

Pulls everything known about a single entity — all properties, labels, and metadata. Use entity IDs from search results.

Try saying:Show me everything about that entityGet the full profile for node [ID]
Parameters (1)
ParamTypeNote
node_idstringThe entity ID to look up
Find Connectionsneo4j_node_neighborsCORE

Shows who and what is connected to any entity — relationships, neighbors, and how they relate.

Try saying:Who is connected to Jeffrey Epstein?Show me the connections of this entityWhat relationships does this person have?
Parameters (2)
ParamTypeNote
node_idstringThe entity ID
limitnumber | nullMax connections. Default 25, max 100
Network Statisticsneo4j_graph_statsCONDITIONAL

Shows high-level numbers for the entire graph: total entities, total relationships, person count, and dataset breakdowns.

Trigger keywords: graph, stats, network, connect, path, between
Try saying:How big is the graph?Show me the network statsHow many entities are in the database?
Parameters (1)
ParamTypeNote
source_limitnumber | nullMax source datasets to show. Default 30
Find the Link Between Two Peopleneo4j_shortest_pathCONDITIONAL

Traces the shortest chain of connections between two entities. Shows every person, organization, or event along the path.

Trigger keywords: path, connect, between
Try saying:What connects Epstein to [person]?Find the link between these two peopleHow are [A] and [B] connected?
Parameters (3)
ParamTypeNote
from_idstringStarting entity ID
to_idstringEnding entity ID
max_hopsnumber | nullMax path length. Default 6, max 10
Custom Graph Queryneo4j_read_cypherCONDITIONAL

Runs a custom read-only Cypher query against the graph for advanced investigators. Write operations are blocked.

Trigger keywords: cypher, graph, stats
Try saying:Run a Cypher query to count flights to St. ThomasQuery the graph for all relationships of type FLEW_WITH
Parameters (2)
ParamTypeNote
querystringCypher query. Must contain LIMIT
paramsobject | nullOptional query parameters
Search the Contact Bookneo4j_lookup_contactCONDITIONAL

Searches Epstein's contact book and related datasets by name, email, company, or alias. Privacy rules enforced: victims excluded, witnesses anonymized.

Trigger keywords: contact, address, phone
Try saying:Look up Trump in the contact bookFind contact information for [name]Who has a phone number in the address book?
Parameters (2)
ParamTypeNote
querystringSearch text
limitnumber | nullMax results. Default 10, max 50

Documents

Search Documentsdocument_searchCORE

Searches the document corpus by text, title, filename, or source dataset. Use this to find specific documents or browse by category.

Try saying:Find documents about the NPASearch for documents with 'Acosta' in the titleFind all documents from the doj-epstein-files dataset
Parameters (9)
ParamTypeNote
querystring | nullSearch text
source_datasetstring | nullFuzzy match source dataset
source_document_idstring | nullExact source document ID
titlestring | nullTitle filter (contains match)
filenamestring | nullFilename filter (contains match)
partial_textstring | nullSearch within document text
exact_source_datasetstring | nullExact source dataset match
offsetnumber | nullPagination offset. Default 0
limitnumber | nullMax results. Default 25, max 100
Read a Documentdocument_fetchCORE

Retrieves the text and metadata of a document by its ID, EFTA number, source document ID, or filename.

Try saying:Read document EFTA01374407Fetch the document with ID [id]Show me the text of that document
Parameters (9)
ParamTypeNote
idstring | nullPrimary entity ID
document_idstring | nullDocument ID field
efta_numberstring | nullEFTA number (e.g. EFTA01374407)
source_datasetstring | nullFilter by source dataset
source_document_idstring | nullSource document ID
filenamestring | nullFilename to match
limitnumber | nullMax documents. Default 3, max 10
max_charsnumber | nullMax text characters. Default 4000
include_textboolean | nullInclude text content. Default true
Extract Pages from a Documentdocument_extractCONDITIONAL

Pulls page-level text from scanned documents using OCR. Use when you need specific pages rather than the full document.

Trigger keywords: evidence, extract, page, ocr, reconstruct, finding
Try saying:Extract pages 3-5 of document EFTA01374407Show me the OCR text from page 1 of [document]
Parameters (5)
ParamTypeNote
document_idstring | nullDocument or entity ID
efta_numberstring | nullEFTA number
pagenumber | nullStarting page. Default 1
max_pagesnumber | nullMax pages. Default 5, max 20
max_charsnumber | nullMax chars per page. Default 3000

Research Archive

Search Past Findingsarchive_findings_searchCORE

Searches 7,591 reviewed findings and 17,541 citations from prior deep investigations. Check here before starting fresh research — someone may have already found what you need.

Try saying:What has been found about the NPA?Search archive findings for MaxwellAre there any reviewed findings about Bear Stearns?
Parameters (6)
ParamTypeNote
querystringSearch query
type"all" | "finding" | "citation" | nullFilter type. Default "all"
dateFromstring | nullStart date (ISO format)
dateTostring | nullEnd date (ISO format)
limitnumber | nullMax results. Default 20
offsetnumber | nullPagination offset. Default 0
Get Evidence for a Findingarchive_finding_evidenceCONDITIONAL

Retrieves the full citation and source chain behind a specific finding — every document, reference, and supporting source.

Trigger keywords: evidence, finding
Try saying:Show me the evidence for finding [ID]What citations support that finding?
Parameters (1)
ParamTypeNote
finding_idstringFinding ID from search results

Case Files

Save a Case Filewrite_case_fileCORE

Creates or updates a case file for your investigation notes. Files are saved to your account and persist across sessions.

Try saying:Save this timeline as timeline.mdCreate a file called maxwell-notes.md with these findingsAppend this evidence to my existing file
Parameters (3)
ParamTypeNote
pathstringFile path ending in .md
contentstringMarkdown content
mode"overwrite" | "append" | nullWrite mode. Default "overwrite"
Read a Case Fileread_case_fileCORE

Reads any case file — notes you created OR uploaded files. Handles text documents, PDFs (extracts text via AI), images (vision analysis), and YouTube videos (transcript extraction). Pass the ID from list_case_files.

Try saying:Read my timeline fileShow me what's in maxwell-notes.mdWhat does this uploaded PDF say about Maxwell?Analyze the image I uploaded
Parameters (3)
ParamTypeNote
pathstringFile path, file ID, or asset ID
questionstring | nullFocus question for PDF/image analysis
max_charsnumber | nullMax characters for uploaded files. Default 8000
List All Case Fileslist_case_filesCORE

Shows all files in your current case: notes you created AND uploaded documents (PDFs, images, text files). Each entry shows whether it's a 'note' or 'upload'.

Try saying:List my case filesWhat files do I have?Show all my investigation notes and uploads
Parameters (3)
ParamTypeNote
directorystring | nullDirectory prefix filter (notes only)
offsetnumber | nullPagination offset. Default 0
limitnumber | nullMax files. Default 50, max 100

Web Research

Web Searchweb_searchCORE

Searches the web for current information to verify or extend investigation findings. Requires a Brave API key in your Dashboard settings.

Try saying:Search the web for recent Epstein case updatesFind current news about [topic]
Parameters (2)
ParamTypeNote
querystringWeb search query
max_resultsnumber | nullMax results. Default 5
Deep Web Researchdeep_web_researchCONDITIONAL

Runs an autonomous multi-round research loop — searches the web, extracts key names and entities, then refines the next search automatically. Much more thorough than a single web search.

Trigger keywords: research, article, osint, web, url, http, deep research
Try saying:Do deep research on Epstein's financial networkRun OSINT research on [topic]Research everything you can find about [person]
Parameters (3)
ParamTypeNote
topicstringResearch topic
roundsnumber | nullResearch rounds. Default 3, range 1-5
queries_per_roundnumber | nullResults per round. Default 5, range 1-8
Read a Web Articleextract_articleCONDITIONAL

Fetches a web page and extracts the full article text. Use this to read articles found during web search.

Trigger keywords: article, web, url, http
Try saying:Read the article at [URL]Extract the full text from this page
Parameters (2)
ParamTypeNote
urlstringURL to fetch
max_charsnumber | nullMax text characters. Default 20000, max 50000

Case Management

Submit Finding for Reviewsubmit_findingCONDITIONAL

Sends a workspace file to the admin review queue. Approved findings get published to the public wiki.

Trigger keywords: submit, case, finding, note, save, remember, forget, preference, submission
Try saying:Submit my findings for admin reviewSubmit the file timeline.md as a finding for the Maxwell case
Parameters (3)
ParamTypeNote
file_idstringWorkspace markdown file ID
case_pathstringWiki case page path
case_titlestringCase title
Submit Case File for Reviewsubmit_caseCONDITIONAL

Sends a complete case file to the admin review queue. Case files are comprehensive investigation packages.

Trigger keywords: submit, case
Try saying:Submit this case file for reviewPackage and submit my investigation
Parameters (3)
ParamTypeNote
file_idstringWorkspace markdown file ID
case_pathstringWiki case page path
case_titlestringCase title
Remember Somethingsave_investigation_noteCONDITIONAL

Saves a persistent note that Ray will remember across all future conversations. Use for preferences, focus areas, or facts you always want Ray to know.

Trigger keywords: note, save, remember, preference
Try saying:Remember that I prefer concise answersAlways prioritize flight log evidenceMy focus is the Maxwell-Epstein financial connections
Parameters (1)
ParamTypeNote
notestringNote to persist (concise and actionable)
Forget Somethingforget_investigation_noteCONDITIONAL

Removes a previously saved note so Ray stops remembering it.

Trigger keywords: forget
Try saying:Forget that preference about concise answersStop remembering the focus on flight logs
Parameters (1)
ParamTypeNote
notestringExact text of note to remove (case-insensitive)

Advanced Analysis

Find Hidden Connections Between Filesdocument_interlinkCONDITIONAL

Scans your workspace files and discovers hidden connections — shared names, entities, document IDs, and themes across different files.

Trigger keywords: interlink, connections between files
Try saying:Analyze connections between my filesFind hidden links across my workspace documentsWhat entities appear in multiple investigation files?
Parameters (2)
ParamTypeNote
scopestring | null"workspace" for personal files, "all" for repo files. Default "workspace"
max_connectionsnumber | nullMax connections. Default 30, max 100
Document Forensicsfile_forensicsCONDITIONAL

Extracts forensic metadata from a document — creation dates, authors, source provenance, hashes, bates numbers, and redaction indicators.

Trigger keywords: forensic, metadata, provenance
Try saying:What's the forensic metadata on this document?Check the provenance of document [ID]Is this document redacted? When was it created?
Parameters (1)
ParamTypeNote
node_idstringDocument entity ID
Trace a Chaintrace_chainCONDITIONAL

Follows money trails, travel sequences, communication chains, or cause-effect paths through the graph from a starting entity. Up to 8 hops deep.

Trigger keywords: trace, chain, forensic
Try saying:Trace the money trail from this entityFollow the communication chain from [entity]Trace all connections forward from this flight record
Parameters (4)
ParamTypeNote
start_idstringStarting entity ID
direction"backward" | "forward" | "both" | nullTrace direction. Default "both"
max_depthnumber | nullMax hops. Default 4, max 8
relationship_typesstring[] | nullFilter to specific relationship types
View Other Investigators' Workquery_submissionsCONDITIONAL

See what other investigators have submitted, what cases they're tracking, and the status of reviewed findings.

Trigger keywords: submission, preference
Try saying:What have other investigators submitted?Are there any pending submissions about Maxwell?Show me all approved case files
Parameters (3)
ParamTypeNote
querystring | nullSearch text (null for all)
status"pending" | "approved" | "rejected" | "all" | nullFilter by status. Default "all"
limitnumber | nullMax results. Default 20, max 50
Read a PDF from a URLfetch_pdfCONDITIONAL

Downloads a PDF from any public URL and extracts its text. Use for court filings, PACER documents, or PDFs found during web research — no attachment required.

Trigger keywords: trace, forensic, interlink, chain, provenance, metadata, connections between files
Try saying:Read the PDF at [URL]Download and extract text from this court filingFetch the PACER document at [URL]
Parameters (3)
ParamTypeNote
urlstringPDF URL
questionstring | nullFocus question for extraction
max_charsnumber | nullMax characters. Default 8000, max 50000
How Tool Selection Works

Ray does not load all 37 tools on every turn. A dynamic selection system picks the right tools based on your question:

Core Tools (11) — Always loaded

These are available on every turn regardless of what you ask: Search the Wiki, Search the Network Graph, Get Full Profile, Find Connections, Search Documents, Read a Document, Search Past Findings, Save a Case File, Read a Case File, List All Case Files, Web Search.

Conditional Tools (25) — Loaded by keyword match

Your question is scanned for keywords that trigger additional tool groups:

KeywordsTools Loaded
connect, path, network, graph, stats, cypher, contact, address, phone, betweenNetwork Statistics, Find the Link Between Two People, Custom Graph Query, Search the Contact Book
evidence, extract, citation, page, ocr, reconstruct, findingExtract Pages from a Document, Get Evidence for a Finding
research, article, osint, web, url, http, deep researchDeep Web Research, Read a Web Article
submit, case, finding, note, save, remember, forget, preference, submissionSubmit Finding for Review, Submit Case File for Review, Remember Something, Forget Something, View Other Investigators' Work
trace, forensic, interlink, chain, provenance, metadata, connections between filesFind Hidden Connections Between Files, Document Forensics, Trace a Chain, Read a PDF from a URL

Budget Rules

  • Ray uses as many tool calls as the question needs — often 2–3 is enough
  • Each tool can be called at most 5 times per turn
  • If the first few calls give a solid answer, Ray stops early
  • The model is capped at 25 total tool call rounds per turn
Data Sources

Data Layers

  • Wiki — Curated investigator-authored wiki pages, semantically searchable
  • Network Graph — 5M+ entities across 10 source datasets
  • Documents — Full-text documents with OCR, EFTA numbers, metadata
  • Reconstructed Pages — Page-level OCR text from scanned documents
  • Research Archive — 7,591 reviewed findings + 17,541 citations
  • Case Files — Your investigation notes and uploaded research assets (PDFs, images, text files)

Network Graph Datasets

DatasetContent
doj-epstein-filesDOJ Epstein case files
icij-offshoreICIJ offshore entities and officers
open-sanctionsSanctioned entities
rhowardstone-corpusR. Howard Stone research corpus
pacer-courtlistenerCourt records from PACER/CourtListener
efta-dbEFTA document database
epstein-networkGold dataset — primary Epstein network graph
contact-bookEpstein contact/address book
house-oversightHouse Oversight Committee records
fbi-vaultFBI Vault records
Tips for Better Results
  • Be specific. "Find Person nodes named Brunel" works better than "Tell me about Brunel."
  • Use keywords to trigger tools. Say "contact book" to get the contact lookup, "trace the chain" for chain tracing, "forensic metadata" for document forensics.
  • Save important findings. Ask Ray to write investigation notes to workspace files so you have a persistent record.
  • Use investigation notes for preferences. Say "Remember that I prefer detailed timelines" and Ray will remember across all future conversations.
  • Attach files for analysis. Upload PDFs or images directly in the chat input area. Ray can read and analyze them in context.
  • Use the case selector. Pin a wiki case to focus Ray's context on a specific investigation.
  • Check the archive. Ask "What has been found about [topic]?" to search prior reviewed findings before starting fresh research.
  • Combine tools. Ask questions that naturally span multiple tools: "Find [person] in the graph, check the contact book, and search for related documents."
  • Add a Brave API key to unlock Web Search, Deep Web Research, and Read a Web Article tools.