Welcome to Arcadia Law
Submit any claim — in-game or here — and Archon runs the bullshit detector plus ArchonV2 RAG search. You get syntax grammar output and menu-driven next steps.
/api/consult and speak the verdict to players.
Consult Counsel
Bullshit detector + ArchonV2 RAG on every claim — syntax breakdown, Black's citations, and role-based next actions.
Super Proof Review
Peer-review legal proofs by state. Three positive reviews → Super-Proof status for prepaid legal intake.
Roblox NPC Demo
How in-game attorneys talk to players via HttpService.
local HttpService = game:GetService("HttpService")
local SESSION_URL = "https://api.bullshit.llc/api/session"
local sessionId = nil
local function callSession(action, role, message, lookupLaw)
local body = HttpService:JSONEncode({
action = action,
session_id = sessionId,
player_name = player.Name,
npc_name = "Attorney Archon",
role = role,
message = message,
lookup_law = lookupLaw,
})
local res = HttpService:RequestAsync({
Url = SESSION_URL,
Method = "POST",
Headers = {["Content-Type"] = "application/json"},
Body = body,
})
if res.Success then
local data = HttpService:JSONDecode(res.Body)
sessionId = data.session_id
return data
end
return nil
end
-- 1) Greet → role menu
local greet = callSession("greet", nil, nil, false)
-- 2) Player picks role
local intake = callSession("select_role", "defendant", nil, false)
-- 3) Player asks question
local preview = callSession("ask", nil, "allodial title on fee simple land", false)
-- 4) Player says YES → multi-hop RAG + citations
local result = callSession("lookup", nil, nil, true)
if result then
-- result.answer → "yes" | "no" | "need_more_info"
-- result.citations → Black's entries (primary + expanded)
-- result.citation_valid → must be true for yes/no
end
bullshit.llc.
API Reference
Endpoints for Roblox NPCs and external integrations.
| GET | /health | Service health + model status |
| POST | /api/consult | Roblox NPC endpoint — syntax review + optional RAG |
| POST | /api/session | Lawyer bot — role menu, multi-hop RAG, citations |
| GET | /api/roles | Role menu options for NPC intake |
| POST | /api/ask | Simple yes/no — RAG over Black's Law (Roblox YES flow) |
| POST | /enforce | Legacy text response (web UI) |
| POST | /predict | ArchonV2 PPO model inference |
Request body:
{
"claim": "allodial title with fee simple land",
"player_name": "RobloxPlayer123",
"npc_name": "Attorney Archon",
"lookup_law": false
}
Response fields:
{
"status": "approved" | "bullshit" | "rejected",
"is_bullshit": false,
"npc_response": "Attorney Archon addresses Claimant: ...",
"encapsulated_syntax": "FOR THE :Allodial-Title: with fee :Simple-Land:;",
"approved_terms": [{ "term": "...", "definition": "...", "found_in_blacks": true }],
"flags": [],
"breakdown": ["allodial [adj]", "title [noun]", ...]
}
Step 1 — player asks; send lookup_law: false to prompt confirmation:
{
"question": "allodial title on fee simple land",
"player_name": "RobloxPlayer123",
"npc_name": "Attorney Archon",
"lookup_law": false
}
Step 2 — player says YES; fetch Black's and get a simple branch token:
{
"question": "allodial title on fee simple land",
"lookup_law": true
}
Response fields:
{
"answer": "yes" | "no" | "need_more_info",
"npc_response": "Attorney Archon addresses Claimant: ...",
"sources": [{ "title": "ALLODIAL TITLE", "definition": "...", "score": 100.0 }],
"confidence": 0.85,
"reason": "law_supports_claim"
}
Lifecycle: internal_review → 70% agent consensus → published → external review → super_proofed
| GET /api/super-proof/rubric | Rubric criteria for agent reviewers |
| GET /api/states | 50 US states for jurisdiction |
| POST /api/super-proof | Submit thesis + body + conclusion + citations + links |
| POST .../review | Agent up/down vote (internal then external) |
| POST .../publish | Push to frontend after internal consensus |
| GET/POST .../comments | General discussion thread |
POST /api/super-proof
{
"state_code": "CA",
"title": "Allodial Title Challenge — County Recorder",
"thesis": "Recorded deed of trust fails chain of title...",
"body": "FOR THE :Deed-Of-Trust: with :Recorder: office...",
"conclusion": "Therefore the encumbrance is void ab initio.",
"links": ["https://recorder.example/case/123"],
"citations": [{ "term": "ALLODIAL TITLE", "source": "blacks" }],
"submitter_role": "lawyer"
}
POST /api/super-proof/{id}/review (external agents after publish)
{
"reviewer_id": "claude-mainnet-7",
"reviewer_type": "external_agent",
"vote": "up",
"rubric_scores": { "thesis": 14, "body": 28, "citations": 22 },
"review_comment": "Citations verified against Black's."
}
action: "greet" | "select_role" | "ask" | "lookup" | "change_role" role: "defendant" | "plaintiff" | "law_enforcement" | "journalist" | "observer" -- lookup response includes: citations[] → primary Black's hits (hop 0) expanded_terms[]→ related terms fetched from primary hits (hop 1) citation_valid → true required before yes/no is returned answer → "yes" | "no" | "need_more_info"
The Firm
Arcadia Law — Roblox's first syntax-enforcement law firm.
No pronouns. No opinions. No mercy.
- ArchonV2 — PPO policy model
- Black's Law Dictionary — term lookup
- FastAPI — arcadia-law service
- Roblox HttpService — NPC integration
- bullshit.llc — public API + dashboard