justin.wray
employee
6c5f00079a27d3b0
Normalized: justin wray
github
linear
toggl
Entity Properties (gold employee table)
employee_id
6c5f00079a27d3b0
name
Justin Wray
email
justin.wray@morelandconnect.com
nickname
JW
doer
0.5
squad
Firestarter
loaded_cost_hr
136.15
canonical_metadata
—
created_at
2026-02-12 05:22:47.072254+00:00
updated_at
2026-02-12 05:22:47.072254+00:00
58%
Separation Confidence
How distinct this entity is from others. Higher means no close matches existed when it was created. Lower means a near-match was rejected just below the 80% threshold — worth reviewing.
Moderate — a somewhat similar entity exists
100%
Avg Match Confidence
The average confidence score across all active source mappings. Shows overall quality of linkage between source records and this canonical entity.
Strong source linkage
Source Mappings (3)
| Source | Source ID | Display Name | Confidence | Method | Status | Actions | |
|---|---|---|---|---|---|---|---|
| github | 55798620 | - | 1.00 | exact | Active |
|
|
|
Source Record
bronze_github_pull_requests
id
3609904878
number
39
state
closed
title
Add Project Manager page for cross-system entity mapping
body
## Summary
Adds a new admin page at **`/admin/org/[slug]/projects`** that lets PMs map projects across Toggl, Linear, QuickBooks (via client), and arrangement letters.
This is one slice of the broader work that's been sitting on `feature/project-entity-management`. Cherry-picked alone for an independently reviewable / mergeable PR.
### What it does
- **Left rail**: searchable project list sorted by hours, with mapping status badges
- **Right panel**: project detail with hours summary + mapping sections per source
- Each section has a live search combobox hitting Cube + the platform entity admin API
- Add / remove mappings via `add-mapping`, `deny`, `deny-and-reassign`
- Contracts section reads from entity resolution (real-time, not Cube cache)
- Smart internal-project detection (PTO, Overhead, etc.)
- Selecting a source record auto-reassigns it from any other project
### Files
**New**
- `app/admin/org/[slug]/projects/page.tsx` — full UI (1,003 lines)
- `app/api/admin/projects/route.ts` — project list from Cube
- `app/api/admin/projects/search/route.ts` — search Toggl / Linear / Client / Contract
- `app/api/admin/projects/mappings/route.ts` — CRUD proxy to platform entity admin API
- `app/api/admin/projects/contracts/route.ts` — contracts from entity resolution
**Modified**
- `app/admin/layout-client.tsx` — adds "Project Manager" sidebar link (FolderKanban icon)
### Independence verified
All imports resolve against existing files on `main`:
- `@/lib/get-session-safe` ✓
- `@/lib/db/queries/semantic-layer` ✓
- `@/lib/contexts/admin-org-context` ✓
No new migrations, no new schema columns, no new lib functions. Admin-only and additive — landing this can't break existing flows.
## Test plan
- [ ] Visit `/admin/org/<your-slug>/projects` after deploy
- [ ] Verify the project list loads (sourced from Cube `time_entry` aggregation)
- [ ] Click a project, verify the mappings sections populate from each source
- [ ] Try the search combobox in one mapping section
- [ ] Add and remove a mapping, verify both calls succeed
- [ ] Confirm Moreland-internal projects (PTO, Overhead) are flagged
- [ ] Confirm sidebar link appears under Overview → Project Manager
🤖 Generated with [Claude Code](https://claude.com/claude-code)
created_at
2026-04-30 15:44:21+00:00
updated_at
2026-04-30 15:57:40+00:00
closed_at
2026-04-30 15:51:07+00:00
merged_at
—
author_id
55798620
author_login
jwray
repo_name
moreland-connect/foundation
repo_full_name
—
base_ref
—
head_ref
—
additions
—
deletions
—
changed_files
—
_dlt_meta
—
|
|||||||
| linear | 6f7f5102-7a5e-4faf-accd-b0d3354b7b7d | - | 1.00 | exact | Active |
|
|
|
Source Record
bronze_linear_users
id
6f7f5102-7a5e-4faf-accd-b0d3354b7b7d
name
justin.wray@morelandconnect.com
display_name
justin.wray
email
justin.wray@morelandconnect.com
active
—
created_at
—
_dlt_meta
—
|
|||||||
| toggl | 7165579 | - | 1.00 | exact | Active |
|
|