# Build a company positioning brief from public pages

Build a research brief from up to three approved public pages. Each finding includes the page URL and a verified excerpt that a marketer can check.

**Category** Marketing · Market Research  
**Tools** n8n, Firecrawl, OpenAI, Google Sheets  
**Trigger** Authenticated POST for a company configured in Setup  
**Package** [Workflow JSON](company-positioning-brief.n8n.json) · [Test payloads](test-payloads.json) · [Validation report](validation-report.txt)

Import the JSON in n8n and run **Run with sample data**. The workflow imports inactive with **dryRun** enabled. The sample run uses fictional data and skips connected apps. Select credentials on the named nodes before testing live inputs.

## How it works

1. Resolve a company key to approved page URLs. Firecrawl extracts the main text from each page.
2. OpenAI identifies audience, offer, proof, or positioning claims and cites an excerpt. The workflow verifies that the excerpt appears in the page text.
3. Save the brief, source URLs, and follow-up questions to Google Sheets.

## How to use

1. In **Setup**, add a company key with a **name** and one to three public HTTPS **urls**. A homepage, product page, and case study are a useful starting set. Enter the spreadsheet ID and OpenAI model.
2. Create a tab called **Company Briefs** with headers **Report ID, Company, Findings, Follow-up Questions, Source URLs**. Set Report ID to plain text and connect **Google Sheets OAuth2** on the save node.
3. Attach separate **Header Auth** credentials for Firecrawl and OpenAI using **Authorization: Bearer <API key>**. Select a private inbound **Header Auth** credential on **Receive event**.
4. Send **reportId** and **companyKey** from an internal tool. Use the same ID for a refresh that should replace the previous brief, or a new ID for a new snapshot. The webhook acknowledges receipt. Check the sheet or execution for results.

## Test and operate

- **Verify company brief** should show each finding, its exact excerpt, and its URL in the sample run.
- A wrong domain, unreadable page, or invented quote stops the run before saving.
- Firecrawl passes the first 6,000 characters per page into the analysis. Review the full page when context is important.
- Interpret claims as company positioning. Check independent sources before treating company claims as independently verified facts.

Use only public URLs approved for the workflow. Keep login, account, and private portal URLs outside the company configuration.

[n8n Marketing source](https://n8n.io/workflows/20325-track-competitor-website-changes-with-firecrawl-openai-google-sheets-and-gmail/) · [Firecrawl API](https://docs.firecrawl.dev/api-reference/endpoint/scrape)
