Project Story

### Inspiration

As founders in the business-to-business sector and as product leaders, we have always come up against a frustrating truth: competitor intelligence is flawed. The established companies in the market will suddenly change their pricing levels and quietly drop their enterprise
Limits on seating or the launch of stealth feature pivots mean that by the time the account executives find out during an active customer RFP it's too late—the prospects turn to agile competitors while the sales reps struggle.
PDF battlecards that are 6 months old and static.

Currently, existing competitive intelligence tools cost more than $30,000 a year, demand manual data entry, and produce generic LLM hallucinations. That's why we developed RasoIntel to serve as an Autonomous Market Intelligence system.
Radar—a system that live-scrapes open web pages 24/7, detects pricing and DOM diffs, computes multi-LLM consensus validation, and synthesizes 1-click grounded sales battlecards in under 45
seconds.
──────
### What it does

RasoIntel transforms raw competitor web data into strategic sales weaponry:

  1. With 1-Click Magic Onboarding, all you have to do is enter the name of the target domain (for example, notion.com or scale.com), after which RasoIntel automatically identifies the pricing pages, the documentation, the changelogs, and the social media handles.
  2. A real-time DOM snapshot and pricing difference engine: it keeps record of historical snapshots of the website at time t₀ compared with those at time t₁, computing the structural tree edit distance and the price increases.
  3. To eliminate hallucinations, routing of reasoning requests should be carried out using a multi-provider LLM consensus mechanism and hot-switching circuit breakers, covering Google Gemini, Nvidia NIM, Groq, and the local vLLM.
  4. One-click Sales Battlecard and RFP Copilot: This tool immediately produces well-grounded sales battlecards which include clear positioning pitches, strategic demo landmine questions, rebuttals to objections, and head-to- head TCO matrices.
  5. Zero-Noise High-Impact Alerts: Sends real-time alerts to Slack and Teams only in the case of significant market events (such as price increases of at least 20% or changes to a tier).
  6. Executive briefings in multiple formats: Markdown (.md) files, native PDFs, and Word (.docx) documents can be provided upon request.
    ──────
    ### 🛠️ How we built it

RasoIntel is engineered as a decoupled, multi-tiered autonomous agent architecture:

               ┌────────────────────────────────────────────────────────┐                                                                                                                         
               │              RASOINTEL ARCHITECTURE                    │                                                                                                                         
               ├────────────────────────────────────────────────────────┤                                                                                                                         
               │ FRONTEND: Next.js 14, React, TailwindCSS, Lucide │                                                                                                                          
               │  BACKEND: FastAPI, Python 3.12, Uvicorn, Pydantic v2 │                                                                                                                         
               │  AGENT GRAPH: LangGraph 7-Stage StateGraph Orchestrator│                                                                                                                       
               │  SCRAPER: Playwright Headless Chromium + HTTPX Pool   │                                                                                                                        
               │  LLM ROUTER: ProviderRouter (Gemini, Nvidia NIM, vLLM)│                                                                                                                        
               │  DATABASE & CACHE: PostgreSQL (JSONB) + Redis Cache  │                                                                                                                         
               └────────────────────────────────────────────────────────┘                                                                                                                         

• LangGraph Agentic Orchestrator: A 7-stage StateGraph (analyze_constraints → discover → extract → filter → construct → validate → export) managing workflow state with custom list reducers to
eliminate race conditions.
• Stealth Scraper & Browser Pool: A 2-tier fetch pipeline featuring lightweight HTTPX fast-path with keep-alive connection pooling, with automated fallback to headless Playwright Chromium for
single-page applications (React/Next.js/Vue).
• Provider Router and Resilience: A priority queue circuit breaker which assesses the health of the provider across Google Gemini, Nvidia NIM, Groq, and the local vLLM instances.
──────
### 📐 Mathematical & Algorithmic Foundations

To guarantee data integrity and strict signal classification, RasoIntel implements several mathematical formulations:

#### 1. The Edit Distance and Structural Similarity of DOM Trees

We quantify structural web layout shifts between time steps t₀ and t₁ using normalized tree edit distance:

                         TreeEditDistance (T₀,T₁)                                                                                                                                                 
