Concept3D Account Signals (browser)
Under maintenancePricing
Pay per usage
Concept3D Account Signals (browser)
Under maintenanceHeadless-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
Maintained by CommunityActor 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:
| Field | Signal | Notes |
|---|---|---|
axe_core, axe_core_bp, axe_total_issues, axe_over_20 | Campus-map accessibility | axe_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_customer | Map vendor | Vendor read from the rendered map page — sole authority for the customer flag. |
redesign_likely, redesign_reason, before_png_url, after_png_url | Website redesign | YES 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_changed | Competitor + CMS | Static 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-actornpm installnpx playwright install chromium # if not already presentnpx 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-cliapify 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.