Inspiration
AuditAI was inspired by a gap in how most AI writing tools behave. Many products try to generate text for the user, but that often skips the harder and more valuable part of writing: getting sharp, actionable critique. The goal with AuditAI was to build something that acts more like an editor than a ghostwriter, helping authors improve reasoning, structure, clarity, and support without overwriting their voice.
What it does
AuditAI is a text-first AI review workspace for long-form writing. Users can draft in a block-based editor, trigger critique manually or after meaningful writing progress, and receive anchored review comments tied directly to the relevant part of the document. Instead of vague feedback, the system highlights specific spans, paragraphs, or structural regions and categorizes issues into fixed review types like logic_gap, support_gap, claim_clarity, and structure_issue.
It also supports guest mode, so people can try the product without logging in, while authenticated users get persistent documents, review history, folders, and follow-up discussion threads tied to their own account.
How we built it
We built AuditAI as a full-stack application with a strict separation between frontend interaction and backend AI logic.
The frontend uses React, TypeScript, Vite, Tiptap, Zustand, and Zod to create a block-based writing and review experience. The backend uses Python, FastAPI, and Pydantic, with Supabase handling authentication and persistent storage. All model calls happen server-side so secrets never reach the client.
A key technical decision was the anchor protocol. The model does not return raw frontend offsets. Instead, it returns a block_id and quoted text, and the backend resolves that into a renderable span:
$$ (block_id,\ quote) \rightarrow (from,\ to) $$
That made the critique system more reliable, easier to validate, and safer to maintain as documents change over time.
Challenges we ran into
The biggest challenge was making AI feedback precise instead of noisy. It was not enough to generate comments; those comments needed to attach to the correct text, avoid duplication, and disappear when the underlying content was edited or deleted.
Another major challenge was state management across guest and authenticated flows. We wanted the app to be easy to try without a login wall, but we also needed strong user isolation, persistent storage for signed-in users, and a clean transition when a guest decides to save work into an account.
We also had to define strong product boundaries so the system stays an AI reviewer rather than drifting into a writing assistant. That required explicit constraints in prompt design, backend validation, and UI behavior.
Accomplishments that we're proud of
We’re proud that AuditAI is opinionated in the right way. It does not try to do everything. It focuses on high-signal critique and builds the product around that core purpose.
We’re also proud of the anchored review workflow, especially the block-scoped highlighting and validation rules that keep feedback tied to the exact place where it matters. The guest mode is another strong point because it lowers friction without compromising the architecture for authenticated users.
From a systems perspective, we’re proud that the app treats persistence, authentication, review deduplication, and anchor lifecycle as first-class concerns instead of afterthoughts.
What we learned
We learned that useful AI products need tighter boundaries, not looser ones. The more specific we were about what the model should and should not do, the better the experience became.
We also learned that product quality in AI apps comes from surrounding systems as much as from the model itself. Prompting matters, but so do validation, deduplication, persistence, and UX rules. A comment is only useful if it is relevant, anchored correctly, and still valid after the document evolves.
Finally, we learned that trust comes from restraint. AuditAI becomes more helpful by pointing out the right issue clearly and selectively, not by saying more.
What's next for AuditAI
Next, we want to make the review experience deeper and more adaptive. That includes improving reviewer personas, giving users more control over critique depth and tone, and making follow-up threads more conversational without losing precision.
We also want to strengthen persistence and collaboration features, including better document organization, richer review history, and smoother guest-to-account migration. On the intelligence side, the next step is making critique more context-aware across longer documents while preserving the same strict anchor accuracy and low-noise feedback that define AuditAI today.
Built With
- fastapi
- openai-compatible-llm-api
- prosemirror
- pydantic-v2
- python
- react-19
- supabase
- tiptap
- typescript
- vanilla-css
- vite
- zod
- zustand
Log in or sign up for Devpost to join the conversation.