Inspiration

I was working on a RAG for legal documents, to reply to users with laws and their genealogy based on the users search request. Then i saw this Hachathon , and i got the idea of building an app for legal professionals to help them prepare a strategy for their case.

What it does

CounselCore is an autonomous legal co-pilot that helps legal pro (solo attorneys, paralegals, and legal teams) to cut down their initial case preparing and drafting time from hours to minutes. Instead of traditional search engines, CounselCore acts as a conversational legal research workspace. It features:

  • Autonomous legal agent: agent that listens to raw client narratives or case notes, dynamically decides which legal collections to query, and parses statutes and relevant precedents.
  • Dual-Pane work dashboard: a professional interface that features a dark, responsive command console on the left for conversational brainstorming, alongside a beautiful, seamless Editorial Document Reader on the right.
  • Automatic brief compiler: the agent drafts court-ready preliminary LegalStrategy briefs in clean, perfectly styled Markdown—displayed side-by-side without distracting boxed borders or visual clutter.
  • Dynamic legal RAG: queries a local, production-grade vector database containing real statutes and historic case law, complete with citations, summaries, and legal holdings.

How we built it

  • LLM reasoning engine: we utilized AWS Bedrock and integrated DeepSeek V3.2 in us-east-1 for highly secure, low-latency, and cost-efficient on-demand reasoning.
  • Agentic orchestration: built with the Strands Agents SDK (Python) to register and manage autonomous tool workflows. The agent uses dynamic tools like search_case_law, lookup_statutes, and draft_legal_brief to chain complex research steps.
  • Local Vector Database: implemented a local, persistent ChromaDB vector store utilizing all-MiniLM-L6-v2 local embeddings. The database isolates records into distinct case_law and statutes collections.
  • Real legal ingestion pipeline: we built an ingestion engine (ingest_real_cases.py) that fetches actual landmark historical opinions from 1850 California Supreme Court mirrors (Harvard CAP) and uses our Bedrock DeepSeek model to dynamically summarize legal holdings.
  • FastAPI Web Bridge: a lightweight FastAPI backend wrapper (api.py) exposes unified REST endpoints (/api/research and /api/health) to interface the Python-based Strands agent with the frontend.
  • Vite & React Frontend: built a responsive desktop-optimized Single Page Application (SPA) with React and TypeScript, styled with custom-tailored Vanilla CSS variables for strict theme isolation.

Challenges we ran into

  • Configuring DeepSeek v3.2 llm model on AWS Bedrock inside the us-east-1 region.
  • Some function parameters of the Strands SDK, such as system_prompt parameter in the Agent constructor.
  • Seeding the chromaDB with California legal database
  • Moving from a Terminal agent response to a UI app with Vite.js

Accomplishments that we're proud of

  • Production-Grade Local RAG: successfully shifting from static mock data dictionaries to a persistent, vectorized local database using ChromaDB with zero commercial legal database API licensing fees.
  • Beautiful UX/UI Synergy: crafting a workspace that respects how legal professionals actually work collaboratively conversing on the left, while reviewing pristine, clean, and legibly styled legal text on the right.
  • Zero-Config Developer Setup: anyone can clone this repository, run the seeder, and instantly query real, parsed historical supreme court precedents with a working vector pipeline.

What we learned

Creating Agents with Strands SDK: giving an LLM autonomous access to localized tools (like lookup and drafting compilers) creates a significantly more adaptive and natural research partner than traditional keyword search.

What's next for cousenlCore

  • Multi-Jurisdiction Expansion: Syncing the vector ingestion engine dynamically with federal court repositories, PACER, and municipal state legal XML feeds.
  • Citations Validation: Integrating a secondary agent layer specifically for citation checking (e.g., verifying that cited precedents haven't been overturned or superseded by newer case law).
  • Interactive Document Export: Letting users export their rendered briefs directly into fully formatted Word (.docx) or courtroom-ready .pdf documents with active, click-to-view legal footnotes.

Built With

Share this project:

Updates

Submission history