Leads
Profile types and matching
A lead is a contact: a name, an email, a company. A profile is a structured record of whatever you choose to collect, with fields you define. Profile types set those fields, and matching rules decide which profiles fit what you are looking for.
What it is for
Use profile types when the things you collect have attributes worth comparing, such as a lender's loan range, a restaurant's cuisine or a fund's check size. Once profiles share a schema, a matching rule can filter them, score them from 0 to 100, or ask an AI model to judge each one against a description.
Create a profile type
- Open the Profile Types page (
/dashboard/profile-types) and create a new one. - Pick Start from Template to begin with a built-in schema, or Create Custom to define your own fields.
- For a custom type, give each field a name and a type. The schema is standard JSON Schema, so a field can be a string, a number, or an array, and you can mark fields as required.
Profiles of that type then appear under Profiles. Each profile has a status: NEW (not yet reviewed), VERIFIED, OUTDATED or ARCHIVED.
Over the API, create one with POST /api/profile-types and a name, a slug and a JSON Schema in schema.
Choose a match type
| Type | What it returns | Use it when |
|---|---|---|
FILTER | Matched or not matched | You have hard requirements a profile must meet. |
SCORED | A score from 0 to 100, with a breakdown per criterion | Fit is a matter of degree and some criteria matter more than others. |
AI | Matched or not, a score, and written reasoning | The requirement is easier to describe in a sentence than as field comparisons. |
Filter rules
A filter rule is a list of conditions on fields: equals, not equals, contains, starts with, ends with, greater than, less than, and exists. In the dashboard a profile must meet every condition to match.
{"name": "Bridge lenders with a $5M minimum or lower","profileTypeId": "profile_type_123","matchType": "FILTER","criteria": {"minLoanAmount": { "lte": 5000000 },"loanTypes": { "contains": "bridge" }}}
Scored rules
A scored rule gives each criterion its own score and a weight, then combines them into one number. The dashboard offers four ways to score a field: exact match, range, threshold and enum priority. Raise a criterion's weight to make it count for more.
{"name": "Ideal Lender Score","profileTypeId": "profile_type_123","matchType": "SCORED","criteria": {"minLoanAmount": { "target": 10000000, "tolerance": 2000000 },"loanTypes": { "preferred": ["bridge", "term"] }},"weights": { "minLoanAmount": 2.0, "loanTypes": 1.5, "regions": 1.0 }}
AI rules
An AI rule sends each profile to a language model with your prompt. Write the prompt as you would brief a colleague, and use {{profile}} and {{profileType}}where the profile's data and its type should be inserted. The criteria object can be empty.
{"name": "AI Lender Matcher","profileTypeId": "profile_type_123","matchType": "AI","criteria": {},"aiPrompt": "Evaluate if this lender {{profile}} of type {{profileType}} would be a good fit for a bridge loan of $15M for a multifamily property."}
Create, preview and run a rule
- Open the Matching Rules page (
/dashboard/matching) and create a rule. Name it, choose the profile type it applies to, and pick the match type. - Add the filter conditions, the scoring criteria and weights, or the AI prompt.
- Run it with Run Now in the rules list, or Run Matchingon the rule's own page. The rule is applied to every profile of its type.
- Read the results on the rule's page: the match rate, the average score, and a table of profiles with their scores.
Over the API you can preview a rule before saving it. A preview takes the same fields as a rule and returns results without storing anything, for all three match types.
# Try a rule without saving itcurl -X POST https://scrappy.gg/api/matching/preview \-H "Authorization: Bearer sk_your_api_key" \-H "Content-Type: application/json" \-d '{"profileTypeId": "profile_type_123","matchType": "SCORED","criteria": { "minLoanAmount": { "target": 10000000, "tolerance": 2000000 } },"weights": { "minLoanAmount": 2.0 }}'# Run a saved rule against every profile of its typecurl -X POST https://scrappy.gg/api/matching/execute \-H "Authorization: Bearer sk_your_api_key" \-H "Content-Type: application/json" \-d '{"ruleId": "rule_123", "profileTypeId": "profile_type_123"}'
Stored results are available at GET /api/matching/results?ruleId=rule_123, with page and pageSize for paging.
What it costs
AI matching costs 1 credit per profile evaluated, or 3 with pro matching. See Credits and billing for the full list.
Where to go next
- Deal campaigns: have a profile type and matching rules suggested from a brief.
- Sources and AI discovery: where profiles come from.
- Chat agent: list rules and run a match by asking.