QuoteWeaver Privacy Policy

Effective Date: June 17, 2026

Last Updated: June 17, 2026


1. Who We Are

QuoteWeaver is a Shopify application developed and operated by CGN Media Group LLC ("we," "us," or "our"). Our registered address is 5036 3rd Ave S, St Petersburg FL 33707. You can reach our privacy team at chad@tide-flow.com.

QuoteWeaver is an AI-powered B2B quoting tool for Shopify merchants. When a wholesale or B2B buyer sends a free-text request for quote (RFQ), QuoteWeaver parses it into line items, resolves each line to a real catalog SKU with a confidence score, prices it against the merchant's B2B price list, assembles a Shopify draft order, and drafts a reply email. This policy explains how QuoteWeaver collects, uses, stores, and protects personal data in the course of providing that service.

This policy applies to:


2. What Data We Collect and Why

QuoteWeaver accesses data through the Shopify Admin API when a merchant installs the app and when a quote is built. We request only the data strictly necessary to produce a quote and a draft order. We do not perform bulk exports, engage in marketing or advertising, build independent customer profiles, or sell any data to third parties.

2.1 RFQ Text

What we collect: The raw, free-text request a buyer sends (pasted or forwarded into the RFQ Inbox). This text frequently contains the buyer's name, company, and email, plus the products and quantities they want.

Why: The RFQ is the input to the entire workflow. QuoteWeaver parses it into structured line items; without it, there is no quote.

Where stored: Quote.rfqText and inside Quote.contextSnapshot.

2.2 Customer / Buyer Contact Data

What we access: Customer ID (Shopify GID), customer name, and email address for the buyer tied to a quote.

Why: The buyer's name and email are used to (1) attach the customer as the draft order's purchasing entity via draftOrderCreate, and (2) personalize and address the AI-drafted reply email. We do not use this data for marketing, retargeting, or any purpose outside the quoting workflow.

Scope used: read_customers (Protected Customer Data).

Data minimization: Only the single customer tied to a quote is read. No customer list exports, no marketing segmentation.

2.3 B2B Company / Contact Data (Shopify Plus)

What we access: On Shopify Plus with B2B enabled, the company name, company contact (name + email), and company location associated with a quote.

Why: To attach the correct B2B purchasingEntity (company contact / location) to the draft order and to apply the store's native B2B price list.

Scope used: read_companies (Protected Customer Data).

Data minimization: Only the company on the active quote is read. On non-Plus (Basic) stores this scope is inert — the native B2B objects are unavailable and QuoteWeaver falls back to a merchant-defined price list and a standard customer draft order.

2.4 Product / Catalog Data

What we access: Product title, type, tags, variant SKU, and price for products in the merchant's catalog.

Why: To resolve each RFQ line to a real catalog SKU (with a confidence score) and to price it. This is store data, not customer data.

Scope used: read_products.

Data minimization: Catalog reads are paginated and capped; no customer, order, or company data is accessed through this scope.

2.5 Quote Log (Line Items, Pricing, Draft Order)

What we store: For every RFQ processed, QuoteWeaver writes a Quote record to our database. This includes:

Why: The quote log is the merchant's reproducible record of every quote — supporting dispute resolution ("what did we quote them?"), and calibrating SKU-resolution accuracy on the merchant's own catalog over time.

Retention: PII fields (buyerName, buyerEmail, companyName, rfqText, draftReply, and the buyer block of contextSnapshot) are anonymized on a customers/redact webhook (see Section 6) and purged with all shop data on shop/redact. A scheduled retention purge of old resolved quotes is applied in production.

2.6 Merchant Settings and Price Lists

What we store: The merchant's ShopSettings (rep voice for replies, RFQ forwarding address, autonomy mode, confidence threshold, auto-create-draft opt-in) and PriceList / PriceTier records (SKU, retail price, MOQ, volume breaks). These contain no end-customer PII.

Why: To persist the merchant's configuration and the B2B pricing source between sessions.

Retention: Deleted on shop/redact.

2.7 Session Data

What we store: The Shopify access token issued after OAuth (in the Session table), the shop domain, and — if Shopify provides them during the OAuth handshake — the merchant account owner's first name, last name, email, and locale.

Why: The access token is required to call the Shopify Admin API on the merchant's behalf.

Retention: Deleted when the app is uninstalled (app/uninstalled webhook) and on shop/redact.


3. How We Use Your Data

We use the data described above exclusively to:

1. Produce quotes — parse the RFQ, resolve lines to SKUs, and price them against the merchant's B2B price list.

2. Assemble draft orders — create a Shopify draft order from the priced quote, with the buyer / B2B company attached as the purchasing entity.

3. Draft buyer replies — generate a merchant-branded reply email the merchant can edit and send.

4. Log quotes — maintain an auditable record for merchants to review, and to calibrate resolution accuracy on the merchant's own catalog.

We do not use your data to:


4. Subprocessors and Data Transfers

QuoteWeaver relies on the following subprocessors, each of whom may receive personal data in order to provide the service:

4.1 Anthropic PBC

Role: AI inference engine (RFQ parsing only).

