Husearch — Feature Summary

Last verified against the codebase: 2026-06-11. This document describes what is actually implemented and live, including operational limits and cost drivers, so it can be used as ground truth for planning, financial modelling, and strategic decisions.

What It Does

“Replit for humanities research” — an all-in-one workspace where researchers investigate, write, annotate, cite, and export without leaving the platform. Submit a research question, and four specialist AI agents investigate it in parallel. A synthesizer merges their findings into structured outputs — briefs, bibliographies, notes, summaries, and full agent transcripts. All research is stored, searchable, and organized by project and chapter. The platform extends beyond research into writing, annotation, citation management, data visualization, collaboration, and manuscript export.

Research Engine

Four Claude-powered agents run concurrently on every query:

An orchestrator tailors sub-prompts per agent, and a synthesizer resolves contradictions across all four outputs into a unified research brief. Follow-up queries can build on prior sessions for iterative investigation.

Limits: max 3 concurrent research sessions (MAX_CONCURRENT_RESEARCH); per-agent 5-minute hard timeout and 90-second idle timeout; up to 5 tool-calling rounds per agent; max query length 2,000 characters. All external API calls (Claude, CrossRef, FRED, etc.) have retry logic with backoff and human-readable error messages; data providers sit behind a circuit breaker (opens after 3 failures, 1-hour cooldown).

Per-Project Research Focus

Each project can configure a “Research Focus” (discipline, specialization, key theories, regions, time period, key thinkers, critical lens, output emphasis, custom instructions). The orchestrator and all five agent prompts are customized at runtime from this config; projects without one use discipline-neutral base prompts.

Batch Research Mode

An optional batch path (batch: true on submission) routes the query through the Anthropic Message Batches API: 50% token discount, typically ~1-hour turnaround (up to 24h). Trade-off: single-turn per agent — no tool calling, so no live data fetches. Sessions sit in a batch_processing status and a background poller collects results.

Source Restriction Modes

Researchers control what the agents draw from:

The marker vocabulary (provenance tags, [HIGH]/[MEDIUM]/[LOW] confidence tags, claim/evidence and contradiction/convergence markers) has a single owner in shared/research-markers.js, used by both server and client.

Citation Verification

After synthesis, citations are automatically verified against the CrossRef API. Each citation gets a badge: Verified (DOI resolves, metadata matches), Partial match, Unverified (flagged for manual review), or Pending (verification incomplete, e.g., CrossRef temporarily down). Researchers can manually override status. CrossRef responses are cached in a PostgreSQL table.

Evidence Chains

The synthesizer tags each claim with its supporting evidence and source agent. A claim-evidence parser extracts these into structured records, so any synthesized claim can be traced back to the specific agent output and passage that supported it.

Reasoning Trace

The full pipeline captures timestamped, structured events — orchestration decisions, agent progress, tool calls/results, fallbacks, retries, contradiction resolutions — built mechanically from callback traces (not LLM-generated) and stored as JSON. The transcript tab displays this as an interactive timeline. Each trace event also carries per-call token usage (input/output/cache-read/cache-write).

Reference Extraction (Extend)

Optional integration with Extend (extend-ai) extracts structured reference lists (journalArticle, book, bookSection, conferencePaper, thesis, report, webpage) from uploaded documents. Disabled unless EXTEND_API_KEY/EXTEND_PROCESSOR_ID are set.

Workspace Modes

The center panel is driven by a mode registry. Seven tab modes — Research (query), Annotate, Library, Write, Map (knowledge graph), Visualize (diagram canvas: concept maps, flowcharts, cause-effect, timelines, comparisons, hierarchies), Discover (federated academic paper search) — plus two sidebar modes: Analytics (writing productivity dashboard) and Timeline (project activity timeline). The research feed stays mounted across mode switches; heavy modes are lazy-loaded.

Writing & Editing

Chapter Editor

Plate.js (Slate-based) rich text editor with ~29 plugins:

Track Changes & Suggestions

Track-changes mode with suggestion controls and bulk accept/reject. Insertions and deletions are reviewed visually before committing.

Collaborative Editing

Real-time collaborative editing via Y.js (CRDT) with @slate-yjs/core binding and remote live cursors. Server-side WebSocket sync with Y.Doc persistence: an LRU cache holds up to 200 live docs; evicted docs are snapshotted to a PostgreSQL table and reconciled against canonical chapter content on reconnect.

AI Writing Assistance

In-editor AI tools: Expand (outline → prose), Style check (passage or document-wide), Transition generation, Abstract generation, Detect uncited claims, and Analyze (argument strength).

PDF Annotation

Upload PDFs (up to 100 MB; chapter attachments up to 50 MB), view with text layer, highlight with color-coded annotations, add notes, tag highlights. Annotations are embedded for semantic search and can be passed as context to research queries. AI annotation synthesis summarizes highlights from a source.

Footnotes & Endnotes

Both footnotes and endnotes with independent numbering, citation-linked notes formatted through the CSL processor (citeproc), manual notes, footnote↔endnote conversion, automatic Ibid./short-form at export per Chicago 17th edition, and a notes list panel with click-to-navigate and batch re-format.

Document Comments

Threaded comments anchored to text ranges, with create/resolve/delete and multiple concurrent threads.

AI Peer Review Agent

A Claude-powered reviewer produces structured feedback anchored to exact quoted passages, categorized (argument, evidence, clarity, structure, citation, methodology, grammar), with open/resolved/ignored tracking. Supports full-chapter or selection review, context-aware follow-up rounds that see prior comments, threaded replies, and review-run history.

Organization

Knowledge Synthesis

Connection Discovery & Knowledge Graph

A connection engine computes pairwise similarity between research sessions, annotations, and snippets using local Transformers.js embeddings. Connections are classified by cosine-similarity strength: Strong (> 0.55), Related (0.42–0.55), Potential (0.33–0.42). AI-generated labels describe each connection in plain language; researchers can confirm, dismiss, or manually create connections. Keyword-matching fallback if embeddings fail. A knowledge graph view (react-force-graph-2d) visualizes the network per project.

Argument Mapping

An argument canvas (React Flow) visualizes chapter logic. Node types: thesis, claim, evidence, counter-argument, rebuttal, qualifier. Edge types: supports, contradicts, qualifies, depends on. An AI argument extractor auto-populates the canvas from chapter text.

Search

Live Data Connections

Economic Data Providers

FRED (free key required), World Bank, IMF, OECD, Eurostat, BIS, DBnomics (no keys), UN Comtrade (optional key).

Academic Paper Providers

Semantic Scholar (optional key), OpenAlex, CrossRef, arXiv (no keys), CORE (optional key), Unpaywall (no key).

Primary Source & Cultural Heritage Providers

Internet Archive, Library of Congress (no keys), DPLA, Europeana (optional keys).

API keys are optional throughout — a provider whose key is unset is simply omitted from the agent’s toolset, and research runs with the rest. Provider responses are cached in PostgreSQL with configurable TTL; if a service is down after retries, stale cached data is returned with a warning. Full provider table in docs/data-providers.md.

Specialized Chart Templates

Beyond basic line/bar/scatter, the editor includes social-science publishing templates: Coefficient Plot (regression results with confidence intervals), Event Study Plot, Difference-in-Differences, Marginal Effects Plot, and Choropleth Map. All default to grayscale-friendly, print-safe formatting with source attribution lines.

Source Criticism (Historians)

Structured source evaluation per upload: external criticism (provenance, archive/collection, date, authorship, document type, language), internal criticism (purpose, audience, perspective, reliability), and classification (relic vs. narrative; primary/secondary/tertiary). AI-assisted pre-population suggests values from the document text; evaluations are editable, never auto-confirmed.

Citations & Zotero Integration

Document Import

DOCX (Mammoth), Markdown (with front matter), Notion exports, and Scrivener projects — via a pluggable importer registry. All imports logged for audit.

Template Gallery

Chapter templates by category: Working Paper, Dissertation, Book Proposal, Grant Proposal, Journal, and user-created Custom templates (creatable from existing chapters).

Writing Analytics

Session tracking with Pomodoro timer mode, cumulative word counts and pace, consecutive-day streaks, calendar heatmap, per-chapter word targets, and detailed activity reports. An email reporter service exists for scheduled activity summaries.

Export

(No direct PDF export yet — react-pdf is used for viewing/annotation only.)

Collaboration & Sharing

Access control follows a uniform four-source rule enforced in the repository layer: owner → organization → collaborator → share-token.

Accounts & Auth

Progressive Web App & Offline Support

Marketing & SEO

The landing page is pre-rendered to static HTML at build time (Vite SSR + prerender script) with react-helmet-async meta tags, while app routes load the SPA shell. There are currently no pricing, billing, or subscription pages.

Onboarding & Help

Error Handling

Accessibility

ARIA labels and aria-live regions, semantic landmarks, keyboard navigation with skip-to-content, light and dark mode. Automated axe-core checks run in both the client unit suite and the e2e suite (critical-violation assertions); a comprehensive WCAG 2.1 AA audit has not been done.

Operational & Cost Profile

This section summarizes the cost drivers and operational limits relevant to unit economics.

LLM usage shape per research run

A standard (non-batch) research run makes these Claude calls:

  1. Orchestrator — 1 call (query analysis + 4 sub-prompts)
  2. Four specialist agents in parallel — each an agentic tool-calling loop of up to 5 rounds (so 1–5+ LLM calls per agent, plus tool executions against free external APIs); tool results truncated to 2,000 chars each; message history pruned after round 2 to contain token growth
  3. Synthesizer — 1 call merging all four outputs
  4. Background post-processing: embeddings are generated locally (Transformers.js, no API cost); citation verification hits CrossRef (free)

Cost controls in place:

Usage observability

Per-session token usage (input/output/cache-read/cache-write, per stage and per call) is persisted in agent logs and trace events. A daily usage summary logs aggregate calls/tokens with cost estimates from a built-in per-model price table (including cache read/write multipliers). /api/health exposes queue depth, rate-limit state, live session count, Y.Doc cache stats, memory, and disk — without pinging the database (preserves Neon auto-suspend).

Quotas and rate limits

Limit Value
Concurrent research sessions 3
Research/LLM endpoints 10 req/min
Auth endpoints 30 req/15 min
Share endpoints 20 req/min
General API 120 req/min
Per-user file storage quota 1 GB (USER_FILE_QUOTA_MB)
PDF upload 100 MB; attachments 50 MB

Infrastructure

Testing

Tech Stack

What’s Not Yet Implemented