Project Info
This project did not submit a demo video on Devpost.
Inspiration
We built Executor AI to help grieving families and busy executors navigate probate deadlines and reduce liability. Inspiration came from seeing how paperwork, missed notices, and tight time windows cause stress and legal risk for non-professional executors.
What it does
Executor AI ingests estate documents (wills, deeds, bank statements), extracts structured estate state, runs a DeadlineAgent that surfaces urgent probate deadlines and liability risks, supports RAG-powered Q&A for executor questions, and drafts required letters and notices (creditor notices, appraisal requests, court filings).
How we built it
Backend agent: Python FastAPI (agent/) that runs our agents, document parsers, and embedding flows. Frontend: Next.js + TypeScript (web/) for uploader, dashboard, and SSE streaming chat. Vector store & state: Redis (KV + vector sets) for estate state, document vectors, and retrieval. LLMs: Claude for reasoning and parsing; OpenAI embeddings for vectors. Observability: Phoenix/OpenInference spans around LLM/embedding calls. CI/dev scripts: Makefile to install, run, seed, and test the demo.
Challenges we ran into
Reliable extraction from varied document formats (scanned PDFs, different templates). Encoding legal deadlines and rules (CA probate) precisely and defensibly. Balancing helpful automation with "never give legal advice" constraints — we surface actions but encourage attorney review where required. Streaming UX for long-form LLM outputs while validating structured responses (Pydantic/Zod).
Accomplishments we're proud of
DeadlineAgent that codifies CA probate timing and proactively alerts before critical windows. End-to-end demo: upload documents → parsed state → RAG chat → drafted letters. Strong tracing around every LLM/embedding call for auditability and debugging. Voice-enabled chat via Deepgram — executors can speak questions and hear responses Research Agent that monitors for probate law changes weekly using Google News RSS, zero API keys required
What we learned
Good prompts + structured validation (Pydantic + Zod) dramatically reduce hallucinations for extraction tasks. A small, well-modeled state graph (estate object + assets + tasks + alerts) makes reasoning and RAG far more reliable than ad-hoc documents. Observability (traces + spans) is essential when multiple LLMs and embedding calls interact; it speeds root-cause analysis. UX matters: clear action items and downloadable letters increase user confidence more than raw answers.
What's next
Expand jurisdictional rules beyond California and add a policy layer for jurisdiction selection. Add richer document OCR/vision fallback for low-quality scans. Add role-based workflows (attorneys, co-executors) and audit logs for compliance. Tighten evaluation: automated Phoenix/Arize evals to track extraction precision and deadline recall. About the project Executor AI turns estate documents into an actionable estate state and gives executors a reliable assist: deadlines, risk alerts, Q&A, and letter drafts. We aimed to reduce missed deadlines and liability by combining robust extraction, a rules-driven DeadlineAgent, a ResearchAgent for latest news updates, and RAG. Ethical Considerations in Development Privacy & Data Protection Estate documents contain deeply sensitive financial, health, and family information. We architected the system to minimize data retention: documents are parsed once, embedded, and stored only as vectors in Redis. User estate state never leaves their Redis instance. We recommend client-side encryption for production deployments and access logs for audit compliance. Avoiding Legal Advice & Liability Risks The system deliberately stops short of recommending specific actions. Instead, it surfaces deadlines and flags rule violations, then directs executors to their attorney for decisions. The UI enforces this boundary by using phrases like "This requires your attorney's input" when an action involves legal judgment. We ensured Claude to refuse to give specific legal advice even when asked directly. Social Impact & Equity Probate is time-sensitive and expensive. By automating deadline tracking and letter generation, we lower the barrier for non-wealthy families to comply without hiring a probate attorney. However, the system requires internet access and assumes literacy in English and digital interfaces—future work should localize and explore accessibility for elderly executors.
Executor AI
The AI that prevents executors from making expensive mistakes — by building a live intelligence graph of the estate and running a true agent that alerts before probate deadlines and liability triggers are missed.
Built for the Hackathon @ Berkeley 2026 (24-hour build).
The problem
When someone dies, the executor — usually a grieving family member, not a lawyer — is personally responsible for administering the estate: probate filings, asset inventory, creditor notices, debts paid in the right legal order, taxes, and distributions. Miss a deadline or pay out of order and the executor can be held personally liable. Families who can't afford a probate attorney do this alone, spending ~180 hours and making expensive mistakes nobody warned them about.
Executor AI is the expert in their corner: it reconstructs the estate from its documents and tells the executor the next action before it costs them. California probate only, and never a substitute for legal advice — for attorney-judgment questions it says so plainly.
What it does
Sign in, create an estate, and upload a will, deed, bank statement, or creditor notice. Claude parses each into a live estate-state graph. An estate-aware chat (text + voice) answers questions grounded in your documents. A real agent — the DeadlineAgent — proactively reasons over California probate law and tells you the next action before a missed deadline costs you, and a second ResearchAgent watches weekly for probate-law changes. Generated letters and emailed alert digests close the loop.
Architecture
Polyglot, two services + shared Redis. Python is the brain, TypeScript is the experience, Redis is the memory.
web/ (Next.js + TypeScript) ── HTTP / SSE ──▶ agent/ (FastAPI + Python)
auth · dashboard · chat · voice auth · documents · RAG chat
Deepgram · Sentry DeadlineAgent · ResearchAgent
letters · email · Phoenix + evals
└──────────────── Redis (KV state + vector search) ────────────────┘
Stack
- agent/ — Python · FastAPI · Anthropic (
claude-sonnet-4-6across parsing, the agents, chat, and letters) · OpenAI embeddings · Pydantic · bcrypt auth · Resend email · Phoenix tracing + LLM-as-judge evals - web/ — Next.js 14 · TypeScript · Tailwind · Deepgram · Sentry · Zod
- shared — Redis: KV estate state + vector search for document retrieval, behind a store layer that supports Redis Cloud (cloud path in use), Upstash, or in-memory backends
Repo layout
CLAUDE.md— working instructions for Claude / coding agentsproject_overview.md— full design, data shapes, flows, demohackathon_tracks_and_prizes.md— tracks & sponsorsdocs/project_structure.md— implementation folders, ownership boundaries, and placeholder contractsdocs/database.md— Redis KV/vector contract and database setup checklistdocs/workstreams.md— per-member start points and stable dependency boundariesteam/— per-member role briefs (Members 1–4)agent/— Python service ·web/— Next.js frontend
Getting started
# 1. Copy env files (won't overwrite if they already exist)
make env
# 2. Install all dependencies (uv for Python, npm for web)
make install
# 3. Start both services — agent on :8000, web on :3000
make dev
# 4. In a separate terminal: seed the demo estate
make seed
Fill in your API keys in agent/.env and web/.env.local after running make env.
Minimum to start: ANTHROPIC_API_KEY in agent/.env. The store defaults to
STORE_BACKEND=memory, so Redis Cloud is optional for local dev; voice (Deepgram),
email (Resend), and observability (Phoenix/Sentry) degrade gracefully when their keys are
unset — voice and email return previews instead of failing.
Phoenix tracing sends Anthropic, OpenAI embedding, and custom agent spans to
PHOENIX_COLLECTOR_ENDPOINT (defaults to http://localhost:6006/v1/traces). Set
PHOENIX_API_KEY when using Phoenix Cloud; local Phoenix does not require one.
Team
| Member | Owns | Brief |
|---|---|---|
| 1 (Alex) | Document Intelligence (Python) | member1 |
| 2 | Data & Contracts (Python + TS) | member2 |
| 3 | DeadlineAgent + Reasoning (Python) | member3 |
| 4 | Frontend + Voice (TS) | member4 |
Analysis
View
Metric
- 30
- 30
- 25
- 21
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- RedisIn code
- Tailwind CSSIn code
- TypeScriptIn code
11 of 11 appear in the indexed code.
AI coding agents
- Claude CodeConfig · Commits
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1.2 MB
Source files
267
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
s85rr25/executor-ai
312 files · 2.0 MB · @ b3dfcac
Structure
Interface
34 files · 11%Screens, components and styles rendered to the user.
API & routing
7 files · 2%Request entry points: routes, handlers and controllers.
Application logic
67 files · 21%Domain rules, services and shared utilities.
+12 moreData & schema
10 files · 3%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Markdown47%
- TypeScript28%
- Python24%
- CSS0%
- JavaScript0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
agent/pyproject.toml
pypi · 23- anthropic
- arize-phoenix-client
- arize-phoenix-evals
- arize-phoenix-otel
- bcrypt
- email-validator
- fastapi
- openai
- openinference-instrumentation-anthropic
- openinference-instrumentation-openai
- opentelemetry-sdk
- pdfplumber
- pillow
- pillow-heif
- pydantic
- pypdf
- python-dateutil
- python-dotenv
- +5 more
agent/requirements.txt
pypi · 23- anthropic
- arize-phoenix-client
- arize-phoenix-evals
- arize-phoenix-otel
- bcrypt
- email-validator
- fastapi
- openai
- openinference-instrumentation-anthropic
- openinference-instrumentation-openai
- opentelemetry-sdk
- pdfplumber
- pillow
- pillow-heif
- pydantic
- pypdf
- python-dateutil
- python-dotenv
- +5 more
web/package.json
npm · 18- @deepgram/sdk
- @sentry/nextjs
- lucide-react
- next
- react
- react-dom
- react-markdown
- remark-gfm
- zod
- +9 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.