jb-crm

Privacy Policy

Last updated: 2026-05-21

Who we are

jb-crm is a single-developer project that turns BCC'd quote emails into rows in your own Google Sheet. Operated by Alexander Burch. Contact: alexanderwburch@gmail.com.

What we collect

  • Google account basics: your email, name, profile picture, and a stable Google user ID, used to identify you across sign-ins.
  • Google OAuth tokens: the short-lived access token and long-lived refresh token that Google issues when you grant us permission. Stored encrypted-at-rest in AWS DynamoDB.
  • Your sheet identifier and a Drive folder identifier: created in your Google Drive on signup, so we know which file to update when a quote arrives.
  • Inbound emails sent to your jb-crm BCC address: stored briefly in our AWS S3 bucket so the extraction Lambda can process them. PDFs that we extract are uploaded to your Drive folder.
  • A small per-user company cache: normalized company names + row numbers, so we can match a new quote to an existing row quickly. Stored in DynamoDB.

What we do NOT collect

We never read sheets you didn't create through this app, files in your Drive outside the jb-crm folder, your Gmail, your Calendar, or anything else. Our Google OAuth scopes are deliberately the narrowest set that make the app work:

  • openid email profile — to identify you when you sign in.
  • drive.file — per-file access, limited to files our app creates in your Drive.
  • spreadsheets — to read and write the cells of the sheet we created for you.

How we use it

When you BCC your unique @quotes.jbcrm.stilicho.net address on a quote email:

  1. AWS SES receives the email and writes it to our S3 bucket.
  2. A Lambda parses the PDF attachment and sends its contents to Anthropic's Claude API to extract structured fields (quote number, totals, company, line items).
  3. We upload the PDF to your Drive folder and add a row to your sheet referencing it.
  4. We send you a confirmation email summarizing what we logged.

Third-party processors

  • Amazon Web Services (AWS): hosts our database, Lambda, S3 bucket, and SES email pipeline. US-East-1 region.
  • Vercel: hosts the web app you're reading this on.
  • Anthropic (Claude): processes PDF contents to extract quote data. Anthropic does not train on our API traffic.
  • Google: we use Google APIs (Drive, Sheets) on your behalf, scoped strictly to files we created in your account.

Retention

Raw inbound emails (.eml files) are kept indefinitely as an audit trail. Extracted JSON sits alongside them. The sheet itself lives in your Drive — it persists as long as you keep it. We hold a refresh token until you revoke access at myaccount.google.com/connections.

Your controls

Limited Use disclosure

jb-crm's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements. We do not use Google user data for advertising, do not sell it, and do not transfer it to third parties except as strictly necessary to deliver and improve user-facing features (i.e. running the extraction pipeline described above).

Changes

We'll update this page if the data we collect or its use materially changes. For now, this is the whole story.