Common questions about bofig, Binary-Origami Figuration, and the underlying concepts.
bofig (Binary-Origami Figuration) is infrastructure for investigative journalism that lets different audiences explore the same evidence in different ways. It combines:
-
i-docs navigation: Reader-driven exploration instead of author-controlled narration
-
PROMPT scoring: 6-dimensional quality metrics for evidence
-
Boundary objects theory: Same evidence, multiple valid interpretations
*B*inary-*O*rigami *Fig*uration:
-
Binary: The clear, measurable relationships (supports/contradicts, 0-100 scores)
-
Origami: The art of folding evidence into different shapes for different audiences
-
Figuration: The intentional process of structuring information for clarity
-
Investigative journalists who want to present complex evidence accessibly
-
Researchers who want to share data with non-academic audiences
-
Policymakers who need evidence-based decision support
-
Affected communities who want to understand systemic issues
-
Anyone who wants epistemological rigor without gatekeeping
| Reason | Explanation |
|---|---|
Multi-model |
ArangoDB handles both documents (claims, evidence) and graphs (relationships) natively |
Elixir support |
The |
Cost |
ArangoDB Oasis managed hosting is €45/month vs. higher Neo4j pricing |
License |
Apache 2.0 (permissive) vs. Neo4j’s GPL/commercial split |
See docs/database-evaluation.md for detailed benchmarks.
-
Concurrency: Elixir’s actor model handles many simultaneous users efficiently
-
Fault tolerance: OTP supervision trees recover from failures gracefully
-
LiveView: Real-time UI without a JavaScript framework
-
Functional: Immutable data and pattern matching reduce bugs
Per the language policy, we use ReScript for frontend code and avoid Python/Node.js.
Yes! PROMPT scoring is optional. You can:
-
Add evidence without scores
-
Add scores incrementally over time
-
Completely ignore scores and use bofig as a pure evidence graph
We made scoring optional to reduce adoption friction.
| Narration | Navigation |
|---|---|
Author decides the order |
Reader chooses the path |
One story, one interpretation |
Same evidence, multiple routes |
"Here’s what happened" |
"Here’s the evidence—explore" |
See i-docs Navigation for details.
Different stakeholders often can’t agree on what evidence means. But they can work together if they agree on what the evidence is.
A policymaker and an activist looking at the same inflation data will draw different conclusions—and that’s fine. Bofig makes the basis for their conclusions visible.
Peer review is binary (published or not). PROMPT is multi-dimensional:
-
An interview might score high on provenance (named expert) but low on replicability (can’t re-interview)
-
A dataset might score high on transparency (fully open) but low on methodology (small sample)
PROMPT captures nuance that binary peer review misses.
Something that different communities use together, even when they understand it differently. A map is a boundary object—tourists, engineers, and soldiers all use the same map for different purposes.
In bofig, evidence is the boundary object. See Boundary Objects for the full explanation.
-
Clone the repository:
git clone https://github.com/Hyperpolymath/bofig.git -
Start ArangoDB:
podman run -d -p 8529:8529 -e ARANGO_ROOT_PASSWORD=dev arangodb/arangodb:3.11 -
Install dependencies:
mix deps.get -
Load test data:
mix run priv/repo/seeds.exs -
Start Phoenix:
mix phx.server
See the README for detailed setup instructions.
Yes! The project is open source from day 1. See the CONTRIBUTING guide.
Priority areas:
-
Zotero browser extension (Phase 1)
-
D3.js visualization improvements
-
PROMPT scoring UI
-
Documentation improvements
Via GraphQL:
mutation {
createNavigationPath(input: {
investigationId: "uk_inflation_2023"
audienceType: RESEARCHER
name: "Methodology Deep-Dive"
pathNodes: [
{entityId: "ons_methodology", order: 1, context: "How is CPI calculated?"},
{entityId: "claim_1", order: 2, context: "The central claim"}
]
}) {
id
name
}
}Or let bofig auto-generate one:
mutation {
autoGeneratePath(
investigationId: "uk_inflation_2023"
audienceType: SKEPTIC
) {
id
pathNodes { entityId order }
}
}mutation {
importFromZotero(
investigationId: "uk_inflation_2023"
zoteroJson: {
key: "ABC123"
itemType: "journalArticle"
title: "Economic Analysis of Inflation"
# ... other Zotero fields
}
) {
id
title
zoteroKey
}
}See docs/zotero-integration.md for two-way sync details.
No. Bofig distinguishes between:
-
Evidence: The facts (same for everyone)
-
Interpretation: What the facts mean (audience-specific)
A skeptic can’t deny that ONS data exists. They can question what it means. The PROMPT framework makes the quality of evidence explicit, preventing "alternative facts."
Currently, the journalist or researcher adding evidence assigns scores. Future versions may include:
-
Crowd-sourced scoring with reputation systems
-
Automated scoring based on metadata (peer review status, data availability)
-
Calibration against expert panels
Fact-checkers produce binary verdicts (true/false/misleading). Bofig provides:
-
Multi-dimensional scores (not just true/false)
-
Multiple audience perspectives (not one authoritative view)
-
Exploration tools (not just conclusions)
Fact-checking tells you what to believe. Bofig shows you how to evaluate evidence.
You shouldn’t trust the system—you should trust the evidence (and verify it). Bofig is infrastructure, not an oracle. Every claim links to primary sources. Every PROMPT score is visible and contestable.
If you disagree with a score, create your own navigation path emphasizing different evidence. The system supports disagreement as a feature, not a bug.
GitHub Issues: https://github.com/Hyperpolymath/bofig/issues
-
Binary-Origami Figuration — The main metaphor
-
Glossary — Term definitions
-
Folding 101 — Step-by-step tutorial
Last Updated: 2025-01