01The problem
As a BA, I own requirements, decisions and change control, but the evidence behind them is scattered.
A decision is made in a call, confirmed in a WhatsApp thread, and half-remembered in a spreadsheet. When a client asks why something was built a certain way, or a new team member joins mid-sprint, someone has to rebuild the story by hand.
Delivery teams lose time and trust because project context is fragmented across tools, and nothing connects a decision to the conversation, meeting or log that produced it.
02Users and jobs to be done
| User | Job to be done |
|---|---|
| Business Analyst or Project Manager | Track decisions, blockers and change requests across projects, and answer "what happened and why" in minutes. |
| Delivery lead | See project health and what needs attention today without chasing updates. |
| Team member | Log progress, blockers and tomorrow's plan in under 30 seconds. |
03The product
I designed and built 12 connected screens around a single project record.
Needs attention
Live meetings, pending logs, tasks, AI insights and the latest signals.
Project health
Team, blockers, pending logs, and tabs for meetings, logs, communications, files and timeline.
From call to record
Transcript upload, minutes, decisions, action items and an AI summary.
30-second capture
Done, blockers and tomorrow, with auto-saved drafts.
Threads that matter
Slack, Teams, WhatsApp and email threads, linked to a project.
Answers with sources
Questions answered from meetings, logs and threads, with citations.
A timeline puts every meeting, log, decision, blocker and upload for a project into one searchable history. Analytics show activity and project health over time.
04Design principles
Capture must be cheap
If a daily log takes more than 30 seconds, people stop writing them. The form has three short fields and keyboard shortcuts.
Decisions are first-class records
They are not lines buried in meeting notes. Each one is linked to its source, so it can be searched and traced later.
Every answer cites its sources
The assistant shows which meetings, logs and threads it used, so users verify rather than trust blindly.
05How I built it
I wrote the concept, user jobs and screen requirements first, then built the app myself with vibe coding: I directed AI coding tools from my written specs, reviewed every change and iterated screen by screen into a working React app. One consistent mock dataset feeds every screen, so links between projects, meetings and logs behave like the real product would. The result is something stakeholders can click through, which is a far better conversation starter than a slide.
- Front end
- React with TypeScript on TanStack Start
- UI
- Tailwind CSS and shadcn/ui components
- Hosting
- Cloudflare Workers
- Method
- Spec first, then built by me with vibe coding (AI-assisted development)
06Testing
I tested the prototype end to end myself before sharing it, the way I would test a client release.
- Functional
- Every screen and user flow, from the Today dashboard through projects, meetings, daily logs, communications, the assistant, timeline, analytics and settings
- Navigation
- Every link, tab and route, including deep links and moving between linked records (a meeting, its project and its decisions)
- Forms and edge cases
- Empty, long and invalid input, draft auto-save, empty states and keyboard shortcuts
- Data consistency
- The same record shows the same details on every screen that uses it
- UI and devices
- Responsive layouts on desktop, tablet and mobile, light and dark theme, and checks across major browsers
- Regression
- Re-tested affected screens after every change before moving on
07What's next
- Validate the problem through interviews with BAs, PMs and delivery leads before building a backend.
- Add authentication, workspaces and a data model for projects, meetings, logs, decisions and messages.
- Add Slack, Teams and email integrations, and transcript ingestion with retrieval-augmented search for the assistant.
- Add role-based access and audit logging, because project memory often holds client-confidential information.