Similarity (t₀,t₁) = 1 - ────────────────────────                                                                                                                                                 
                             max (|T₀|,|T₁|)                                                                                                                                                      

The DOM syntax trees are represented by T₀ and T₁. In the case of any shift where the Similarity value is less than 0.85, an automated extraction of both the visual and structural differences takes place.

#### 2. The failure rate of the sliding window circuit breaker

Provider health H(p) for model provider p over recent request window N = 10 is calculated as:

                   1  N                                                                                                                                                                           
FailureRate (p) = ─── ∑  𝕀(Requestᵢ = Failed)                                                                                                                                                     
                   N i=1                                                                                                                                                                          

            If Δt < t and FailureRate (p) ≥ 0.60 then OPEN                                                                                                                                     
State (p) = ⎨                                                cooldown                                                                                                                             
            ⎩ CLOSED                     otherwise                                                                                                                                                

#### 3. The percentage for pricing delta and the impact threshold

Price shift significance ΔP for competitor tier k is calculated as:

      (k)    (k)                                                                                                                                                                                  
     P    - P                                                                                                                                                                                     
      t₁     t₀                                                                                                                                                                                   
ΔP = ─────────── × 100%                                                                                                                                                                           
         (k)                                                                                                                                                                                      
        P                                                                                                                                                                                         
         t₀                                                                                                                                                                                       

The alert is marked as HIGH SIGNIFICANCE and sent immediately to the founder's Slack channels if the magnitude of ΔP is 20 per cent or more.
──────
### Challenges we ran into

  1. Anti-Bot Defenses and Single-Page Application (SPA) Rendering:
    • The challenge is that modern pricing pages make use of heavy client-side JavaScript rendering, anti-bot protection, and dynamic shadow DOMs.
    • Solution: We developed BrowserPool using high-throughput persistent HTTPX session reuse for static sites and automatically reverted to Playwright Chromium, employing non-blocking async DNS resolution (loop. getaddrinfo()).
  2. Avoiding LLM price hallucinations:
    • The problem is that generative models often invent information about pricing plans (for example, stating that Notion has a minimum annual recurring revenue of $25,000).
    • Solution: We introduced a two-stage Grounded RAG Battlecard Engine. The HTML text is processed to remove irrelevant DOM elements, is converted into Markdown tables, and is then given to the LLMs with a strict zero-extrapolation policy. system directives.
  3. The async event loop being blocked when exporting files:
    • Problem: The main FastAPI event loop was blocked when generating large PDF (using ReportLab) and Word (using python-docx) briefing files.
    • Solution: I moved all the synchronous document rendering functions to background thread pools by using await asyncio.to_thread().

──────
### Accomplishments that we're proud of

• Zero-Hallucination Grounded Battlecards: 100% of the battlecards produced are based on facts scraped directly from the web.
• The speed of the fast-path HTTPX fetching is less than 150 milliseconds.
• The API provides a dual payload: it returns structured JSON for use by frontend user interfaces and formatted Markdown (text/markdown) for immediate reading in Slack or Notion.
• Strong defences against SSRF have been put in place by using a strict socket IP resolution (ipaddress.ip_address) in order to prevent DNS rebinding and loopback attacks.
──────
### What we learned

• Do not depend on an LLM's parametric memory when it comes to competitive facts or prices; it is necessary to have access to live web content.
• To set limits on the number of headless browser contexts in the case of async concurrency, it is necessary to use asyncio.Semaphore(10).
• Export formats aimed at the user: Although developers prefer JSON, sales representatives and executives insist on clean Markdown, PDF, and Word documents.
──────
### What's next for RasoIntel

A bot for Slack and Teams that enables 1-click counter-move campaigns to be launched when competitors increase their prices through the use of interactive Slack buttons.
The retrieval of multi-year historical pricing trends autonomously using the Archive.org APIs is made possible by the Wayback Machine Historical Backfills.
[ ] Local vLLM Consensus Quorum: Local Llama 3 70B checks agreement for enterprise VPC setups that run on their own.

Built With

Share this project:

Updates

Submission history