Compare any company against its peer group in one screen

By General Input

Type in a ticker and get a side by side scorecard of its closest competitors, saved as a named set you can reload before every board meeting.

Integrations

  • Finnhub
  • Google Sheets
  • Slack Bot

Type

App

Categories

  • Finance
  • Operations

Build me a competitive benchmarking app. I type in one ticker, the anchor company, and immediately see how it stacks up against its peer group, so I stop rebuilding the same comparison spreadsheet before every board meeting. The audience is investor relations, corporate strategy and competitive intelligence teams.

The main screen is a ticker box. When I enter a ticker, call Finnhub Company Peers to assemble a suggested peer set, then show that set as an editable list before anything is fetched or saved. I must be able to remove suggested peers, add companies by typing their ticker, and reorder the list, with the anchor company pinned first and clearly marked. This editing step is important and should not be skipped or hidden: Finnhub peers are grouped by sector and industry, and the set we actually compare against is usually different, so the saved set must always be my edited version, not the raw suggestion.

Once I confirm the set, render a side by side comparison table where each column is a company and each row is a metric. Group the rows into sections. Valuation and margin metrics come from Finnhub Basic Financials. Current price and the day move, as both absolute change and percent, come from Finnhub Quote. The analyst buy, hold and sell split comes from Finnhub Recommendation Trends, using the most recent period, and should read as a small stacked bar or a compact count per rating so I can scan it across columns. Market cap and industry come from Finnhub Company Profile 2. Highlight the anchor column so it stands out, and make it obvious per row whether the anchor is above or below the peer median.

Fetch all of this server side in a single handler that takes the whole ticker list and fans out internally, then cache the assembled result per ticker. Do not fire a request per cell. Finnhub free keys are capped at 60 calls per minute and a peer set can easily be ten companies across four endpoints, so batch the work, reuse cached company data across renders, and degrade gracefully if a single company fails rather than blanking the whole table.

Stay on Finnhub free tier data only. Company Peers, Basic Financials, Quote, Recommendation Trends, Company Profile 2, Company News and News Sentiment are all free tier. Do not use Financials, Revenue Breakdown or any of the analyst estimate endpoints, and do not use the premium Company Profile: they return 403 without a paid plan.

I want to save named peer sets to a Google Sheet. Use two tabs. A peer sets tab stores the set name, the anchor ticker, the ordered member tickers and the last updated date, written with Google Sheets Append Values when I save a new set and Google Sheets Update Values when I rename or change the membership of an existing one. A snapshots tab collects the comparison itself: every time I save, append one dated row per company capturing the metrics that were on screen, so the numbers I pulled on a given date are kept as a historical snapshot I can look back at rather than being overwritten. Read both tabs back with Google Sheets Get Values to populate a sidebar of saved sets that load the full comparison in one click.

Add a 'Write the competitive read' button that kicks off a background agent over the saved peer set. The agent pulls Finnhub Company News and Finnhub News Sentiment for each company in the set over a recent trailing window, combines that with the metrics already on screen, and produces a short positioning narrative on where the anchor company leads and where it lags: valuation relative to the group, margin position, analyst sentiment versus peers, and what the recent news flow suggests about momentum. Keep it tight and readable, a few paragraphs with the leads and lags called out explicitly, not a data dump. While it runs, show progress in the app rather than blocking the table.

The finished narrative lands back in the app in a panel next to the comparison, and is stored against the saved peer set so I can reopen the set later and still see the read that was written at the time. From that panel give me a button to push the write up to a channel with the Slack Bot Send a Message action, with a channel picker and a chance to review the text before it posts.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board