Cadabra is a Chromium extension that reranks Amazon search results in real time using anonymized behavioral aggregates and an AWS backend.
- Chromium Extension (Manifest v3)
- AWS API Gateway + Lambda (TypeScript)
- Amazon Nova via AWS Bedrock
- DynamoDB for user profile persistence
- Bun runtime and package manager
- Extension extracts user-visible candidate product metadata from Amazon search results.
- Extension computes local behavioral features (
UserBehaviorVector, normalized0..1). - Extension sends behavioral vector + candidate list to backend.
- Backend infers/loads user profile and ranking weights.
- Backend returns reranked ASINs + short explanations.
- Extension reorders DOM nodes and injects explanation badges.
Core product function is reranking accuracy and interpretability. Frontend iteration is expected, but should be minimalist and supportive of the reranking experience.
extension/: Manifest v3 extension sourcebackend/: Lambda handlers, Bedrock client, scoring logicinfra/: AWS SAM template
Implemented in:
extension/src/types.tsbackend/src/types.tsbackend/src/novaPrompt.ts
Key constraints:
- Only DOM-visible data is used for product extraction.
- No private Amazon APIs.
- No server-side scraping.
- No PII storage.
- Raw clickstream is not persisted long-term.
cd extension
bun install
bun run buildThen load extension/ as an unpacked extension in Chromium.
Set backend URL via cadabra_api_base_url in extension storage, or update DEFAULT_API_BASE_URL in extension/src/background.ts.
cd backend
bun install
bun run buildDeploy with AWS SAM using infra/template.yaml.
Default environment variables:
AWS_REGION=us-east-1USERS_TABLE_NAME=UsersNOVA_MODEL_ID=amazon.nova-pro-v1:0
POST /v1/rerankPOST /v1/profile/infer
Both endpoints expect strict JSON payloads matching backend types.
MVP scaffold is in place for:
- Candidate extraction
- Behavioral aggregation
- Nova-based profile/rerank calls
- Deterministic fallback weight scorer
- DOM reranking + restore toggle + badges
- Keep UI enhancements minimalist and low-noise.
- Prioritize clarity: small badges, concise reasons, unobtrusive controls.
- Do not reduce search-page usability or break native interactions.
- Any visual enhancement should support trust in reranking, not distract from shopping flow.