Web application · Public project
ResearchAI: from a question to a cited report
A research workspace for asking questions, following progress and reviewing reports with supporting sources, saved sessions and document export.
I built ResearchAI for people who want to investigate a question and return to the result. It brings the question, research progress and cited document into the same workspace.
The application combines a React interface, a FastAPI backend and saved sessions with background research jobs. Users can continue earlier sessions, copy responses and print research documents to PDF.
- Context
- Public software project · Research application
- My role
- Full-stack product development across the interface, APIs, research workflow and supporting infrastructure.
ResearchAI / Workspace
A question. A traceable answer.
Start with the right question.
An export, an analysis or a research task may take longer than a single request. What should the person waiting see?
- The problem
- A waiting screen says little about whether work has started, finished or needs attention.
- The focus
- Clear task states, useful progress updates and a deliberate recovery path.
- The output
- A concise report with recommendations and primary sources to check.
The work behind the answer.
From an outline to multiple perspectives, supporting material and a connected document.
Outline
Frame the question around task state, feedback and recovery.
Perspectives
Consider the person waiting, the interface and the background worker.
Research
Review primary documentation for each part of the workflow.
Document
Bring the findings together with sources beside the answer.
Make long-running work feel predictable.
Keep the request, its progress and the final outcome connected. Give people a clear way to see what happened and what to do next.
Acknowledge the request
Separate acceptance from completion. A 202 response can acknowledge the request while a status URL lets the user follow its outcome.
Keep progress visible
Show meaningful task updates as work continues. Server-sent events are one way to carry those updates from the server to the interface.
Make retries deliberate
Choose which failures are safe to retry. Bound the attempts and use backoff so a temporary problem does not become a burst of repeated requests.
- RequestAccepted
- ProgressUnderstandable
- OutcomeClear next step
- React interface
- Authentication
- Session history
- Background jobs
- Progress updates
- Document output
01
One workspace from question to document
Users can ask follow-up questions or start a dedicated research task. Each session keeps the conversation and output together, with formatted text, supporting sources, diagrams and equations.
Document rendering and export are part of the workflow, so a completed response can be read, checked and shared without copying it into another editor first.
02
Make background work understandable
Research runs as a background task tied to the user’s session. The interface shows whether it is queued, running, complete or failed, with progress updates while the work continues.
The application handles failed or empty results explicitly, so a user can distinguish a finished report from a task that needs attention.
03
Control access and validate generated output
Authenticated APIs check task ownership before returning research state. Saved work and progress updates stay associated with the user who requested them.
Generated charts and rich responses pass through format validation and repair steps before rendering. This helps the interface handle malformed output as well as successful responses.
04
A complete research workflow
The resulting application connects authenticated sessions, visible research progress and exportable documents. Supporting sources remain alongside the report for the user to review.
The public source includes the frontend, APIs and background workflow, along with architecture and implementation notes.
Explore the work
Explore the application code and the decisions behind the research workflow.
A similar need on your team?
Web application development
Build a web application with the interface, backend and integrations it needs. Optional support is available after launch as a separate engagement.
See what an engagement includesRelated writing
Let’s talk
What would you like to build or improve?
Share the problem and what already exists. I’ll reply with questions or suggested next steps.