FutureSearch Logofuturesearch
  • Blog
  • Solutions
  • Research
  • Docs
  • Evals
  • Company
  • Get Researchers
FutureSearch Logo

General inquiry? You can reach us at hello@futuresearch.ai.

Company

Team & CareersPressPrivacy PolicyTerms of Service

Developers

SDK DocsAPI ReferenceCase StudiesGitHub

Follow Us

X (Twitter)@dschwarz26LinkedIn
FutureSearchdocs
Your research team
Installation
  • All install methods
  • Claude.ai
  • Claude Cowork
  • Claude Code
  • Web App
  • Python SDK
  • Skill
  • MCP Server
Reference
  • API Key
  • classify
  • dedupe
  • forecast
  • merge
  • rank
  • agent_map
  • screen
  • Progress Monitoring
  • Chaining Operations
Guides
  • LLM-Powered Data Labeling
  • Add a Column via Web Research
  • Classify and Label Rows
  • Deduplicate Training Data
  • Filter a Dataset Intelligently
  • Join Tables Without Shared Keys
  • Rank Data by External Metrics
  • Resolve Duplicate Entities
  • Scale Deduplication to 20K Rows
Case Studies
  • Deduplicate Contact Lists
  • Deduplicate CRM Records
  • Enrich Contacts with Company Data
  • Fuzzy Match Across Tables
  • Link Records Across Medical Datasets
  • LLM Cost vs. Accuracy
  • Merge Costs and Speed
  • Merge Thousands of Records
  • Multi-Stage Lead Qualification
  • Research and Rank Web Data
  • Run 10,000 LLM Web Research Agents
  • Score Cold Leads via Web Research
  • Score Leads from Fragmented Data
  • Screen 10,000 Rows
  • Screen Job Listings
  • Screen Stocks by Economic Sensitivity
  • Screen Stocks by Investment Thesis
FutureSearchby futuresearch
by futuresearch

Screen Job Listings

Go to futuresearch.ai/app, upload job_postings.csv, and enter:

Screen each job posting to find roles that meet ALL THREE criteria: 1. Remote-friendly: explicitly allows remote, hybrid, or distributed work. 2. Senior-level: title includes Senior/Staff/Lead/Principal, or requires 5+ years. 3. Salary disclosed: specific compensation figures, not "competitive" or "DOE".

7 of 15 postings pass (46.7%). Results take under a minute.

Add the everyrow connector if you haven't already. Then upload job_postings.csv and ask Claude:

Screen each job posting to find roles that meet ALL THREE criteria: 1. Remote-friendly: explicitly allows remote, hybrid, or distributed work. 2. Senior-level: title includes Senior/Staff/Lead/Principal, or requires 5+ years. 3. Salary disclosed: specific compensation figures, not "competitive" or "DOE".

7 of 15 postings pass (46.7%). Results take under a minute.

Claude Code can read a job posting and tell you if it's remote-friendly. But what if you need to screen many postings against three criteria simultaneously, with structured yes/no output for each?

Here, we get Claude Code to screen 15 job postings for roles that are remote-friendly, senior-level, and have disclosed salary.

MetricValue
Rows processed15
Rows passing7 (46.7%)
Total cost$0.03
Time57 seconds

Add everyrow to Claude Code if you haven't already:

claude mcp add futuresearch --scope project --transport http https://mcp.futuresearch.ai/mcp

Download job_postings.csv. Tell Claude:

Screen each job posting to find roles that meet ALL THREE criteria:
1. Remote-friendly: explicitly allows remote, hybrid, or distributed work
2. Senior-level: title includes Senior/Staff/Lead/Principal, or requires 5+ years
3. Salary disclosed: specific compensation figures, not "competitive" or "DOE"

Claude calls everyrow's screen MCP tool:

Tool: everyrow_screen
├─ task: "Screen each job posting to determine if it meets ALL THREE criteria..."
├─ input_csv: "/Users/you/job_postings.csv"
└─ response_schema: null

→ Submitted: 15 rows for screening.
  Session: https://futuresearch.ai/sessions/17d3075d-1788-4fba-8c46-a20f169976ec
  Task ID: ab78...

Tool: everyrow_progress
→ Completed: 15/15 (0 failed) in 57s.

Tool: everyrow_results
├─ task_id: "ab78..."
├─ output_path: "/Users/you/qualified_jobs.csv"
→ Saved 7 rows to /Users/you/qualified_jobs.csv

7 of 15 postings qualified. View the session.

CompanyTitleWhy It Passed
TechCorpSenior Backend EngineerRemote (US), 7+ years, $180k-220k
DataDriven IncStaff Data ScientistHybrid (NYC), Staff title, $200k-250k
RemoteFirst CoLead Frontend Engineer100% Remote, Lead title, $160k-190k
FinTech ProSenior Security EngineerRemote (EU), Senior title, disclosed salary
HealthTechSenior Product ManagerDistributed team, Senior title, salary range
MegaCorpStaff SREHybrid (Seattle), Staff title, $190k-240k
EdTech PlusSenior iOS DeveloperRemote first, Senior title, $140k-175k

All 15 rows were decisive on the first pass (7 yes, 8 no, 0 borderline). Traditional keyword matching achieves ~68% precision on these criteria; semantic screening exceeds 90%.

The everyrow SDK screens job postings with LLM-powered evaluation, returning structured results with per-criterion breakdowns.

MetricValue
Rows processed15
Rows passing7 (46.7%)
pip install everyrow
export EVERYROW_API_KEY=your_key_here  # Get one at futuresearch.ai/api-key
import asyncio
import pandas as pd
from pydantic import BaseModel, Field
from everyrow import create_session
from everyrow.ops import screen

job_postings = pd.read_csv("job_postings.csv")

class JobScreeningResult(BaseModel):
    passes: bool = Field(description="Whether the job meets ALL three criteria")
    is_remote_friendly: bool = Field(description="Allows remote/hybrid/distributed work")
    is_senior_level: bool = Field(description="Senior/Staff/Lead/Principal or 5+ years")
    has_salary_disclosed: bool = Field(description="Specific salary figures provided")
    reasoning: str = Field(description="Brief explanation")

async def main():
    async with create_session(name="Job Posting Screening") as session:
        result = await screen(
            session=session,
            task="""
                Screen job postings for ALL THREE criteria:
                1. Remote-friendly: explicitly allows remote/hybrid/distributed work
                2. Senior-level: title includes Senior/Staff/Lead/Principal or 5+ years
                3. Salary disclosed: specific compensation figures, not "competitive"
            """,
            input=job_postings,
            response_model=JobScreeningResult,
        )
        return result.data

results = asyncio.run(main())

7 of 15 postings passed all three criteria. The structured output includes individual boolean fields for each criterion plus reasoning, making it easy to analyze which criteria are most commonly failed.