Talent Data Warehouse Agent
Candidate applications sit in Recruit CRM with no member attribution. Ad spend is manually exported from Indeed every week and uploaded to a homegrown spend tool. Your Supabase candidate_profiles table (43 columns) is empty. Trade attributes, licenses, and experience are never extracted. No single source of truth exists for downstream agents, analytics, or a recruiter portal.
Candidates land in Supabase daily, de-duplicated and enriched with trade attributes, and attributed to the right member company. Spend is logged per day per member, replacing manual uploads. Your candidate_profiles table is populated and ready for screening agents and recruiter workflows. One unified source of truth feeds all downstream tools.
Manual recruiting workflows across 16 member companies waste hours every week
Strongpoint Talent recruits HVAC, plumbing, and electrical tradespeople across 16 member companies through Indeed, but candidate applications sit scattered in Recruit CRM while ad spend requires manual CSV exports every week.
Candidates live in an ATS that doesn't attribute them to members or feed downstream tools.
Weekly CSV exports from Indeed are uploaded to a homegrown spend tool with no reliable per-member attribution.
Your Supabase schema has 43 columns for enriched candidate profiles, but zero rows. Trade attributes, licenses, and experience are never extracted.
One Supabase warehouse replaces Recruit CRM and the manual spend loop
Candidates and spend land in Supabase unattended every day, with a manual trigger available on demand.
Repeat applicants are matched by stable identifiers so the same person re-applying is tracked as a new lead, not a duplicate record.
The member company name in each job-posting title is matched to your members table; unmatched jobs are held in a queue for one-click linking.
Primary trade, secondary trades, specializations, experience years, certifications, and state licenses are extracted from Indeed answers and resume text.
Daily Indeed ad spend is logged as per-day rows in a member_spend table, replacing the manual upload and enabling daily reporting and trends.
The agent pulls Indeed applications and the detailed spend report daily using Sagan's crew-scanner Chrome extension, stages them in Supabase, matches each candidate to the member company in the job-posting title, infers trade certifications and experience from resumes, and writes clean candidate profiles and spend rows attributed to the right member. No more CSV exports, no more Recruit CRM, one source of truth.
How the warehouse pipeline works
The agent runs on a daily schedule and pulls from Indeed, cleans the data in Supabase, and flags only the exceptions that need your attention.
The crew-scanner Chrome extension logs into your Indeed employer account and pulls both the applicant list and the detailed spend report (Campaign, Impressions, Clicks, Applies, Spend, CPC, CPAS, CPA). This replaces manual CSV exports.
Candidates and spend are written to a staging table in Supabase, never directly into candidate_profiles. This gives you a chance to clean and de-duplicate before anything touches your official records.
The agent matches repeat applicants by stable identifiers (name, email, phone), infers trade attributes from Indeed question answers and resume text (primary trade, secondary trades, specializations, experience years, certifications, state licenses), and populates the 43-column candidate_profiles schema.
Each candidate is linked to the member company in the job-posting title (e.g. 'HVAC Service Technician (Mountainside Air)'). Unmatched jobs are held in a queue; you link them once, and applicants flow in automatically.
Records missing a member or missing critical fields (contact name, email, phone, location) are flagged and surfaced in a lightweight UI. Everything else flows through automatically.
Daily spend is logged as per-day rows in a member_spend table, attributed to each member. This replaces your Vercel spend tool and enables daily reporting.
Indeed applicant list +
Pulled daily from your Indeed employer account via the crew-scanner Chrome extension. Includes candidate name, email, phone, location, resume text, and answers to your screening questions.
Indeed detailed spend report +
Pulled daily from Indeed Analytics. Columns: Campaign, Impressions, Clicks, Apply starts, Applies, Spend, CPC, CPAS, CPA. Covers all jobs and campaigns in one export.
Job posting titles with member names +
Read from your Indeed jobs dashboard. Member company name appears in parentheses (e.g. 'HVAC Service Technician (Mountainside Air)').
Existing Supabase schema +
Your members table (16 rows), roles table (72 rows), and candidate_profiles table (43 columns, 0 rows) are the load targets.
Stage raw Indeed data +
Land candidates and spend in a staging table in Supabase. Do not write directly to candidate_profiles.
De-duplicate repeat applicants +
Match candidates by stable identifiers (name, email, phone). Each application is tracked as a lead; the same person re-applying is a new lead, not a duplicate.
Infer trade attributes from resume and answers +
Use lightweight-tier LLM to extract primary_trade, secondary_trades, specializations, experience_years, certifications, and state_licenses from Indeed question answers and resume text. Prefer direct answers over inference.
Match candidates to members by job title +
Read the member company name from the job-posting title parentheses. Match to your members table. Hold unmatched applicants in a queue for manual linking.
Flag records missing critical fields +
Identify records missing member, contact name, email, phone, or location. Surface them in the UI for one-click resolution. Everything else flows through automatically.
Attribute spend per member per day +
Log daily Indeed spend as per-day rows in a member_spend table, attributed to each member. Enable retroactive attribution when a job is linked to a member later.
Populated candidate_profiles table +
43-column enriched records with member attribution, trade attributes, experience, certifications, and state licenses. Ready for screening agents and recruiter workflows.
Member_spend table +
Per-day, per-member spend rows from Indeed. Replaces manual CSV uploads and enables daily reporting and trends.
Exceptions review screen +
Lightweight UI showing flagged records (missing member or critical fields) and unlinked jobs. One-click resolution flows records into production.
Automated daily sync +
Unattended pipeline runs on a schedule. Manual 'sync now' trigger available on demand.
Is this for you?
- + Strongpoint Talent and similar multi-member recruiting arms - You recruit for 16+ member companies and must attribute every candidate and every dollar to the right member. This warehouse is purpose-built for that.
- + Teams replacing Recruit CRM or manual ATS workflows - If you're pulling candidates from Indeed into an ATS and exporting CSVs every week, this agent eliminates that busywork.
- + Operations teams that want a single source of truth - Your Supabase schema exists and is ready to be populated. This build fills it with clean, member-attributed candidate and spend data.
- + Teams planning downstream agents and analytics - A unified candidate and spend warehouse is the foundation for screening agents, recruiter portals, and spend analytics. Build this first.
- - Single-location hiring or small teams - If you hire for one company or one location, a simpler Indeed-to-spreadsheet workflow may be enough. This warehouse is built for multi-member attribution complexity.
- - Teams that need real-time candidate screening or phone calls - This build is the data foundation. Screening agents and phone-call workflows are future phases that sit on top of this warehouse.
- - Organizations using Indeed API integrations - This build uses authenticated scraping (crew-scanner Chrome extension) because Indeed does not offer a public self-serve API for employer dashboards. If you need API-first, this is not the right approach.
Hourly enablement sprint with a weekly cadence
This is not a flat-fee scoped app. It is an hourly enablement sprint run on a weekly cadence, soft-capped at approximately 10 hours per build. The goal is to stand up a clean internal data foundation in Supabase that future agents, tools, and the recruiter portal will sit on top of.
- Prototype delivered first: feature-complete with synthetic data, no live integrations needed. Demonstrates the pipeline, member attribution, exceptions review, and spend attribution end-to-end.
- After prototype approval, you provide Indeed viewer account access, crew-scanner and NopeCaptcha Chrome extensions installed on a US-based machine, Supabase production access, and confirmation of the Indeed-field-to-candidate-profiles-column mapping.
- Early validation step: run the crew-scanner extraction against your actual Indeed employer account to confirm it works before full build-out.
- Ongoing maintenance: authenticated Indeed scraping is inherently brittle and ToS-sensitive. The hourly enablement model is well-suited to absorb ongoing maintenance as Indeed changes its UI.
Will this replace Recruit CRM entirely?
Yes. The warehouse pulls candidates directly from Indeed into Supabase, de-duplicates them, and enriches them with trade attributes. Recruit CRM is phased out. Your Supabase candidate_profiles table becomes the single source of truth for all downstream tools, screening agents, and the recruiter portal.
How do you handle candidates who apply multiple times?
Each application is tracked as a separate lead, not merged into a duplicate record. The pipeline matches repeat applicants by stable identifiers (name, email, phone) so you can see when the same person re-applies over time. This keeps your lead history clean and actionable.
What happens if a job posting doesn't have a member company name?
Applicants from unlinked jobs are held in a queue and never dropped. You link the job to a member once in the UI, and all applicants from that job flow into the warehouse automatically. Retroactive linking also back-fills any spend dollars already attributed.
Does the warehouse automatically pull Indeed ad spend?
Yes. The same extraction pulls your daily Indeed spend report (Campaign, Impressions, Clicks, Applies, Spend, CPC, CPAS, CPA) and logs it as per-day rows in a member_spend table. This replaces your manual CSV exports and enables daily reporting and trends per member.
What trade information does the warehouse extract from candidates?
The pipeline infers primary trade, secondary trades, specializations, years of experience, certifications, and state licenses from Indeed question answers and resume text. It prefers direct answers from your screening questions over inference, so the system generalizes as you add new questions.
What fields must be present before a candidate enters the warehouse?
Four critical fields gate ingestion: member company, contact name, email, and phone. Records missing any of these are flagged and held from auto-ingestion. Your team resolves them in a lightweight UI, and everything else flows through automatically.
Does the warehouse run automatically or do you have to trigger it manually?
Both. The pipeline runs unattended on a daily schedule by default. A manual 'sync now' trigger is also available on demand. The only routine human touches are linking a new job to a member and clearing flagged exceptions.
Is this a finished app or a foundation for future tools?
This is the data foundation. It populates your Supabase warehouse with clean, member-attributed candidate and spend data. Future phases build on top: screening agents, recruiter portals, analytics, and post-screening phone calls all depend on this unified source of truth existing first.
Shares the Indeed extraction and spend-export pattern for teams consolidating applicant data into a warehouse.
Demonstrates multi-source data consolidation into a queryable foundation for downstream analytics and agents.
Implements multi-entity attribution and exception handling in a financial reconciliation pipeline.
Ready to replace Recruit CRM and manual spend exports with one unified warehouse.
The prototype is feature-complete and demonstrates the full pipeline with synthetic data. After you approve, we run the crew-scanner extraction against your actual Indeed account to confirm it works, then build the production pipeline into your Supabase schema.