Portal.io Integration — Automated Proposals from Installation Manifests
Connect Portal.io to Selora Connect to automatically generate client proposals from installation manifests.
Summary
Integrate Portal.io — a proposal and business management platform for AV, security, and IT/MSP integrators — with Selora Connect. The integration would automatically create proposals in Portal.io from installation manifests authored in Connect, eliminating the manual re-typing of room-by-room scopes, device lists, and labor items that installers currently do when preparing quotes.
This Epic starts with a feasibility spike to determine whether the Portal.io API can support this workflow end to end before any product decision is made.
Context
Installation manifests in Connect already capture everything a proposal needs: the rooms and areas involved, the devices to install, the devices already in place, and the work that remains. Today, when an installer wants to send a formal proposal to a client, they rebuild that information by hand in their quoting tool. Portal.io is one of the quoting/proposal platforms used by our installer customers, and it now exposes a public API ( https://docs.portal.io/ ), which makes an automated bridge feasible.
What the Portal.io API Offers
Per the Portal.io API documentation :
- Proposals — create, retrieve, update, and manage the full proposal lifecycle. Proposals follow a four-level hierarchy: Proposal → Areas → Options → Line Items, where areas are unique room/zone names, each area supports up to 3 options (configuration variants), and line items are added from the Portal.io catalog.
- Contacts & Locations — create, search, and assign the client contacts that proposals belong to, including site locations.
- Catalog — search and browse product and service items by industry and category.
- Webhooks — subscribe to real-time events when proposal, payment, or order statuses change (e.g. Draft → Submitted → Accepted).
- AI Builder — upload source content and let Portal.io’s own AI generate proposal outlines and builds.
- Environments & auth — isolated sandbox (
https://sandbox.api.portal.io) and production (https://api.portal.io) environments. All requests are signed with HMAC-SHA256 using an App Key, a Secret Key, and a per-user API Key. Production access requires approval from Portal.io. A Postman collection and an AI-tooling documentation index (llms.txt) are provided for exploration.
Spike Objectives
The spike’s goal is a go / no-go recommendation with evidence, answering:
- Data mapping — Can the structure of a Connect installation manifest (areas, devices, quantities, existing vs. new work) be mapped cleanly onto Portal.io’s Proposal → Area → Option → Line Item model? Which manifest fields have no natural target, and which proposal fields must be filled manually?
- Catalog alignment — Can devices from a manifest be matched to Portal.io catalog items (by SKU, name, or category)? What is the fallback when no catalog match exists (custom line items, or manual entry)?
- Contact mapping — How should Connect project/owner data be mapped to Portal.io contacts and locations, and can the integration de-duplicate on re-runs?
- Authentication & security — Verify the HMAC-SHA256 signing flow against the sandbox (credential exchange, User API Key handling) and define how Portal.io credentials (App Key, Secret Key) are stored and scoped in Connect.
- Status round-trip — Can webhooks push proposal status changes (Accepted, Declined, …) back into Connect so the project record reflects the client’s decision?
- AI Builder option — Does uploading manifest content to Portal.io’s AI Builder produce a usable proposal, and is that a viable alternative or complement to the direct API mapping?
- Operational constraints — Rate limits, production-access requirements, error handling, and webhook delivery characteristics that would affect a production integration.
Success Criteria
- A working end-to-end prototype in the sandbox: a Connect installation manifest triggers the creation of a Portal.io proposal with correctly mapped areas, items, and a client contact.
- A documented field-by-field mapping (Connect manifest → Portal.io proposal) with gaps explicitly called out.
- A go / no-go recommendation with the main risks and effort estimate for a production-ready integration.
Out of Scope (for the spike)
- Production credential provisioning and client onboarding.
- Payment, invoicing, and order management flows beyond reading proposal status.
- Two-way item editing (proposals edited in Portal.io are not synced back into the manifest).
Last modified August 20, 2026: docs(roadmap): add Portal.io Integration epic (794f1dd)