Dual-oracle autonomous QA swarm — finds the silent bugs your tests and your error monitoring miss.
Bloodhound explores a real app through a headless browser like a chaos-user and catches failures with two oracles:
- Sentry catches what throws — crashes, errors, slow spans.
- A browser agent catches what's silently wrong — logic/UI bugs where nothing throws (e.g. the cart shows $10 for two $10 items). It declares what it expects before acting, then flags observed ≠ expected.
Everything logs into Sentry, our history DB. When something breaks, a triage agent pulls the correlated Sentry trace (browser = symptom, Sentry = cause), root-causes it, fixes the code, and writes a regression test so it can never recur.
Built for the UC Berkeley AI Hackathon 2026. Shared context lives in the sibling team-brain repo (
../team-brain).
The Bloodhound codebase. Three workstreams build against one set of frozen contracts:
| Area | Owner | Path |
|---|---|---|
| Triage & fix engine + frozen contracts | Vikash | src/contracts/, src/triage/, src/sentry/, src/cache/ |
| Browser explorer + demo app | Shashank | (incoming) |
| Dashboard + memory/persistence + wiring | Prajit | (incoming) |
The two hand-off shapes that keep three people building one project — mirrors
team-brain reference/api-contracts.md:
Finding— detection → triage. What was expected, what was observed, how to reproduce, and the SentrytraceIdto correlate.Resolution— triage → dashboard. Confirmed?, root cause, fix diff, regression-test path, verified?, status.signature(finding)/SeenStore— stable dedup over detection-time fields only (neverrootCause— that would be circular), so triage skips duplicates.
Sample fixtures for teammates to build against live in fixtures/.
npm ci
npm run typecheck
npm testAnything touching Anthropic or Sentry is dependency-injected behind an interface
with a Fake* implementation, so the suite runs fully offline. Live
implementations activate only when the relevant API keys are present in the
environment.