> ## Documentation Index
> Fetch the complete documentation index at: https://docs.samsearch.co/llms.txt
> Use this file to discover all available pages before exploring further.

# AI Recommendations

> Get personalized opportunity matches based on your Company Profile

<Tip>
  Recommendations surface the most relevant contracts and solicitations for your company — no searching required. The AI scores every candidate opportunity against your profile and shows you the results, sorted by fit.
</Tip>

<Frame>
  <img src="https://mintcdn.com/samsearch/Ndq-dGSWLS30S7mV/images/recommendations/recommendations-main.jpg?fit=max&auto=format&n=Ndq-dGSWLS30S7mV&q=85&s=95223624406aa71bf84a9d5dc7ec47e2" alt="AI Recommendations page showing personalized opportunity matches" style={{ maxWidth: '100%', height: 'auto' }} width="1420" height="678" data-path="images/recommendations/recommendations-main.jpg" />
</Frame>

<Card title="How AI Recommendations work" icon="diagram-project" href="/features/recommendations/how-it-works">
  The four-stage pipeline behind every match, plus a troubleshooting checklist for when results look wrong.
</Card>

## Getting your first recommendations

<Steps>
  <Step title="Complete your Company Profile">
    Add positive keywords, NAICS/PSC codes, and a business description in [Company Profile](/features/business-profile). At least one of these needs to be filled in — with none set, generation is skipped even though the run reports success. See [the signal gate](/features/recommendations/how-it-works#stage-1-retrieval) for details.
  </Step>

  <Step title="Refresh recommendations">
    Click **Refresh Recommendations** to run a new analysis. Every account shares a daily cap on manual refreshes.
  </Step>

  <Step title="Review your matches">
    Browse recommended opportunities sorted by match score. Each card explains why it's a fit.
  </Step>

  <Step title="Take action">
    Save it, start a Journey, give feedback, or open the full opportunity.
  </Step>
</Steps>

## Tabs

The Recommendations page has three tabs:

* **All** — Every recommended opportunity across all sources
* **Profile** — Opportunities matched directly against your Company Profile
* **Saved Searches** — Opportunities qualified through your saved searches' scheduled email alerts (see [AI Qualification](/features/qualification))

<Info>
  The Profile and Saved Searches feeds are generated differently. Clicking **Refresh Recommendations** only regenerates the **Profile** feed — **Saved Searches** results update when that saved search's scheduled alert runs, not on manual refresh.
</Info>

## Refreshing

<Frame>
  <img src="https://mintcdn.com/samsearch/MzK9XQNjIG0mn0B4/images/recommendations/recommendations-activity-strip.png?fit=max&auto=format&n=MzK9XQNjIG0mn0B4&q=85&s=b38266e671af98968b09b34e9f4f8057" alt="Recommendations page activity strip showing counts of opportunities scanned, evaluated, and matched" style={{ maxWidth: '100%', height: 'auto' }} width="1708" height="60" data-path="images/recommendations/recommendations-activity-strip.png" />
</Frame>

Click **Refresh Recommendations** (top right) to trigger a new run against your Company Profile. The button shows status as it runs: **Starting…** → **Recommendations Running** → complete. If a teammate already has a refresh running, you'll see that instead of starting your own.

Manual refreshes are capped at **5 per day**, and the cap is shared across your whole organization — one teammate's refresh counts against everyone's quota. The remaining count is shown below the button as **N of N refreshes remaining today**, and resets at midnight UTC.

An activity strip at the top of the page shows the scale of the latest run — how many opportunities were read, how many were rejected during qualification, and how many were delivered.

### Empty states

If the page is empty, the message tells you why:

* **"No opportunities match your filters"** — your filters (a match score above 0%, limited sources, or the New-only toggle) are hiding everything. The message names the active filters and offers **Clear filters**.
* **"Your profile is set up — run a refresh…"** — your profile is complete but no run has produced results yet. Click **Refresh Recommendations** right from the empty state.
* **Update Company Profile** — your profile doesn't have enough to match on yet (see the [signal gate](#getting-your-first-recommendations)).

<Info>
  If recommendations don't appear after a refresh, contact [support@samsearch.co](mailto:support@samsearch.co).
</Info>

## Reading your results

### Match score

Each card shows a score from 0–100% with a fit label:

| Label | Score |
| - | - |
| Excellent Fit | ≥ 80% |
| Strong Fit | ≥ 65% |
| Possible | ≥ 50% |
| Weak | ≥ 35% |
| Poor | \< 35% |
| Not Rated | No score computed |

The score is a weighted blend of four dimensions — strategic fit, structural fit, scope alignment, and value & risk. See [the full breakdown](/features/recommendations/how-it-works#stage-3-scoring) for how they're weighted.

You may also see a **Needs review** badge (the AI couldn't confirm fit from the available attachments) or a **Low fit** badge (related to your work, but something is blocking it). Whether you see these at all depends on your [Recommendation volume](#recommendation-volume) — Low fit results only appear at **Everything in my space**, and Needs review results are hidden at **Strong matches only**. Both badges are explained in the [pipeline breakdown](/features/recommendations/how-it-works#needs-review-and-low-fit-badges).

### View Analysis

Click **View Analysis** on any card to expand the full breakdown:

* **Why this matches** — every reason the opportunity fits your profile
* **Potential misalignments** — reasons it might not be a fit
* **Verify before you bid** — a checklist of things worth confirming before you commit

<Note>
  The **Verify before you bid** checkboxes are local to your current view — they reset when you collapse the card or reload the page. They're a reading aid, not a saved checklist.
</Note>

### Match score reasoning on opportunity pages

Opportunity pages show the same match score alongside the reasoning behind it — what lines up with your profile, and where it's a stretch — so you can see why something scored the way it did without leaving the opportunity.

<Frame>
  <img src="https://mintcdn.com/samsearch/MzK9XQNjIG0mn0B4/images/recommendations/match-score-reasoning-opportunity-page.png?fit=max&auto=format&n=MzK9XQNjIG0mn0B4&q=85&s=d169c06aff786cd3f6557449417d6881" alt="Opportunity page showing match score with fit reasoning, including strengths and stretch areas" style={{ maxWidth: '100%', height: 'auto' }} width="1364" height="1337" data-path="images/recommendations/match-score-reasoning-opportunity-page.png" />
</Frame>

<Note>
  If an opportunity was screened out or scored low during qualification, the contract page shows an explanatory banner instead of a match score. See [the "not recommended" banner](/features/recommendations/how-it-works#the-not-recommended-banner-on-contract-pages).
</Note>

### Giving feedback

<Frame>
  <img src="https://mintcdn.com/samsearch/zeNhOlOARkPzzRTv/images/recommendations/recommendations-card-buttons.png?fit=max&auto=format&n=zeNhOlOARkPzzRTv&q=85&s=b17c2ee3e382c4b5bf22b851fba6ff92" alt="Recommendation card showing thumbs up, thumbs down, save, View Analysis, Start Journey, and Dismiss actions" style={{ maxWidth: '100%', height: 'auto' }} width="1040" height="179" data-path="images/recommendations/recommendations-card-buttons.png" />
</Frame>

Click **thumbs up** or **thumbs down** on any card. Neither submits immediately — both open a dialog asking you to pick at least one reason:

* **Thumbs up** adds the opportunity to [Journey Hub](/features/journey-hub) and tells the AI what made it a good match.
* **Thumbs down** dismisses the opportunity and tells the AI what made it a poor fit.

<Note>
  Feedback is folded into a nightly digest, not applied instantly — and it can only move future scores, never cause an outright reject. See [Learned insights](/features/recommendations/how-it-works#learned-insights-what-thumbs-feedback-actually-changes) for what it does and doesn't change.
</Note>

## Filtering & sorting

<Frame>
  <img src="https://mintcdn.com/samsearch/Ndq-dGSWLS30S7mV/images/recommendations/recommendations-filters.jpg?fit=max&auto=format&n=Ndq-dGSWLS30S7mV&q=85&s=602b1c08949ce1bdb9e9b75a08bbd86d" alt="Recommendations filters panel showing Match Score slider and Opportunity Sources" style={{ maxWidth: '100%', height: 'auto' }} width="1517" height="784" data-path="images/recommendations/recommendations-filters.jpg" />
</Frame>

Click **Filters** (top right) to open the filters panel:

* **Match Score slider** — Set a minimum threshold (0–100%); recommendations below it are hidden from view
* **Opportunity Sources** — Show only specific sources: Federal, SLED (State/Local/Education), GSA eBuy, DIBBS, Canada, Recompete, Forecasts, Subcontracting, Grants, SBIR/STTRs

<Info>
  Grants, SBIR/STTRs, and Canada are **opt-in** for recommendations — they won't appear until you turn them on for recommendations in the **Sources & Alerts** tab of your [Company Profile](/features/business-profile). GSA eBuy is also off for recommendations by default and has no toggle there.
</Info>

**Sort by** — Match Score (High to Low / Low to High), Date Added (Newest / Oldest First), or Title (A–Z / Z–A). Results load 20 at a time; scroll to load more.

## Acting on recommendations

For each recommended opportunity:

* **View Analysis** — Expand the full AI breakdown
* **Thumbs up / down** — Give feedback that feeds the nightly learning digest
* **Save** — Add to [Saved Opportunities](/features/leads)
* **Start Journey** — Create a pursuit in [Journey Hub](/features/journey-hub)
* **Dismiss** (✕) — Remove from your list with no reason required — different from thumbs-down, which requires one

Above the list, three page-level buttons manage your feed as a whole:

* **Dismiss all** — Archives every recommendation matching your current filters
* **Export** — Download the current result set as CSV
* **Archive** — Opens a separate page with two tabs: **Dismissed** (recommendations you dismissed — no restore) and **Journey Hub** (recommendations you turned into a Journey). See [the three dismissed surfaces](/features/recommendations/how-it-works#the-three-dismissed-surfaces) for how this differs from Search's Dismissed Opportunities page.

## Recommendation volume

**Recommendation volume** controls how much the AI shows you. Every level draws on the same sources and the same ranked results — it decides how far down that ranking you see, so you can cut the long shots or keep everything relevant. Find it in the **Sources & Alerts** tab of your [Company Profile](/features/business-profile), between **Opportunity Sources** and the notification settings.

| Level | What you see | Max per email digest |
| - | - | - |
| **Strong matches only** | Only opportunities the qualifier judged a clear fit, with no deal-breaker against your profile. Expect quiet days. | 5 |
| **Balanced** *(Default)* | Clear fits, plus the ones worth a look before deciding. Weak fits are hidden; a deal-breaker doesn't disqualify on its own. | 10 |
| **Everything in my space** | Every opportunity that's the kind of work you do, including weak fits and ones that trip a deal-breaker. You judge the wrinkles. | 20 |

* **It's per AI Profile.** Each [AI Profile](/features/business-profile#ai-profiles) has its own setting.
* **It takes effect immediately** — on the Recommendations list and in the daily email digest, including recommendations you've already been sent. Nothing is thrown away: loosening the setting brings back opportunities that were held below the bar, not discarded.
* **It's separate from the Match Score slider.** The level decides *which kinds* of matches reach you; the **Match Score slider** under **Filters** then hides anything below the score you pick.
* Changing it requires the owner or admin role, or the **Edit company profile** [permission](/features/settings#member-permissions). Without it, the options are shown but can't be changed.

<Tip>
  Getting too many long shots? Switch to **Strong matches only**. Seeing too few recommendations, even with filters cleared? Try **Everything in my space** before rewriting your profile.
</Tip>

## Email digest

Recommendations also regenerate once a day as part of a scheduled batch, which emails a digest of your best matches — whether you get it is set in the **Notifications** section of the **Sources & Alerts** tab of your [Company Profile](/features/business-profile) (see [Notifications](/features/notifications#choosing-where-each-notification-goes)). How many matches the digest lists depends on your [Recommendation volume](#recommendation-volume) (up to 5, 10, or 20).

<Warning>
  Only recommendations scoring **50% or higher** are ever included in the email digest, whatever your volume level. Lower-scoring results still appear in-app — they're just never emailed. This is by design, not a delivery problem.
</Warning>

## Improving your recommendations

| Profile field | Effect |
| - | - |
| Business Description | Feeds the signal gate and semantic matching — most impactful field if you have nothing else set |
| Positive Keywords | One of the strongest matching signals — matched as a literal substring, so exact phrasing matters |
| Negative Keywords | Lowers the score wherever the literal phrase appears |
| NAICS / PSC Codes | Trusted differently by source — see [code trust](/features/recommendations/how-it-works#naics-and-psc-codes-are-trusted-differently-by-source) |
| Certifications | Used to judge set-aside eligibility — with none set, eligibility is treated as unknown, not disqualifying |
| Operating Regions | If unset, location is left out of the evaluation entirely |
| Deal Makers / Deal Breakers | Free-text criteria the AI reasons about directly when qualifying and scoring an opportunity |

<Info>
  Documents uploaded to your Company Profile are used for proposal generation and Sammy context — they do not affect your recommendation results. To improve recommendations, refine your Business Description, keywords, codes, and Deal Makers/Breakers instead.
</Info>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.