What a strategy contains
| Property | Purpose |
|---|---|
entity_type | The entity type this strategy applies to (e.g. cafe) |
field_name | The field being extracted (e.g. price_of_americano) |
sources | Ordered list of URLs to scrape — instagram_url, facebook_url, or website |
data_type | Whether to pass scraped text, images, or both to the extraction model |
extraction_prompt | Instructions Claude receives when extracting the value from scraped content |
Shared across entities
Strategies are global per(entity_type, field_name) pair. If a strategy for cafe + price_of_americano already exists, every cafe entity benefits from it — the strategy is generated once, not per-entity.
Base fields vs enriched fields
Outscraper provides a set of base fields automatically for every entity:phone, website, rating, reviews, latitude, longitude, category, open_hours, instagram_url, facebook_url, and photos. These never require a strategy.
Any field not in this list triggers strategy generation when first requested.
Generation
When a new subscription requests a field that has no strategy, Pointset enqueues a strategy generation job. Claude evaluates the entity type and field name, selects the best source URLs to scrape, decides whether to use text or image content, and writes an extraction prompt. The result is stored as a strategy row. If no viable source exists for the requested field, the strategy is markedunresolvable and the field assessment on your subscription reflects this.
Feasibility
Generated strategies carry a feasibility signal —high, medium, or low — based on how reliably Claude expects to find the data on the available sources. Low-feasibility strategies result in unresolvable field assessments.