bbb-harvest
Harvest BBB (Better Business Bureau) business profiles by category for contractor reputation and quality enrichment in the elephant query DB, with throughput…
Skill by elephant-xyz
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/soofi-xyz-bbb-harvest
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bbb-harvest
What's inside
- Skill name
bbb-harvest- Description
- Harvest BBB (Better Business Bureau) business profiles by category for contractor reputation and quality enrichment in the elephant query DB, with throughput checks before long crawls. Use when asked to collect BBB profiles, contractor reputation data, or refresh bbb_* tables.
- License
- MIT
- Metadata
- author: elephant-xyz
- Instructions
- 147 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# BBB Harvest
National data source — county-agnostic. The executable harvester is
`skills/use-oracle/runtime/src/enrichment/bbb.mjs`, exposed by the
`elephant-county bbb-harvest` command and the AWS Batch worker. County market and
category URLs must come from a validated enrichment profile. Output feeds
contractor reputation/quality enrichment and is joined to permits in a later stage.
BBB's `robots.txt` disallows general crawler access to query-string URLs (`/*?`), which
includes category pagination. Treat HTTP 403 as a source-access boundary: stop all
remaining BBB requests, preserve the exact evidence, and request approved access through
the official BBB API at `https://developer.bbb.org/`. Do not change egress, proxies,
browser fingerprints, or challenge behavior to evade the block.
## Run
```bash
cd skills/use-oracle/runtime
node bin/elephant-county.mjs bbb-harvest \
--county duval \
--category roofing-contractors \
--job-id duval-roofing-probe \
--max-pages 2 --max-profiles 5 --max-requests 100 \
--max-duration-minutes 30 --output downloads/bbb/duval-roofing-probe
```
Production runs use an approved immutable Batch request whose county and category keys
resolve to the same reviewed enrichment profile.
Important bounds:
- `maxPages` / `maxProfiles` / `maxRequests` / `maxDurationMinutes` — hard crawl bounds
- `profileSubpages` (array) — capture extra tabs per profile
- `pageDelayMs` / `profileDelayMs` — conservative pacing
- `includeHtml` — retain source HTML when access is permitted
AWS Batch writes immutable content-addressed artifacts and a handoff per category.
Checkpoints permit an exact resume after transient infrastructure failure. Permanent
source blocks are not retried.
## Output layout
Under `data/artifacts/enrichment/bbb/<jobId>/` (probes can just use a scratch
subdir there):
- `profiles/profiles-part-NNNN.jsonl` — extracted profile records (chunked)
- `failures/failed-profiles.jsonl` — only classified PERMANENT profile failures are
recorded here (rather than aborting the crawl); re-run with the failed URLs after a
reviewed source-access change. TRANSIENT failures (network/5xx) never silently count
as complete; the Batch job fails and its checkpoint remains available for exact resume
- `manifest/summary.json` — counters for reconciliation
## Workflow
1. Pick the category relevant to the enrichment goal (e.g. construction/contractor
categories for permit contractor matching).
- **Multi-Trade Harvesting**: Expand contractor collection across all high-value building trades:
- Roofing Contractors (`roofing-contractors`)
- Solar Energy Contractors (`solar-energy-contractors`)
- Heating and Air Conditioning / HVAC (`heating-and-air-conditioning`)
2. Run a small probe (`maxPages: 2`, scratch output subdir). If BBB returns 403, stop
without further requests and retain the status, URL, timestamp, category, request
digest, and Batch job ID as source-access evidence.
3. Estimate total crawl time from probe latency, page/profile counts, delays, retries,
and safe concurrency. If the estimate is more than 48 hours, ask whether to download
BBB artifacts anyway, ingest them into the query DB, or retrieve BBB profile data at
runtime from the owning app/service. For runtime retrieval, capture the expected API
or scrape path, cache/freshness needs, and failure behavior. Stop here if the
operator chose ingest-only or runtime retrieval — do not proceed to step 4.
4. Run the full category with conservative delays only when the bounded probe is allowed.
5. Reconcile `summary.json` counts vs profiles parts, retry failures.
6. Load into the `bbb_*` tables per the `query-db-loading-matching` skill.
Reconcile a completed profile-category directory set using the profile's category keys:
```bash
node bin/elephant-county.mjs bbb-reconcile \
--county duval \
--harvest-root <root-containing-category-key-directories> \
--input-coverage <dataset-coverage.json> \
--output-dir <reconciled-dir>
```
After permits are available, link BBB businesses to properties through the retained
private permit-contractor source. Do not join a BBB office address directly to a property:
`has_bbb_contractor` means that the BBB business appears as contractor on a permit already
linked to that property.
```bash
node bin/elephant-county.mjs bbb-link \
--county duval \
--input-parquet <query-table.parquet> \
--input-coverage <dataset-coverage.json> \
--bbb-profiles <bbb-profiles.jsonl> \
--bbb-reconciliation-manifest <bbb-reconciliation-manifest.json> \
--permit-source <private/jaxepics-bid-map.jsonl.gz> \
--permit-artifact-manifest <permit-artifact-manifest.json> \
--output-dir <linked-dir>
```
The linker automatically accepts unique exact license, phone, and normalized-name
matches. Jaro-Winkler matches are review candidates only and must not set accepted property
flags without explicit review. Preserve accepted links and review candidates as private
audit artifacts. The linker must reproduce the permit reconciliation exclusions and
deduplication, reconcile source/loaded/linked/excluded permit counts exactly, and prove
that every BBB-flagged property also has `has_permits = true` before lexicon validation.
The flag links the current BBB snapshot to historical permit contractor
identities; it does not claim that a contractor held BBB accreditation when an older
permit was issued.
For a reviewed 403 outcome, submit browser-free zero-profile artifacts and reconciliation:
```bash
npm run batch:recover-blocked -- \
--config <request.json> \
--receipt <prior-submission.json> \
--evidence <blocked-evidence.json>
```
The evidence must match the exact run, request digest, category, and failed Batch job.From soofi-xyz/soofi-xyz-team-kit, MIT.
More from soofi-xyz/soofi-xyz-team-kit
- 0.604score
build-connect-product
soofi-xyz
Build Connect, the only layer that talks to external systems, as configurable blocks: generic verbs (LIST, FETCH, PUT, MOVE, CALL, POLL, WAIT_FOR_WEBHOOK…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
bootstrap-oracle-infra
elephant-xyz
Verify and bootstrap the local pipeline stack required for county ingestion: the durable workflow server, data directories, the internal database, and the…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
build-console-product
soofi-xyz
Build Console Figma-to-HTML/React creation and editing with MCP, Bedrock AgentCore and the pi harness, plus its runtime and API: versioned UI schemas, safe…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
build-county-transform
elephant-xyz
Build or repair a county transform end to end: capture sample pages, turn them into lexicon records with exact source-request provenance, prove every record…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
build-build-service
soofi-xyz
Build or maintain the Build HTTP API and its source intake, isolated build jobs, CDK synthesis, runtime asset policy, provenance, observable results and…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
build-bootstrap-cli
soofi-xyz
Build or maintain the Environment HTTP API and its plans, Account manifest intake, domain/certificate lifecycle, shared routing, initial Prism installation…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
build-connect-service
soofi-xyz
Maintain the current Connect service runtime and caller compatibility.
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
build-batch-workflows
soofi-xyz
Building batch workflows and data processing pipelines — processing strategy selection, testing, cost control, throttling, idempotency, and failure alerting.
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
build-documentation-product
soofi-xyz
Build or maintain Documentation's publishing API and React/TypeScript developer portal, including OpenAPI reference, guides, previews, interactive requests…
SkillAFreshness: A★ 3Claude Code +9 - 0.564score
apply-engineering-guidelines
soofi-xyz
Applying the company Golden Path engineering standards.
SkillBFreshness: B★ 3Claude Code +9 - 0.561score
babysit-release
soofi-xyz
Use every time the user creates a PR — babysit it through review, merge, and production release, monitor the deployment, and open follow-up fix PRs when a…
SkillBFreshness: B★ 3Claude Code +9 - 0.561score
assemble-communication-runtime
soofi-xyz
Assembling end-to-end communication runtimes from reusable audience, template, and activity capabilities — workflow composition, data contracts, scoring…
SkillBFreshness: B★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 7
- Open issues
- 0
- Last commit (this folder)
- Sep 22, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/soofi-xyz/soofi-xyz-team-kit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from elephant-xyz
- 0.604score
bootstrap-oracle-infra
elephant-xyz
Verify and bootstrap the local pipeline stack required for county ingestion: the durable workflow server, data directories, the internal database, and the…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
build-county-transform
elephant-xyz
Build or repair a county transform end to end: capture sample pages, turn them into lexicon records with exact source-request provenance, prove every record…
SkillAFreshness: A★ 3Claude Code +9
Cite this page
bbb-harvest skill. Agent Mart. https://agentmart.dev/skills/soofi-xyz-bbb-harvest (last updated 2026-10-24)