Show HN: We built a permissions layer for Notion
PEGHIN Thursday, January 08, 2026My agency was bleeding $1,800/year on contractor Notion seats. The problem: I needed to give contractors access to specific data (CRM, project tracker) but couldn't let them see pricing, margins, or other clients' information.
Notion's native solution doesn't work:
Row-level filtering exists but it's view-only (contractors can't edit)
Column hiding doesn't exist
Guest sharing is read-only
So you either pay $15/mo per seat or duplicate databases (maintenance nightmare)
I built a permissions layer using Notion's OAuth API. It lets contractors see only specific rows and columns, edit data, all without expensive seats.
How it works:
Connect Notion via OAuth
Define roles: "Sales reps see only leads where owner = them, hide pricing column"
Contractors access a clean portal
They view/edit data in real-time (syncs every 5 minutes)
You pay $59/mo flat for unlimited users
The math:
5 contractors × $15/mo = $900/year wasted
20 contractors × $15/mo = $3,600/year wasted
50 contractors × $15/mo = $9,000/year wasted
With this: all of them = $59/mo flat.
Technical:
Frontend: React + TypeScript
Backend: Supabase + PostgreSQL (RLS)
Auth: Notion OAuth 2.0
Current state: 50 beta testers. First 20 customers get $49/month locked-in (launching at $79 after January).
Limitations:
Only Notion databases (not pages)
5-minute sync (not instant)
Requires role definition
No team permissions yet (roadmap)
The ask: If this solves a problem you have, we'd love feedback. Are there permission use cases we're missing? What's your price sensitivity?
Free trial: notionportals.com