Data received: When a live ANTHROPIC_API_KEY is configured, the RFQ text (which may contain the buyer's name, company, and email) and the product catalog data are transmitted to the Anthropic API to parse the RFQ into line items. When no API key is configured, parsing is fully local (a deterministic parser) and no data leaves the app. SKU resolution and pricing are always deterministic and never sent to Anthropic for a decision.

Location: United States.

Training opt-out: Anthropic does not use API inputs or outputs to train its models. This is a commitment in Anthropic's API Terms of Service and applies to all API customers, including QuoteWeaver. Merchants can verify this at [https://www.anthropic.com/legal/privacy](https://www.anthropic.com/legal/privacy). QuoteWeaver does not opt into any model training program.

4.2 Hosting and Database Provider

Role: Application hosting and managed Postgres database.

Data received: All data stored in the production database, including Quote records (with buyer PII and contextSnapshot), Session, ShopSettings, and PriceList records.

Location: United States (default — Render, Oregon, per render.yaml). Merchants requiring EU data residency should contact us before installation. The current production provider is disclosed on our website at [URL].

4.3 Email (SMTP) Provider — optional

Role: Delivery of customers/data_request data exports.

Data received: The data-export JSON for a buyer, when SMTP_URL is configured. If no SMTP provider is configured, exports are logged to the server console (no third party receives them).

Location: [Provider region].

4.4 Shopify

Role: OAuth session broker and API platform.

Data received: The Shopify OAuth flow transmits the app access token and shop domain. Shopify also transmits GDPR webhook payloads to QuoteWeaver.

Location: Canada / United States.

Shopify's privacy practices are governed by [Shopify's Privacy Policy](https://www.shopify.com/legal/privacy).

We do not use any analytics or error-monitoring subprocessors that receive customer PII at this time. If we add such services, we will update this section and notify merchants.


5. Data Retention and Deletion

| Data | Retention Period | Deletion / Anonymization Trigger |

|---|---|---|

| Quote PII (buyerName, buyerEmail, companyName, rfqText, draftReply, snapshot buyer block) | Until redaction or shop purge; scheduled purge of old resolved quotes in production | customers/redact (anonymize) or shop/redact (delete) |

| Quote operational fields (parsed lines, pricing, confidence, draft-order ref) | Retained for the audit trail / metrics | shop/redact |

| PriceList / PriceTier (no PII) | Until shop redaction | shop/redact |

| ShopSettings (no PII) | Until shop redaction | shop/redact |

| Session (access token, optional merchant name/email) | Until app uninstalled | app/uninstalled, then shop/redact |

When a merchant uninstalls QuoteWeaver, session data is deleted via the app/uninstalled webhook. All remaining shop data — including all Quote records — is permanently deleted on the shop/redact webhook, which Shopify sends 48 hours after uninstall.


6. Your Rights — Merchants and End Buyers

6.1 GDPR Webhooks (Shopify-Mediated Rights)

QuoteWeaver implements all three Shopify-required GDPR compliance webhooks as real data operations (verified in app/lib/compliance.server.ts):

customers/data_request — Right of Access

When a Shopify merchant or buyer submits a data access request through Shopify, Shopify sends this webhook to QuoteWeaver. We assemble a structured JSON export of every Quote record associated with that buyer (matched by email, or by the buyer id in the contextSnapshot) — including the buyer name/email/company, the quote status, and the context snapshot the model saw — and deliver it to the configured compliance contact (via SMTP, or logged to the server console if no SMTP provider is set), within Shopify's 30-day window. We do not include other buyers' PII in the export.

customers/redact — Right to Erasure

When Shopify instructs QuoteWeaver to erase a buyer's data (typically 10 days after an erasure request), we locate all Quote records for that buyer and anonymize the PII: buyerName, buyerEmail, and companyName are replaced with [redacted]; the rfqText, draftReply, and overrideNote are scrubbed; and the buyer block of the contextSnapshot is redacted. The non-PII operational pricing data is retained. We respond within Shopify's required window.

shop/redact — Merchant Erasure

When a merchant uninstalls QuoteWeaver and 48 hours elapse, Shopify sends a shop/redact webhook. We permanently delete all Quote, PriceList (and cascade PriceTier), ShopSettings, and Session records associated with that shop. This is fully implemented and operational.

6.2 Direct Rights Requests

Merchants may also submit privacy requests directly by emailing chad@tide-flow.com. We will:

We do not sell personal data. End buyers on a merchant's Shopify store do not have a direct relationship with QuoteWeaver — their rights are exercised through the merchant, who can submit a customers/redact request via Shopify's admin or directly to us at chad@tide-flow.com.


7. GDPR

If you are located in the European Economic Area, the United Kingdom, or Switzerland, the following applies.

Legal bases for processing:

| Processing activity | Legal basis |

|---|---|

| Parsing RFQs, resolving SKUs, pricing, and producing draft orders | Legitimate interests of the merchant (Article 6(1)(f)) — B2B quoting is a core business operation; processing is proportionate and buyer data is not used for any secondary purpose |

| Storing the Quote log and contextSnapshot for audit | Legitimate interests of the merchant (Article 6(1)(f)) — merchants have a legitimate interest in an auditable record of quotes made on their behalf |

| Responding to GDPR data-subject access and erasure requests | Legal obligation (Article 6(1)(c)) |

| Deleting data on app uninstall | Legitimate interests / contractual necessity |

Data Controller / Data Processor distinction: In relation to end-buyer / B2B-contact data, QuoteWeaver acts as a data processor on behalf of the merchant (the data controller). The merchant's Shopify store collects and controls customer/company data; QuoteWeaver processes it solely to produce quotes as configured by the merchant. Merchants should ensure their own privacy policy discloses the use of AI-powered quoting tools.

International transfers: Data is processed in the United States by QuoteWeaver and its subprocessors (Anthropic, hosting provider). Transfers from the EEA to the United States are conducted under the European Commission's Standard Contractual Clauses (SCCs) where required. Merchants requiring additional safeguards should contact us at chad@tide-flow.com.

Data Protection Officer: CGN Media Group LLC has designated [NAME/EMAIL] as the contact for data protection matters. If you have unresolved concerns, you have the right to lodge a complaint with your local supervisory authority (e.g., the ICO in the UK, or your national data protection authority in the EU).


8. CCPA (California Consumer Privacy Act)

If you are a California resident, you have the following rights under the CCPA:

To submit a CCPA rights request, email chad@tide-flow.com with "CCPA Request" in the subject line. We will respond within 45 days.

Categories of personal information collected:

| CCPA Category | Examples | Collected? |

|---|---|---|

| Identifiers | Buyer name, email, company affiliation, Shopify customer ID | Yes — on the Quote row and in contextSnapshot; anonymized on customers/redact |

| Commercial information | Requested products and quantities (from the RFQ), quote line items | Yes — within the quote log |

| Internet/network activity | Not collected | No |

| Geolocation | Not collected | No |

| Inferences | SKU-match confidence scores, quote pricing | Yes — non-PII operational fields retained for metrics |

Business purposes for collection: B2B quoting, draft-order assembly, audit logging, merchant metrics. No advertising, no sale, no third-party sharing beyond disclosed subprocessors.


9. Security

We take the following measures to protect personal data:

Encryption in transit: All communications between QuoteWeaver, the Shopify Admin API, and the Anthropic API use HTTPS with TLS 1.2 or higher. HTTP connections are rejected in production and HSTS is enforced.

Encryption at rest: The production database is a managed Postgres instance with encryption at rest enabled. We verify this in the provider console before any production deployment. Database backups are encrypted.

Least-privilege access: The application's database user has only the permissions necessary to read and write its own tables — no superuser or administrative credentials. Direct database access by engineers requires per-person credentials and MFA.

API secret management: The Anthropic API key, Shopify API secret, and database connection string are stored as server-side environment variables / secrets. They are never transmitted to the browser, never included in client-side code, and never committed to source control.

Audit logging: Every compliance operation (data export, redaction, shop purge) writes an audit line. Direct database access by staff is logged with timestamp, identity, and reason.

Incident response: We maintain a written incident response plan covering detection, containment (credential rotation, token revocation), merchant notification within 72 hours per GDPR, and post-incident review.


10. Children's Data

QuoteWeaver is a B2B tool for Shopify merchants. We do not knowingly collect personal data from individuals under the age of 13, and the service is not directed at children. If we become aware that we have inadvertently collected data from a child under 13, we will delete it promptly.


11. International Data Transfers

QuoteWeaver is operated from the United States. If you are accessing the service from outside the United States, your data will be transferred to and processed in the United States, where data protection laws may differ from those in your country. We rely on Shopify's Partner Program terms and, for EEA/UK transfers, Standard Contractual Clauses to legitimize these transfers. Merchants who require specific data residency arrangements should contact us before installing the app.


12. Changes to This Policy

We may update this Privacy Policy from time to time to reflect changes in the service, legal requirements, or our data practices. When we make material changes, we will:

1. Update the "Last Updated" date at the top of this policy.

2. Post a notice in the QuoteWeaver app dashboard for at least 30 days before the changes take effect.

3. For changes that materially affect how we process end-buyer PII, notify merchants by email at least 30 days in advance.

Continued use of QuoteWeaver after the effective date of a revised policy constitutes acceptance of the updated terms. If you object to any change, you may uninstall the app before the effective date, at which point all your data will be deleted per the retention schedule in Section 5.


13. Contact Us

For any privacy-related questions, data access or deletion requests, or concerns about how QuoteWeaver handles personal data, contact us at:

CGN Media Group LLC

5036 3rd Ave S, St Petersburg FL 33707

Email: chad@tide-flow.com

Website: [URL]

For GDPR-specific inquiries or to exercise your rights as a data subject, please email chad@tide-flow.com with "Privacy Request" in the subject line. We aim to respond within 5 business days of receipt and to fulfill all statutory deadlines.


*QuoteWeaver is a Shopify app and is not affiliated with or endorsed by Shopify Inc. Shopify's own privacy practices are governed by Shopify's Privacy Policy at shopify.com/legal/privacy.*