Sales collateral desk: personalized one pagers from your deals

By General Input

Let reps build a branded, personalized one pager for any open deal in minutes, then file it, log it, and get a ready to send email draft.

Integrations

  • Canva
  • HubSpot
  • Google Drive
  • Gmail

Type

App

Categories

  • Sales
  • Marketing

Build me an internal app my sales reps open right before a customer meeting so they can produce a personalized one pager themselves instead of queuing a request with the design team. The point is that a rep never retypes account details our CRM already holds, and never waits on anyone for a leave behind.

The landing view is the rep's own open deals, not the whole pipeline. Resolve the signed in rep to a HubSpot owner with List Owners matched on their email (or Get Owner if we already hold the id), then use Search Deals filtered to that owner id and to open deal stages, sorted by close date. Each row shows deal name, stage, amount, close date and the associated company. Use Get Deal with associations to find the associated company and contact records, Search Companies for account details such as industry, size and domain, and Search Contacts or Get Contact for the primary contact's name, title and email. Add a search box and let the rep open any deal.

Opening a deal shows a Canva brand template picker. List Brand Templates gives the choices, and selecting one calls Get Brand Template Dataset to read that template's data fields. Render one input per field, pre-filled from the deal and company properties: company name, industry, primary contact, deal amount, close date, and whatever else that template asks for. Every field is editable inline so the rep can fix an industry label or shorten a long company name before anything is generated. Nothing is created until they press Generate.

Generate runs the pipeline in the background with visible progress. Call Autofill Brand Template with the edited field values, poll the autofill job until it reports success or failure, then call Export Design on the resulting design as a PDF and poll that export job too. Then take the finished PDF and do three things: upload it to a configured Google Drive folder with Upload File (Multipart), named after the company and the date; create a note on the deal with Create Note containing the Drive link, the template used and who generated it, so the HubSpot activity timeline shows the asset; and build a Gmail draft with Create a Draft addressed to the deal's primary contact, with a short covering message and the PDF attached. Gmail's draft call takes a base64url encoded RFC 2822 message, so assemble a multipart message with the PDF bytes inline.

The email must never send automatically. It stays a draft in the rep's own mailbox that they open, edit and send themselves. Say that clearly in the UI when the pipeline finishes, and link straight to the draft.

Persist two things. First, the field mapping per brand template: which CRM property feeds which template field. The first rep to use a template sets it, it is saved, and every rep after that gets the fields pre-filled without remapping. Let an admin edit a saved mapping later. Second, a per rep history of everything they generated, with the deal, template, date, Drive link and draft link. From that history a rep can resend an old one pager in one click, which creates a fresh Gmail draft from the stored Drive file without regenerating the design.

Two constraints to build in from the start. Brand templates and auto fill are gated to Canva Pro and Enterprise plans, so probe access when the app loads by calling List Brand Templates and, if it comes back denied or empty, show a clear message explaining the plan requirement rather than letting the rep fill in a form and fail at generate time. And both the auto fill and the export are asynchronous jobs where a success response only means the job was queued, so Generate needs real progress states for filling, exporting, uploading, logging and drafting, plus a visible failure state that names the step that failed and offers a retry.

Related prompts

Explore more prompts
Win back LiveChat visitors whose chats went unansweredTurn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationChase the paperwork every new client and vendor still owesLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRM