This is a submission for the Notion MCP Challenge
Rejections hurt. But ghosting hurts even more.
EchoHR is a Notion-native employee lifecycle system that ensures candidates and employees always receive timely updates, feedback, and visibility across their entire journey.
The goal is simple:
No candidate or employee should ever feel ghosted.
What I Built
EchoHR is a fully automated employee lifecycle management system built on top of Notion MCP.
It provisions an entire HR operating system inside Notion, including:
- 20+ interconnected lifecycle data sources
- versioned workspace hubs
- relations and rollups across the entire employee journey
- automation playbooks
- AI-ready fields for feedback and summaries
- startup-scale demo datasets
The system covers the complete lifecycle:
Candidates → Applications → Interviews → Offers → Onboarding → Check-ins → Goals → Achievements → Performance Reviews → Compensation → Offboarding → Alumni
All records are connected through Notion relations and rollups, enabling a complete view of every employee journey.
To make experimentation easy for hackathons and demos, EchoHR can provision the entire workspace with one command.
This instantly creates:
- lifecycle pipelines
- feedback workflows
- onboarding journeys
- review systems
- promotion tracking
- exit processes
- dashboards and demo data
Video Demo
Suggested demo flow:
- One-command provisioning of the EchoHR workspace
- Hiring pipeline with candidate progress
- Automated onboarding journeys
- AI-generated interview summaries
- Slack notification workflows
- Lifecycle dashboards and reporting
Show us the code
GitHub repository:
https://github.com/ujjavala/EchoHR
The repository includes everything needed to spin up a fully functional EchoHR workspace.
How I Used Notion MCP
EchoHR uses Notion MCP as the operational layer for lifecycle management.
It enables AI agents, automation workflows, and integrations to operate directly on structured HR data.
Notion MCP (hosted)
Notion MCP provides the primary CRUD and schema layer for lifecycle operations.
It is used for:
- provisioning databases
- creating lifecycle records
- updating candidate stages
- logging check-ins
- posting AI summaries
EchoHR includes a one-click workspace provisioning command:
npm run demo
These provisions:
- pages
- data sources
- relations
- rollups
- demo records
- automation playbooks
Agents can then operate on the workspace through MCP.
Slack MCP
Slack MCP enables human-first notifications so important updates never stall.
Examples include:
- candidate update reminders
- onboarding alerts
- offer acceptance notifications
- overdue feedback pings
This ensures recruiters and managers stay responsive.
Figma MCP
EchoHR integrates with design workflows through Figma MCP.
Example automation:
When a Figma frame is marked Ready for Review:
- A review task is created in Notion
- The task links to the relevant check-in
- A Slack notification is posted
This bridges the design → product → engineering workflow.
Calendar MCP Pattern
EchoHR uses calendar MCP patterns to schedule lifecycle events.
Examples:
- interview loops
- onboarding meetings
- post-offer check-ins
Agents create tasks in Notion and schedule them via calendar integrations.
OpenAI MCP (automation server)
EchoHR includes an automation server that processes lifecycle notes and generates structured summaries.
Under the Hood: MCP as an Orchestration Layer
Beyond individual integrations, EchoHR uses MCP as a coordination layer across systems.
Notion acts as the operational control plane, while automation and heavier workflows are handled via webhooks and an external automation server.
This enables:
- event-driven workflows (no polling)
- cross-tool orchestration (Notion + Slack + Figma + OpenAI)
- real-time feedback loops (notes → AI → Notion → Slack)
- scalability patterns like rate limiting, batching, and optional external storage
The goal is to keep humans in the loop, while MCP handles coordination across the lifecycle.
Example endpoint:
/webhooks/meeting-notes
This converts raw notes into:
- interview feedback summaries
- candidate-safe responses
- manager action items
The summaries are written back into Notion records automatically.
Core Components
Notion Workspace Seeder
The workspace seeder provisions the entire HR operating system.
It creates:
- lifecycle databases
- relations and rollups
- templates
- automation playbooks
- demo datasets
Running the setup creates a fully operational HR workspace inside Notion.
Automation Server
EchoHR includes a lightweight automation server that connects Notion to external systems.
Endpoints include:
POST /webhooks/notion
POST /webhooks/figma
POST /webhooks/meeting-notes
POST /summaries/interview
POST /summaries/review
POST /summaries/exit
POST /slack/notify
GET /health
These endpoints power automated workflows across the employee lifecycle. They are triggered by Notion lifecycle events and external signals, enabling event-driven automation instead of polling.
Example Automations
Candidate Workflow
When a new candidate is created in Notion:
- An application record is automatically created
- An SLA follow-up task is assigned to the recruiter
Offer Workflow
When an offer status becomes Accepted:
- An onboarding journey is created
- The first three monthly check-ins are scheduled
- onboarding tasks are generated
Design Workflow
When a Figma frame is marked Ready for Review:
- A review task is created in Notion
- The task attaches to the relevant check-in
- A Slack notification is posted
AI-Powered Feedback
EchoHR integrates with OpenAI to generate summaries for:
- interview feedback
- performance reviews
- exit interviews
Example flow:
- Interview notes are captured
-
/webhooks/meeting-notesprocesses them - AI generates candidate-safe summaries and manager action items
- The results are written back into Notion
- Slack notifications ensure feedback never stalls
Demo Dataset
To make the system immediately usable, EchoHR seeds a realistic startup environment with:
- ~50 employees
- founders and executives
- HR and people operations
- managers and ICs
- open roles
- active hiring pipelines
- onboarding journeys
- performance reviews
- promotions and compensation events
- recognition and pulse surveys
- exit processes
This allows dashboards and workflows to be demonstrated instantly.
One-Command Setup
Run:
npm run demo
This automatically:
- provisions the Notion workspace
- creates lifecycle databases
- seeds demo records
- configures relations and rollups
- persists install state for idempotent re-runs
You can also create a fresh versioned workspace:
npm run demo \-- \--force-new
Each installation creates a new workspace version, such as:
- EchoHR HQ v1
- EchoHR HQ v2
This makes experimentation safe during hackathons.
The Differentiator
Most HR software focuses on compliance and reporting.
EchoHR focuses on human experience.
It introduces the concept of:
Zero-Ghosting Lifecycle Management
Candidates should never wonder:
"Did they forget about me?"
Employees should never wonder:
"Am I doing well here?"
EchoHR enforces transparency through automated lifecycle checkpoints:
- candidate update deadlines
- interview feedback reminders
- onboarding check-ins
- review timelines
- promotion visibility
- exit follow-ups
Everything is tracked through interconnected Notion data sources.
Limitations (Current Notion Constraints)
Some capabilities are limited by the current Notion API.
Database Views
The API cannot create board, timeline, or gallery views.
EchoHR automatically creates a page called:
Set up Views (5–10 min)
This guides users through configuring dashboards manually.
Visual Styling
Notion does not support custom CSS through the API.
Visual structure uses:
- page covers
- emojis
- callouts
- curated views
Charts
Notion charts depend on workspace features.
If unavailable, charts can be embedded from external sources such as:
- Google Sheets
- Datawrapper
Formula Updates
Formula properties cannot currently be modified after creation through the API.
They must be defined during provisioning.
Why This Matters
Hiring and employee management systems often fail at one simple thing:
communication.
Candidates get ghosted.
Employees receive little feedback.
Performance reviews disappear into silence.
EchoHR demonstrates how Notion + MCP + AI automation can create a transparent and human-first operating system for people operations.
Instead of spreadsheets and disconnected tools, teams get a single lifecycle workspace where every stage is visible and actionable.
EchoHR isn’t just an HR system — it’s an example of how MCP can orchestrate tools into a cohesive, event-driven lifecycle engine.
One where communication is not an afterthought, but a guaranteed outcome.

Top comments (53)
Bravo! WOW! It is really cool prototype that you create. It is mind blowing. It is a system where employers should use your example. They have so much ghosting and hard to get an interview with the economical uncertainty at the moment. Your project makes the life of the candidates much easier to apply :)
Thanks Benjamin, really appreciate the kind words!
A big motivation behind building EchoHR was exactly that since too many candidates are left waiting with no updates. Even a simple “not moving forward” message is better than silence.
The goal is to use automation and AI to reduce the logistical chaos, so teams can focus on actually communicating with candidates.
Hopefully ideas like this can help make hiring a bit more transparent for everyone.
Yes, it is! My current provincial government of Ontario passed a law and came into effect in January 2026. They are forcing companies to be transparent with AI screening, salary range, and give answer to candidates 45 days why they were not retain for the job.
That’s a really positive step.
Transparency around AI screening, salary ranges, and response timelines can make a big difference for candidates. Many hiring teams don’t intend to ghost. It usually happens because processes aren’t structured.
That’s actually one of the motivations behind EchoHR: building systems that nudge teams to close the loop with candidates rather than letting applications disappear into silence
Yes, it is! That is true. They are overwhelm with the numbers of applications from the applicants applying for the role during these difficult times. I am curious! Have you share your prototype with your team or your director? It is excellent prototype for any companies to have. PS. If any hiring managers are reading her post. Please check her prototype. It will help with your headache for the hiring process at the moment.
Thanks Benjamin, really appreciate the encouragement!
I haven’t shared it with my team yet. This actually started as a project for this Notion MCP hackathon. I wanted to explore how Notion, MCP, and automation could be used to structure hiring workflows better.
A lot of ghosting happens simply because teams get overwhelmed with applications and lose track of follow-ups. The idea behind EchoHR was to design a system where candidate communication doesn’t fall through the cracks.
Thanks again for the kind words and support!
no problem :). I hope that you win the hackathon!
Thanks. Hope so🤞
Good luck!
Very nice project! And quite a big one :)
If I may - if you are looking for the tool which let you monitor what EchoHR is doing with MCPs let me know - I am working currently on such which I believe might help.
Thanks, I appreciate it!
It definitely turned into a bigger project than I planned 😅
Your tool sounds interesting. Monitoring MCP activity could be really useful for systems like this.
Thank you for the response! If you would be interested - here it is: github.com/radoslaw-sz/guardio. I also created dev.to article about it: dev.to/radoslawsz/introducing-guar...
When I was thinking about your project, then I realized that maybe it could be deployed together with guardio, so you could reuse concepts from guardio and for instance rate limit the calls or just introduce the control of messages from EchoHR to MCP.
Just something to think about it :) Good luck with your project!
Thanks for sharing. I’ll take a look at it and your article. Appreciate the suggestion!
Hey Ujja, digging into your EchoHR repo—solid one-click Notion provisioning with the npm demo script and those MCP webhooks for Slack/Figma/OpenAI integrations. For scaling beyond startups where Notion rollups slow down, I'd suggest layering in a dedicated backend like Supabase or Airtable synced via webhooks; it handles larger datasets better while keeping your zero-ghosting automations intact. Tried spinning it up locally—works smoothly for the demo flows.
Thanks for taking the time to explore the repo and even run it locally. That’s great to hear.
I’m curious, did the README make the setup and flow easy to follow, or were there areas that could use more clarity?
And I appreciate the suggestion about introducing something like Supabase or a dedicated backend for larger datasets. Definitely something I’ll keep in mind if this evolves beyond the current Notion-native prototype.
Thanks again for the thoughtful input.
If this is really work then goes away a big amount of hedache.
Yes please. We’re so far ahead with MCP and the whole AI wave, yet we still struggle with the most basic things. Communication and not leaving candidates or employees hanging. We should at least be able to get that right. For God’s sake, we’re talking big about LLMs
The ghosting problem (in my experience ) is usually worst at the smaller end of the spectrum. In my experience, large organizations tend to have a lot of automation and compliance processes in place, so candidates at least receive an automated rejection email. It might feel impersonal, but it rarely goes completely silent.
Where I’ve personally seen the most ghosting is small to mid-size companies, where hiring is often managed by one recruiter or founder using spreadsheets and email threads. Things simply fall through the cracks.
That’s exactly the gap EchoHR tries to address.
Hey all👋🏼. Big drop for EchoHR today 🚀
A few upgrades I’m excited about:
🔧 Reliability
Postgres-backed queue + worker, idempotent + HMAC-verified webhooks (Notion/Slack/Figma), retries/backoff, and proper metrics/health endpoints
✨ UX polish
Added a hero video + logo, cleaner sections, and a much clearer lifecycle flow
⚙️ CI/CD
More robust installs (no more npm flakiness), plus Docker now runs migrate → seed → worker + automation server out of the box
Also tightened rate guards to handle 429s more gracefully.
Would love feedback, especially from folks building with MCP or Notion automation space 🙌🏼
As a student looking at the job market, the whole ai ghosting thing is kinda disheartening. It's a breath of fresh air to see someone actually building something like EchoHR with a focus on transparency. How do you balance the need for AI in terms of HR efficiency with the need for a human feedback loop in terms of candidate development?
Thanks for sharing that, and I totally get why the current situation feels discouraging.
The intent with EchoHR isn’t to automate humans out of hiring. It’s to automate the busywork that prevents humans from responding in the first place.
AI mainly helps summarize notes, structure feedback, and remind teams when responses are overdue. The decision-making and feedback itself should still come from people.
So the goal is really:
AI handles the logistics, humans handle the judgment.
If that works well, it actually means more candidates receive updates and feedback, not fewer.
That’s a great distinction - ai for logistics, humans for judgment. As I’m looking to move into Data Science, that’s exactly the kind of ethical implementation I want to focus on. It turns ai into a tool for better communication rather than a barrier. Thanks for the insight!
Really glad that resonated.
I think some of the most impactful AI systems will be the ones that augment human decisions rather than replace them.
EchoHR is a small experiment around that idea. Using AI and automation to make hiring more transparent and responsive instead of more automated and distant.
Wishing you the best with your move into data science!
20+ interconnected databases in Notion is ambitious — how does it hold up once you're past a few hundred employee records? Notion's relation/rollup performance tends to degrade with scale, and that's exactly where an HR system needs to stay fast.
That’s a great point and something I thought about while designing it.
EchoHR is really aimed at startup-scale organizations, where the number of active records stays manageable. The schema spreads lifecycle data across multiple smaller databases and keeps rollups fairly minimal.
For larger organizations, the idea would be to use it more as a workflow orchestration layer rather than the long-term system of record.
The zero-ghosting guarantee also doesn’t rely heavily on rollups. It’s enforced through event-driven automations and SLA tasks.
For example:
new candidates trigger automatic follow-up tasks
overdue feedback triggers Slack reminders
accepted offers automatically create onboarding journeys and scheduled check-ins
This is where MCP becomes important.
Agents interacting with the system through Notion MCP can monitor lifecycle events, run automation logic, and trigger reminders or summaries without requiring complex queries inside Notion itself.
So even as organizations grow, EchoHR can continue functioning as the orchestration layer ensuring candidates and employees always receive updates, which keeps the zero-ghosting promise intact.
Notion API rate limits gonna be rough with bulk candidate updates—did you end up batching those or did you hit the wall and move to webhooks? Feels like that'd be the limiting factor in scaling this past a few hundred applicants.
That’s a fair point.
For the demo dataset (~50 people and related lifecycle records), operations are mostly event-driven through MCP, so updates happen incrementally rather than as large bulk writes.
Provisioning happens through the seeder, while ongoing lifecycle actions are handled through MCP-triggered automations. If this were pushed to much larger hiring volumes, batching or a small backend layer would likely sit alongside Notion to handle heavier workloads.
Just to add one more point. The intention isn’t really to use Notion as a high-scale database.
There are already many systems that handle that better. SQL and NoSQL databases are far more suited for large-scale data workloads. EchoHR is more about leveraging Notion for what it does well, i.e. acting as a collaborative operational layer and orchestration surface.
With MCP, it becomes a place where humans, agents, and automations can interact with the same lifecycle state, while heavier processing or integrations can live outside the workspace.
That separation is what makes the model interesting to experiment with.
That’s actually really well done. The zero-ghosting idea makes a lot of sense because most HR systems don’t fail at hiring — they fail at communication. I built something autonomous that writes to Notion on its own schedule. It’s a completely different use case, but the idea of making AI activity visible really resonated with me.Not to mention i learned a new use case i haven't thought of.
Thanks, really appreciate that.
I’ve come to a similar conclusion. Many HR tools handle the process itself, but the communication layer is where things break down.
Your autonomous Notion system sounds interesting too. Visibility into what AI systems are doing is going to be pretty important as more workflows become automated.
Glad the project sparked a new idea.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.