Inspiration
We picked our track by looking at YC's Summer 2026 "Company Brain" RFS — systems that turn fragmented internal knowledge into something agents can actually use. Rather than guess at the pain point, we spent $3.50 running 12 AI-moderated synthetic interviews (via Cookiy) before writing a line of code. The finding that shaped everything: the expensive moment isn't searching for information, it's reconciling contradictions between sources — and people explicitly rejected any tool that acted autonomously without a human approving first. That became the whole design: catch disagreements, cite everything, never auto-send.
We landed on insurance claims specifically because it's a real YC RFS category ("AI-Native Service Companies"), and because the stakes of acting on a wrong fact (a denied claim, a bad payout) make the "catch the contradiction before you act" story concrete instead of abstract.
What it does
Sift ingests a claim's fragmented sources — the policy document, the claim form, call and inspection notes — into a graph. A walker traverses that graph, cross-references facts on the same topic across sources, and if two sources disagree (e.g. the customer says a pipe burst suddenly, the inspector's own notes suggest gradual seepage instead), it flags the conflict with citations rather than silently picking a side. It drafts a follow-up question to resolve the ambiguity, but nothing is ever sent without a human clicking Approve — that requirement came directly from the research, not from us assuming it.
How we built it
Entirely in Jac, Jaseci Labs' AI-native language — backend and frontend both, using Jac's full-stack cl {} pathway (a cl block compiles to a real React bundle; everything else compiles to Python; a client component calling a backend walker is a real compiler-generated RPC, not a hand-written fetch call).
- Graph + walkers:
Source/Fact/Claimnodes; aClaimReviewwalker traverses from a claim to its facts and the global policy facts, runs a holisticby llm()conflict analysis, then a secondby llm()call decides an action (answer/flag_conflict/escalate). - Citation integrity: extraction is constrained to copy vestic (non-LLM) substring check rejects anything that isn't anexact quote — so a citation can never be a hallucination. - Sensitive-content handling: facts marked internal-only aime and withheld from every citation, answer, and draft —tracked and shown ("N sensitive facts withheld"), never silently dropped. - Real routing:
/,/dashboard,/review/:idvia Jac'sal URLs, browser back/forward, deep-linking. - Copilot: a text-chat panel that answers questions grounded in the same facts, and can trigger navigation or the Approve action via natural language — it only classifies intent; the client calls the exact same he's one action pathway, not a second one bolted on.
- Real tests: an 11-test Playwright suite driving actual Chromium against the running app, no mocks, committed to the repo.
Challenges we ran into
- Neither of us had written a line of Jac before today — we scraped the real docs (via Firecrawl) into local reference files so we weren't guessing asyntax mid-build.
- Windows doesn't yet have Jac's native single-binary installer, so we had to fall back to the pip-installable
jaclangpackage in an isolated venv.- Jac's experimental native-compilation path hit anllvmliteot-reload flaky on both backend and frontend changes — welearned to do a clean restart after structural edits rather than trust HMR, which also surfaced a real bug: hot-reloading a node class definition bretype-filtered graph queries against already-persisted data. - Our first conflict-detection prompt over-triggered, flagging ordinary claim identifiers as "sensitive" (which literally broke the demo — the draft addressed the customer as "Dear Policyholder" instead of theirfication prompt fixed it.
- A subtle CSS gotcha: a
transformon any ancestor (even a completedtranslateY(0)from a finished animation) turns that ancestor into a containing block forposition: fixedchildren — which quietly broke oursitioning after we added page-transition animations.
What we learned
Jac's object-spatial model (computation moves through a graph,d into a fixed place) is a genuinely different way to thinkabout "RAG" — once the walker's traversal is the comparison logic, conflict detection stops being a prompt-engineering trick and becomes a real graph algorithm. And spending under $5 on real research before codinverage half hour of the whole build — it's the reason the apphas actual constraints (citations, human approval) instead of guessed ones.
Built With
- agentic-ai
- byllm
- cookiy-ai
- css
- firecrawl
- fullstack
- git
- github
- gpt-4o-mini
- graph-traversal
- insurtech
- jac
- jaclang
- jaseci
- javascript
- llm
- object-spatial-programming
- openai
- playwright
- pytest
- python
- react
- typescript
- vite
Log in or sign up for Devpost to join the conversation.