Concept3D Account Signals (browser) avatar

Concept3D Account Signals (browser)

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Concept3D Account Signals (browser)

Concept3D Account Signals (browser)

Under maintenance

Headless-browser account signals for Concept3D: campus-map axe-core error count, map vendor / is-Concept3D-customer, website redesign (Wayback before/after + vision), competitor + CMS fingerprint. One account in -> one signal row out. Orchestrated by Clay Workflows or Deepline.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Jacob Tuwiner

Jacob Tuwiner

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Categories

Share

Concept3D Signals — Apify actor

The headless-browser half of the Concept3D account-signals build, packaged as one Apify actor so Clay Workflows (or Deepline) can call it and merge the result with the native (API/Claygent) signals. This is the "keystone" from ../CLAY-WORKFLOWS-REBUILD-PLAN.md — it unblocks the three signals Clay can't run natively (axe, map vendor, redesign).

Ported verbatim from the tested prototypes:

  • ../scripts/axe/signals.mjs — competitor/CMS fingerprint, map discovery, map vendor, axe count
  • ../scripts/axe/redesign-qa-v2.mjs — quality-gated Wayback before/after + vision consensus

What it produces

One account in → one row out (Actor.pushData). Fields:

FieldSignalNotes
axe_core, axe_core_bp, axe_total_issues, axe_over_20Campus-map accessibilityaxe_over_20 flags core+bp > 20 (matches Sam's axe DevTools default). Flip to core if her best-practices toggle is OFF — one line in axeMap().
map_url, map_vendor, is_concept3d_customerMap vendorVendor read from the rendered map page — sole authority for the customer flag.
redesign_likely, redesign_reason, before_png_url, after_png_urlWebsite redesignYES only if every good snapshot agrees "major" (conservative). PNGs stored in the run's key-value store.
competitor_vendor, current_cms, cms_then, cms_now, cms_changedCompetitor + CMSStatic multi-page fingerprint.
unitid(pass-through)Enrollment is computed in Clay, not here; kept so the row stays joined.

Not here: enrollment (native Clay → IPEDS HTTP) and construction (Claygent chain). See ../CLAY-BUILD-SPECS.md.

Input

Single account (the Clay enrich-node pattern):

{ "domain": "gatech.edu", "school_name": "Georgia Tech" }

Optional: map_url (pin the map when discovery misses), signals (subset of competitor_cms / map_axe / redesign), accounts (array, for batch tests).

Secrets

The redesign vision judge needs an Anthropic key. Set it as an actor environment variable / secret named ANTHROPIC_API_KEY (Apify console → Actor → Settings → Environment variables, mark Secret). Fallback: pass anthropic_key in input. Swap the judge to OpenAI for Concept3D's production env (one fetch block in judge()), per ../config/signals.json.

Run locally

cd deepline/apify-actor
npm install
npx playwright install chromium # if not already present
npx apify run # uses storage/key_value_stores/default/INPUT.json
# results -> storage/datasets/default/*.json ; screenshots -> storage/key_value_stores/default/*.png

(For the redesign judge locally: export ANTHROPIC_API_KEY=... first, or it returns no key.)

Deploy

npm i -g apify-cli
apify login # needs APIFY_TOKEN (placeholder noted in ../.env)
apify push # builds the Docker image on Apify, returns the actor id

Call it from Clay

In the Clay workflow, an enrich node runs the actor synchronously and reads the dataset items back. Candidate action: Clay's Apify "Run Actor (sync, get dataset items)" integration, or a generic HTTP node hitting:

POST https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=<APIFY_TOKEN>
Body: { "domain": "{{domain}}", "school_name": "{{school_name}}" }

Map the returned fields to the Salesforce columns in ../config/signals.json. Full node graph in ../CLAY-BUILD-SPECS.md.

Calibration carry-over

The one open client dependency from ../MEETING-PRIORITIES.md: lock axe_over_20 to Sam's recorded counts + her exact axe settings on 2–3 schools (we track her extension within ±4). Best-practices on/off is the toggle that moves the number most.