Equity Lens: Building a Terminal in the Trenches
Most hackathon projects aim for consumer apps or lightweight wrappers. We decided we were going to build an institutional-grade financial analysis terminal. We wanted to build something that didn't just summarize data, but actually held corporate management accountable.We selected the Indian Hotel Sector (IHCL, EIH, Lemon Tree, Chalet, ITC) as our testbed. The goal was simple: turn thousands of pages of dense, jargon-filled corporate PDFs into raw, actionable truth.
The PDF Extraction Nightmare
If you've ever tried to programmatically parse a 500-page Annual Report, you know it is pure unstructured hell. Tables span across multiple pages, footnotes are microscopic, and formatting changes every year.We built a brutal Python data ingestion pipeline. Using a combination of custom PDF extractors and LLM parsing (gemma_extractor.py), the engine rips through Annual Reports, Quarterly Results, and Credit Rating documents. Instead of just chunking text for a basic RAG setup, we forced the LLMs to output strict, normalized JSON schemas covering everything from financial health to "Management Tone." We dumped this structured goldmine into Supabase.
"Said vs. Delivered": The Credibility Engine
This was the feature that won us the hackathon.Financial tools always tell you what a company did this quarter. But they rarely tell you what the CEO promised they would do four quarters ago. We built a promise_extractor.py pipeline that specifically combs through old Earnings Call transcripts to isolate forward-looking statements (e.g., "We will open 20 new hotels by FY24").
Then, verify_promises.py cross-references those historical promises with the latest Annual Reports to check if the company actually hit their targets. The result is a dynamic "Credibility Score" and a "Said vs. Delivered" dashboard. We essentially automated corporate accountability.
Escaping Flat Data: The Neo4j Knowledge Graph
Financial ecosystems are relational. Flat tables don't show you that a board member at Company A also sits on the board of a subsidiary of Company B.To map this out, we integrated Neo4j. We built an entity extractor that parsed the documents to discover relationships between parent companies, subsidiaries, executives, and market trends. We then built a custom visualization layer in the Next.js frontend using raw D3.js. The result was a stunning, interactive force-directed physics graph where you could physically pull apart the corporate structure of the entire hotel sector.
The Analyst Agent
To tie it all together, we couldn't just have static dashboards. We built a custom autonomous agent pipeline. Using a tool registry, the agent can dynamically query the Neo4j graph, pull exact financial deviations, or read the latest news digest to answer complex, multi-step queries like a seasoned equity analyst.Building an architecture this heavy in a hackathon environment was a total mental breakdown, but seeing the "Said vs. Delivered" engine correctly catch a missed corporate promise made every hour of lost sleep worth it.