Bigin pipeline review board with forecast and quota tracking

By General Input

Run Monday pipeline review on a drag-and-drop board that adds the weighted forecast and quota tracking Bigin does not give you.

Integrations

  • Bigin by Zoho CRM
  • Slack Bot

Type

App

Categories

  • Sales

Build me an app my sales team opens every Monday for pipeline review. Bigin has no forecasting and no custom dashboards, so this app has to do the part Bigin cannot: a weighted forecast and quota tracking sitting on top of a board we can actually work in.

The main surface is a board of my Bigin deal stages for a chosen sub-pipeline, one column per stage in the correct stage order. Each deal card shows the deal name, amount, close date, owner, and how many days it has been sitting in its current stage. Dragging a card to another column updates the Stage on that Pipelines record in Bigin.

Data comes from Bigin by Zoho CRM. Handlers call the base URL ${apiDomain}/bigin/v2 with the header Authorization: Zoho-oauthtoken ${accessToken}. Deals are the Pipelines module, and listing Pipelines accepts a pipeline_id parameter to scope the board to one team pipeline. Two things to bake in carefully. First, the fields query parameter is REQUIRED on every list read: pass comma-separated field API names, max 50 per call. Discover the exact field API names with the Fields Metadata operation before hardcoding any of them, since layouts differ per account. Second, pagination is page and per_page with per_page capped at 200, so page through until the response info object reports more_records false.

For days in current stage, prefer a stage history related list on the Pipelines record if the account exposes one, and fall back to the record's modified time when it does not. Whichever source you use, make it clear in the card tooltip what the number is measured from, so nobody reads a fallback number as gospel.

Any deal with no call, event, or note in the last 14 days gets a stalled badge. Compute that by reading the Calls, Events, and Notes modules for the deals on the board and taking the most recent activity date across all three. A deal with no activity at all counts as stalled. Make the 14 day cutoff a setting rather than a hardcoded constant.

Dragging a card writes the new Stage back to that Pipelines record. Bigin mutating calls wrap records in a data array, and the response returns a per-record code and status inside data[], which means an HTTP 200 can still contain per-record failures. Do not treat 200 as success. Move the card optimistically, then check the per-record code, and if it is anything other than SUCCESS snap the card back to its original column and surface the returned message to the user. Codes like MANDATORY_NOT_FOUND and INVALID_DATA are the ones that will actually show up here.

Above the board is a forecast strip with four numbers: total open pipeline, a weighted forecast, deals committed to close this month, and progress against a quarterly quota target. The weighted forecast is the sum of each open deal's amount multiplied by the win probability I set for the stage that deal is in. I want to set that probability per stage myself in a settings panel, and I want the app to remember both those probabilities and the quarterly quota number across sessions. The quota tile should show attained versus target with how much is left to close.

I can filter the whole board by owner or by sub-pipeline. Owner names come from the Bigin Users module so the filter shows real people rather than raw ids. Filters apply to the forecast strip and the board together, so filtering to one rep recalculates their pipeline, their weighted forecast, and their share of quota rather than just hiding cards.

A share review button posts a summary of the board to a Slack channel using Slack Bot's Send a Message operation. The summary covers top movers, stalled deals, and forecast against quota, and it reflects whatever filters are active when I click it. Let me pick the destination channel from the workspace using Slack Bot's List Channels operation, and remember my choice for next time.

Handle the ordinary edge cases without gold plating them: deals with no amount set, an empty stage column, a sub-pipeline with no deals at all, and the first run where no win probabilities or quota have been entered yet. In that first-run state the board should still render and the forecast tiles should prompt me to set my numbers rather than showing zeros as if they were real.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them