Inspiration

The idea for Sprout started in an unexpected place: the comments section of Gator Comics, where readers were having a genuinely thoughtful discussion about buying sustainably. Seeing that many people cared enough to talk about it publicly was moving — but it also highlighted a gap. Caring about sustainability in a comments thread is one thing; actually knowing whether the product in your cart is a good choice is another. When I sat down to shop for myself, I realized I had no real way to tell — no time to research every certification, no way to compare options, and no easy way to factor in things like how often I'd actually replace the item. Sprout exists to close that gap: to bring the same thoughtfulness people show in conversation into the actual moment of deciding what to buy.

What it does

Sprout is a Slack agent that turns any shared product link into an honest, structured sustainability assessment inside the conversation you're already having.

  • Single-product analysis: share a link, and Sprout scrapes the page and returns two scores: an Absolute Eco-Score (how sustainable the product is in real terms) and a Category-Relative Score (how it stacks up against typical alternatives in its category) along with clear reasoning and greener alternatives to consider.
  • Multi-product comparison: share two or more links (or even just describe them in plain language, like "compare the Sony with the AirPods"), and Sprout scores each one, ranks them, and explains why one is the more sustainable choice.
  • Conversational memory: you don't need to keep links handy. Say "compare this with the ones I mentioned earlier," and Sprout searches your Slack history via the Slack MCP server, identifies which past products you're referring to, and runs the comparison, no hustle-bustle, just pure flow. It's like talking with an expert in the field.
  • Nuanced reasoning: Sprout distinguishes between consumables (repurchased often, impact repeats) and durable goods (bought once, impact front-loaded), and factors in manufacturer take-back/trade-in programs as a genuine but not absolute positive.

How we built it

Sprout is built as a Slack Agent using Bolt for Python running in Socket Mode. When a message comes in, the agent:

  1. Parses the message for product links and comparison intent
  2. Scrapes product pages using httpx and BeautifulSoup4
  3. Sends the extracted content to the Gemini API for sustainability reasoning and scoring
  4. For comparison requests referencing past conversation, queries the Slack MCP server to search channel history, then uses Gemini again to identify which specific past products the user means before running the final comparison

This two-step Gemini flow — one call to match the right products from history, a second to reason about them — lets Sprout support natural, low-friction requests like "compare it with the one from before" instead of requiring users to track down and re-paste old links.

Challenges we ran into

  • Environment setup friction: getting local SSL certificates, Python virtual environments, and the Slack CLI working together took real trial and error before a single message could be sent.
  • MCP authentication: connecting to Slack's own MCP server required the right OAuth user token and scopes, plus reconciling local and remote app manifests, which turned out to be an unexpected ordeal.
  • Reliable product matching from history: early attempts to match a vague phrase like "the airpods" against past links using keyword overlap were fragile and occasionally matched the wrong product entirely. Replacing that logic with a dedicated Gemini call using both user input links and bot replies, treating "which past product is being referenced" as its own small reasoning task, made this dramatically more robust.

Accomplishments that we're proud of

  • Building a genuinely useful two-mode agent (single analysis + multi-product comparison) rather than a single-trick chatbot
  • Getting real, working Slack MCP server integration for conversational history search which instantly became core to how the comparison feature works
  • Designing a scoring system (Absolute vs. Category-Relative) that's more thoughtful than a single generic number, and that correctly rewards things like manufacturer trade-in programs without overstating their impact
  • Generalizing the comparison feature to handle any number of products, not just two, including when they're referenced from memory

What we learned

Building Sprout was as much a lesson in debugging distributed systems as it was in prompt design from SSL certificates to OAuth scopes. We also learned that asking an LLM to do small, well-scoped reasoning tasks (like "which of these past products is the user referring to?") is often far more reliable than trying to solve the same problem with hand-written keyword heuristics.

What's next for Sprout

  • Expanding to have the AI parse the screen in real-time, bypassing the link pasting step
  • Adding lightweight source citations so users can see why a specific certification or material claim was flagged
  • A "greener alternative" follow-up flow that can search for and suggest real in-stock alternatives, not just categories to look for
  • Team/workspace-level sustainability summaries, so a channel can see its collective purchasing footprint over time
  • A cute mascot (similar to Gator Comics) which brings in a sense of closeness to your character, urging you to be sustainable (like a turtle asking you not to buy plastic garbage bags)

Built With

Share this project:

Updates