diff --git a/migration-output/context-ownership-2026-03-24T22-58-27-823Z/contexts.json b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/contexts.json new file mode 100644 index 0000000..0b4fab9 --- /dev/null +++ b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/contexts.json @@ -0,0 +1,200 @@ +[ + { + "id": "agjvjaleo6zfqe3", + "key": "user-oz8sxsyg8hznqa6", + "displayName": "IT", + "kind": "user", + "policy": "collaborative", + "targetUserId": "oz8sxsyg8hznqa6", + "deletedAt": null + }, + { + "id": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "displayName": "Ezekiel Ewing", + "kind": "user", + "policy": "collaborative", + "targetUserId": "2lmwfhtdwuexmiv", + "deletedAt": null + }, + { + "id": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "displayName": "Alfonso Ewing", + "kind": "user", + "policy": "collaborative", + "targetUserId": "1hbif9dbqng86h9", + "deletedAt": null + }, + { + "id": "p65sesgbxah4chu", + "key": "user-fdve3i2gop4huym", + "displayName": "Heidi Mahan", + "kind": "user", + "policy": "collaborative", + "targetUserId": "fdve3i2gop4huym", + "deletedAt": null + }, + { + "id": "vo9x5s7x9jjq6zw", + "key": "user-ee4c6xmjrhypv4f", + "displayName": "Anita Pence", + "kind": "user", + "policy": "collaborative", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "displayName": "Beth Cardoza", + "kind": "user", + "policy": "collaborative", + "targetUserId": "h9uihmnkwngdu8y", + "deletedAt": null + }, + { + "id": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "displayName": "Rick Cardoza", + "kind": "user", + "policy": "collaborative", + "targetUserId": "e9vck6v3pa951wn", + "deletedAt": null + }, + { + "id": "2nlrw1wumhtbc98", + "key": "user-c1uzqhpacn65qt1", + "displayName": "Steve Brewer", + "kind": "user", + "policy": "collaborative", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "2ttnn1vcdnniqci", + "key": "user-rrjoxd2wewmlrwy", + "displayName": "David Cardoza", + "kind": "user", + "policy": "collaborative", + "targetUserId": "rrjoxd2wewmlrwy", + "deletedAt": null + }, + { + "id": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "displayName": "Timothy Cardoza", + "kind": "user", + "policy": "collaborative", + "targetUserId": "sivbh2pwzyew5lb", + "deletedAt": null + }, + { + "id": "ucj2hrr4htezrzo", + "key": "user-gk3u91dx0r79fo2", + "displayName": "Employee", + "kind": "user", + "policy": "handoff", + "targetUserId": "gk3u91dx0r79fo2", + "deletedAt": null + }, + { + "id": "lazcnjz2tsdoi0t", + "key": "user-mchpsyvh0wrcxv6", + "displayName": "Cortney Abrams", + "kind": "user", + "policy": "collaborative", + "targetUserId": "mchpsyvh0wrcxv6", + "deletedAt": null + }, + { + "id": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "displayName": "Joel Snyder", + "kind": "user", + "policy": "collaborative", + "targetUserId": "ewdxrba73q68kqj", + "deletedAt": null + }, + { + "id": "asgpvdgthuoyhgx", + "key": "user-s1gwhknxaww38i3", + "displayName": "David Rader", + "kind": "user", + "policy": "collaborative", + "targetUserId": "s1gwhknxaww38i3", + "deletedAt": null + }, + { + "id": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "displayName": "Ben Poland", + "kind": "user", + "policy": "collaborative", + "targetUserId": "nc23vrshrg0qtdi", + "deletedAt": null + }, + { + "id": "r27bfvcvig2n90m", + "key": "user-naztc2sg4b4fgfc", + "displayName": "Mark Huber", + "kind": "user", + "policy": "collaborative", + "targetUserId": "naztc2sg4b4fgfc", + "deletedAt": null + }, + { + "id": "il3piz7xfklzw3o", + "key": "testing-bucket", + "displayName": "Testing Bucket", + "kind": "bucket", + "policy": "handoff", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "w9zx3zqsi5r8zht", + "key": "vehicle-maintenance", + "displayName": "Vehicle Maintenance", + "kind": "bucket", + "policy": "handoff", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "o6n72jlh3s6c42e", + "key": "shop", + "displayName": "Shop", + "kind": "bucket", + "policy": "handoff", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "cu4b1epkpwf15zs", + "key": "equipment-maintenance", + "displayName": "Equipment Maintenance", + "kind": "bucket", + "policy": "handoff", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "zdqmiqyfjx3z68d", + "key": "development", + "displayName": "Development", + "kind": "bucket", + "policy": "handoff", + "targetUserId": null, + "deletedAt": null + }, + { + "id": "pjwskg0eo91n5y6", + "key": "user-i73wk8r7f2evbew", + "displayName": "Eddie", + "kind": "user", + "policy": "collaborative", + "targetUserId": "i73wk8r7f2evbew", + "deletedAt": null + } +] \ No newline at end of file diff --git a/migration-output/context-ownership-2026-03-24T22-58-27-823Z/notes.json b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/notes.json new file mode 100644 index 0000000..0d72f3b --- /dev/null +++ b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/notes.json @@ -0,0 +1,1534 @@ +[ + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Other


All:

Current Prompt:

I get this in the console every minute. Can you tell me why and maybe fix it? It seems benign but it's getting a little annoying to have them build up and it would be nice to know what is actually causing them.

Conole Item:

realtime:1 GET https://pocketbase.ccllc.pro/api/realtime net::ERR_QUIC_PROTOCOL_ERROR 200 (OK)


Prism Prompt:

When a note is created for a job using the tasgrid sdk. Also create the following child notes:
- Contract
- Estimate and Scopes
- Plans and Drawings
- Schedule
- Pictures

Notes can be children of other notes simply by adding the tag \"child-of-[parent-note-ID]\" to the note.


Code Cleanup (put whole flattened codebase in context)

Let's carefully improve the structure of this codebase to improve future AI assisted development. Review this flattened repo and provide the following:

", + "created": "2026-02-27 02:40:20.077Z", + "deletedAt": "", + "id": "fqkvul3d1ect7e3", + "isPrivate": true, + "key": "tasgrid", + "tags": [ + "#tasgrid" + ], + "tasks": [], + "title": "Tasgrid", + "updated": "2026-03-23 23:42:26.554Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

To Do:

Hosting:

AI Models:

General Purpose and Summarization:

Local Multi-Lingual Messaging Pipeline (2026 Spec)

1. Voice-to-Text (VTT): Whisper-v3-Turbo

2. Machine Translation (MT): NLLB-200-Distilled-1.3B

3. Text-to-Speech (TTS): Qwen3-TTS-0.6B

Execution Workflow

Voice to Voice translation:

  1. Ingestion: A voice message is recorded and passed to Whisper-v3-Turbo for transcription.

  2. Processing: * Spanish to English: Whisper.cpp uses the --translate flag to output English text directly.

  3. Synthesis: The translated text is sent to Qwen3-TTS, which generates the final audio file using the sender's stored voice profile.

Text to Voice (with translation):

  1. Ingestion: A text message is sent.

  2. Processing: * Spanish to English: Whisper.cpp uses the --translate flag to output English text directly.

  3. Synthesis: The translated text is sent to Qwen3-TTS, which generates the final audio file using the sender's stored voice profile.

Execution

The pipeline is triggered by incoming messages and routes them through the following logic, contingent on whether a user in the thread is marked as \"needing translation.\"

1. Transcription & Search (Standard)

2. Text-to-Audio Accessibility (Standard)

3. Voice-to-Translated-Voice (As Needed)

4. Text-to-Translated-Voice (As Needed)

Resource Management

​The system is designed to run on a server with at least 8GB of total RAM, with the following allocation for these specific services:

Architecture

Lets work on the app architecture.

This app should use a multi-tiered structure:
- Springs (high level grouping)
- Rivers (Job or topic level grouping)
- Streams (individual chats)
- Trenches (essentially like discord threads for sub-conversations)

Some specific preconfigured groups are:
- There should be a DM Spring (for direct user to user messaging)
- A Jobs Spring (for all job specific rivers)

UI

### The UI Refinement

Refine and modernize the UI for this communication app (RiverConnect) with a focus on professional consistency and 'Discord-meets-Linear' aesthetics. Please apply the following specific fixes:

* Sidebar Iconography: Replace the small blue icons next to 'Direct Messages' and 'Jobs' with modern, minimalist chevron or 'plus' icons. Ensure they are vertically centered with the text and have consistent padding.
* Header Actions: Update the search and settings icons in the top-right corner. Use a consistent SVG stroke weight (e.g., 1.5px or 2px) and ensure they are perfectly aligned within a subtle circular hover state.

* Channel Intro Text: Replace the 'This is the start of the #Stream channel.' text with more relevant text. Stream is the name of the layer of hierarchy not the name of THIS particular stream. And we aren't using \"#\" for anything.
* Global Styling: Implement a consistent *border-radius** (8px to 12px) across all UI elements.
* Adjust the typography scale to create a clearer distinction between channel names, user names, and timestamps.
* Ensure all voice note players have a uniform height and consistent padding within the chat stream.
* Maintain the dark theme but introduce subtle 'surface' colors (e.g., slightly lighter greys) to differentiate the sidebar from the main chat area.

* Visual Balance: The left sidebar feels a bit \"heavy\" compared to the right side. Adding a slight 1px border or a very subtle drop shadow to the sidebar can help create a sense of depth.

SPEC DOC CREATION PROMPT

Write me a spec document for an app for my company to use internally.

Here are the specifications I have:

Stack:

- Use Elixir, Phoenix Liveview, and a solid.js layer on the front (to prevent duplicate stores) - Unless you recommend just elixir as a backend and solid for the frontend.

- Use Supabase (or a direct connection to postgres)

Key features:

- Voxer-like audio recording/streaming messages. Record and playback by other users while recording or with a delay or days later.

- Text messaging

- Video and image sending

- PDF attachment sending

- A hierarchal chat system featuring 4 layers:

- - High level categories including \"DMs\", \"Job chats\", \"Office Chats\".

- - Chats including: various direct messages between users, all individual jobs, group chats.

- - Sub-chats for organizing conversations such as different topics within a job (these would be optional in that not all Chats need to have sub-chats)

- - \"Conversations\" or \"Threads\" which are collapsible groups of messages within a chat or sub-chat. Messages can be dynamically added to threads after the fact.

- 1x, 2x, 3x, and 4x playback speed for audio messages

UI:

- Shadcn baseline with light and dark mode

- Mobile and Desktop optimized

- Audio messages should have a playback/scrubbing bar that fits to the length of the audio message and can wrap to multi-line.

- Two-way transcription: Transcribe audio messages to text (and display a summary) and convert text messages to voice-cloned audio messages. (always transcribed and server side with company servers and ai models) use Whisper-v3-Turbo, NLLB-200-Distilled-1.3B (for translation to and from spanish for specific users), and Qwen3-TTS-0.6B as well as whatever general purpose LLM the company is already running.

- Simple modern shadcn inspired icons

", + "created": "2026-02-27 02:42:35.567Z", + "deletedAt": "", + "id": "6nduhfb37oe9f8i", + "isPrivate": true, + "key": "rivertalk", + "tags": [ + "#rivertalk" + ], + "tasks": [], + "title": "RiverTalk", + "updated": "2026-03-20 00:31:36.102Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4830: O'Reilly Auto Parts in Shell Knob

", + "created": "2026-02-27 22:29:42.231Z", + "deletedAt": "", + "id": "a533wg3z88that8", + "isPrivate": false, + "key": "4830-o-reilly-auto-parts-in-shell-knob", + "tags": [ + "#4830-o-reilly-auto-parts-in-shell-knob", + "job_id:noc9gko3pea2t99", + "prism_job" + ], + "tasks": [], + "title": "#4830 - O'Reilly Auto Parts in Shell Knob", + "updated": "2026-03-20 00:31:36.390Z", + "user": "" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4833: Goldsmith.

", + "created": "2026-02-27 23:45:36.438Z", + "deletedAt": "", + "id": "e096s43ydxf9zw2", + "isPrivate": false, + "key": "4833-goldsmith", + "tags": [ + "#4833-goldsmith", + "job_id:tj2amt55s6czb1s", + "prism_job" + ], + "tasks": [], + "title": "#4833 - Goldsmith", + "updated": "2026-03-20 00:31:36.753Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-02 21:46:37.240Z", + "deletedAt": "", + "id": "706khpyp5b5u2fi", + "isPrivate": true, + "key": "v-f150", + "tags": [ + "#v-f150" + ], + "tasks": [], + "title": "V F150", + "updated": "2026-03-20 00:31:36.940Z", + "user": "naztc2sg4b4fgfc" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4827: Phillips

Estimate from plans and Eddie’s info in voxer

", + "created": "2026-03-03 18:58:54.285Z", + "deletedAt": "", + "id": "eiwpc638pe1iwmv", + "isPrivate": false, + "key": "4827-phillips", + "tags": [ + "#4827-phillips", + "job_id:brypj9xa3fs0cnj", + "prism_job" + ], + "tasks": [], + "title": "#4827 - Phillips", + "updated": "2026-03-20 00:31:37.313Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4836: Sedalia State Fair.


Contact Notes

Elise Bruce is an intern who was the original contact. (618) 531-3973 - Elise.bruce@Nabholz.com

Dana Spath is current primary contact and he has the title \"ASSISTANT PROJECT MANAGER\"

", + "created": "2026-03-03 19:13:58.828Z", + "deletedAt": "", + "id": "ue2grgnznwom0ze", + "isPrivate": false, + "key": "4836-sedalia-state-fair", + "tags": [ + "#4836-sedalia-state-fair", + "job_id:mv0gbffhsnx56qh", + "prism_job" + ], + "tasks": [], + "title": "#4836 - Sedalia State Fair", + "updated": "2026-03-20 00:31:37.500Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4802: SDC Resort Acoustical ceilings: need pricing for specific vinyl tile and 4’ Ts. Look for a response from FBM and send update before 3/9

", + "created": "2026-03-03 22:47:05.078Z", + "deletedAt": "", + "id": "k8tg3nj6em2tsa6", + "isPrivate": false, + "key": "4802-sdc-resort-acoustical-ceilings", + "tags": [ + "#4802-sdc-resort-acoustical-ceilings", + "job_id:3u3yvyxz6giypnn", + "prism_job" + ], + "tasks": [], + "title": "#4802 - SDC Resort Acoustical ceilings", + "updated": "2026-03-20 00:31:37.691Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-04 23:21:39.287Z", + "deletedAt": "2026-03-04 23:26:33.796Z", + "id": "nlrfwhhxutwp0hp", + "isPrivate": false, + "key": "new-note2", + "tags": [ + "#new-note2" + ], + "tasks": [], + "title": "New Note2", + "updated": "2026-03-20 00:31:37.873Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4707: Springfield Office Building

", + "created": "2026-03-05 15:47:04.317Z", + "deletedAt": "", + "id": "skm1yh73migktq0", + "isPrivate": false, + "key": "4707-springfield-office-building", + "tags": [ + "#4707-springfield-office-building", + "job_id:nyffamaoce4p7ql", + "prism_job" + ], + "tasks": [], + "title": "#4707 - Springfield Office Building", + "updated": "2026-03-20 00:31:38.065Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-05 15:48:59.765Z", + "deletedAt": "", + "id": "qnotrhp9ibvicu2", + "isPrivate": false, + "key": "4609-camp-crowder-solider-barracks-bldg-757", + "tags": [ + "#4609-camp-crowder-solider-barracks-bldg-757", + "job_id:5skjxx54r875sny", + "prism_job" + ], + "tasks": [], + "title": "#4609 - Camp Crowder Solider Barracks - BLDG 757", + "updated": "2026-03-20 00:31:38.242Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4610: Camp Crowder Solider Barracks - BLDG 758

MAR 5, 2025 - Address is correct and contact information is up to date

", + "created": "2026-03-05 15:49:50.639Z", + "deletedAt": "", + "id": "ph2highdgz1lp8p", + "isPrivate": false, + "key": "4610-camp-crowder-solider-barracks-bldg-758", + "tags": [ + "#4610-camp-crowder-solider-barracks-bldg-758", + "job_id:ptek1eslv503f77", + "prism_job" + ], + "tasks": [], + "title": "#4610 - Camp Crowder Solider Barracks - BLDG 758", + "updated": "2026-03-20 00:31:38.421Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 3981: SRC

", + "created": "2026-03-05 15:50:34.709Z", + "deletedAt": "", + "id": "7zj5jikjdski8vc", + "isPrivate": false, + "key": "3981-src", + "tags": [ + "#3981-src", + "job_id:b64o8a0vqqov93b", + "prism_job" + ], + "tasks": [], + "title": "#3981 - SRC", + "updated": "2026-03-20 00:31:38.598Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4798: Alpha Acquisitions

", + "created": "2026-03-05 16:36:13.653Z", + "deletedAt": "", + "id": "ix1xaxnirv6p7xi", + "isPrivate": false, + "key": "4798-alpha-acquisitions", + "tags": [ + "#4798-alpha-acquisitions", + "job_id:dlah2ny3jp4h9lk", + "prism_job" + ], + "tasks": [], + "title": "#4798 - Alpha Acquisitions", + "updated": "2026-03-20 00:31:38.784Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4709: Verizon

MAR 5, 2026 - contact information and address is correct

", + "created": "2026-03-05 16:56:03.987Z", + "deletedAt": "", + "id": "6029pyr82ftvwgr", + "isPrivate": false, + "key": "4709-verizon", + "tags": [ + "#4709-verizon", + "job_id:nnchxchep4yq1r9", + "prism_job" + ], + "tasks": [], + "title": "#4709 - Verizon", + "updated": "2026-03-20 00:31:38.971Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4323: Prayer Center Restrooms

MAR 5, 2026 - all information is up to date

", + "created": "2026-03-05 17:02:07.857Z", + "deletedAt": "", + "id": "jmmwcpnj2s6nari", + "isPrivate": false, + "key": "4323-prayer-center-restrooms", + "tags": [ + "#4323-prayer-center-restrooms", + "job_id:na4cnfsefa4az52", + "prism_job" + ], + "tasks": [], + "title": "#4323 - Prayer Center Restrooms", + "updated": "2026-03-20 00:31:39.164Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 3694: Assemblies of God

MAR 5, 2025 - updated project address, no plans in job folder

", + "created": "2026-03-05 17:04:28.534Z", + "deletedAt": "", + "id": "z24t337k0rp1pw4", + "isPrivate": false, + "key": "3694-assemblies-of-god", + "tags": [ + "#3694-assemblies-of-god", + "job_id:08slo7nfszfk9qn", + "prism_job" + ], + "tasks": [], + "title": "#3694 - Assemblies of God", + "updated": "2026-03-20 00:31:39.366Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4682: Bread of Life Church

MAR 5, 2026 - address is correct, need contact information for PM, no plans in job folder

", + "created": "2026-03-05 17:08:41.765Z", + "deletedAt": "", + "id": "qlh87ho8n8hziy8", + "isPrivate": false, + "key": "4682-bread-of-life-church", + "tags": [ + "#4682-bread-of-life-church", + "job_id:km9s5e7npbigfka", + "prism_job" + ], + "tasks": [], + "title": "#4682 - Bread of Life Church", + "updated": "2026-03-20 00:31:39.580Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4803: JRC South Campus Early Childhood Water Damage

MAR 5, 2026 - address is correct, no contact number for project

", + "created": "2026-03-05 17:13:11.854Z", + "deletedAt": "", + "id": "wrj8u6n5oggr36k", + "isPrivate": false, + "key": "4803-jrc-south-campus-early-childhood-water-damage", + "tags": [ + "#4803-jrc-south-campus-early-childhood-water-damage", + "job_id:yn21jh14r5acv5r", + "prism_job" + ], + "tasks": [], + "title": "#4803 - JRC South Campus Early Childhood Water Damage", + "updated": "2026-03-20 00:31:39.761Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4623: Nixa Highschool Repairs

MAR 5, 2026 - job address is correct

", + "created": "2026-03-05 17:27:52.185Z", + "deletedAt": "", + "id": "8vcj226dpkermwx", + "isPrivate": false, + "key": "4623-nixa-highschool-repairs", + "tags": [ + "#4623-nixa-highschool-repairs", + "job_id:fyp6gjsqy372o9s", + "prism_job" + ], + "tasks": [], + "title": "#4623 - Nixa Highschool Repairs", + "updated": "2026-03-20 00:31:39.937Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4019: St. Elizabeth Ann Seton Parish Hall Renovation

MAR 5, 2026 - address is correct, all contact information is correct.

", + "created": "2026-03-05 17:30:20.351Z", + "deletedAt": "", + "id": "yref8fhpyw677q0", + "isPrivate": false, + "key": "4019-st-elizabeth-ann-seton-parish-hall-renovation", + "tags": [ + "#4019-st-elizabeth-ann-seton-parish-hall-renovation", + "job_id:adpzc3peco73sj0", + "prism_job" + ], + "tasks": [], + "title": "#4019 - St. Elizabeth Ann Seton Parish Hall Renovation", + "updated": "2026-03-20 00:31:40.123Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4315: CU JTEC Locker Room and RR Remodel

MAR 5, 2026 - all job information is up to date

", + "created": "2026-03-05 17:31:31.700Z", + "deletedAt": "", + "id": "4mtuh2x3c3rmz2w", + "isPrivate": false, + "key": "4315-cu-jtec-locker-room-and-rr-remodel", + "tags": [ + "#4315-cu-jtec-locker-room-and-rr-remodel", + "job_id:ijhz0e5j8sp5wgi", + "prism_job" + ], + "tasks": [], + "title": "#4315 - CU JTEC Locker Room and RR Remodel", + "updated": "2026-03-20 00:31:40.332Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4118: Estes Express Line Addition

MAR 5, 2026 - all job information is up to date and correct.

", + "created": "2026-03-05 17:33:05.022Z", + "deletedAt": "", + "id": "1mg085ngfajz6t8", + "isPrivate": false, + "key": "4118-estes-express-line-addition", + "tags": [ + "#4118-estes-express-line-addition", + "job_id:yvz1nm8k7xysesx", + "prism_job" + ], + "tasks": [], + "title": "#4118 - Estes Express Line Addition", + "updated": "2026-03-20 00:31:40.523Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 3768: JRC Joplin Sound booth

MAR 5, 2026 - all job information is correct and up to date

", + "created": "2026-03-05 17:36:14.535Z", + "deletedAt": "", + "id": "fd1urum9tbadrzd", + "isPrivate": false, + "key": "3768-jrc-joplin-soundbooth", + "tags": [ + "#3768-jrc-joplin-soundbooth", + "job_id:9j2g3niqvbgy6ct", + "prism_job" + ], + "tasks": [], + "title": "#3768 - JRC Joplin Soundbooth", + "updated": "2026-03-20 00:31:40.699Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4310: Central Assembly of God Church

MAR 5, 2025 - all job information is correct and up to date

", + "created": "2026-03-05 17:39:00.882Z", + "deletedAt": "", + "id": "c6fiq2j377zj93i", + "isPrivate": false, + "key": "4310-central-assembly-of-god-church", + "tags": [ + "#4310-central-assembly-of-god-church", + "job_id:juxtr4skkl1wxqz", + "prism_job" + ], + "tasks": [], + "title": "#4310 - Central Assembly of God Church", + "updated": "2026-03-20 00:31:40.902Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4287: Meeks Chiropractic

MAR 5, 2026 - updated address all other job information is correct

", + "created": "2026-03-05 17:40:19.358Z", + "deletedAt": "", + "id": "4gvd9ji3p6o9n3u", + "isPrivate": false, + "key": "4287-meeks-chiropractic", + "tags": [ + "#4287-meeks-chiropractic", + "job_id:yf1usxwih9qqfux", + "prism_job" + ], + "tasks": [], + "title": "#4287 - Meeks Chiropractic", + "updated": "2026-03-20 00:31:41.099Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Overall Scope Detail :

 

Contact Information:

Project Platform

 Project Sight

****Project Start Date: 3/12 on interior

Scope of Work:

 

Steel framing

Zip Sheathing

Suspended Grid Gyp.

Danback blocking

Treated sleepers for stage

Advantech 3/4\"

Weather Barrier

Hollow Metal Door Frames

Fiberglass Batt. Insulation

Drywall

Suspended Acoustical Ceilings (2x2 Rockfon Artic w/ 6\" trim)

Acoustical Pads on wall

 

 

", + "created": "2026-03-06 16:14:21.471Z", + "deletedAt": "", + "id": "ah0sv025c4riohg", + "isPrivate": false, + "key": "4150-mt-vernon-performing-arts-center", + "tags": [ + "#4150-mt-vernon-performing-arts-center", + "job_id:lxtobp7liz4s3vi", + "Est.Steve Brewer", + "Rep.Regina McClain", + "PM.", + "Client.Veregy", + "Prism" + ], + "tasks": [], + "title": "#4150 - Mt Vernon Performing Arts Center", + "updated": "2026-03-20 00:31:41.281Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Bidding for multiple GCs. Bid due date listed is the earliest across companies.
Bidding for: Nabholz, Ross, Base, and Cornerstone.

Nabholz Bid description and details:
Nabholz Construction is requesting subcontractor and material proposals for the Ozark Fire Protection District New Training Annex & Maintenance Facility. The project consists of a 13,848 SFT Pre-Engineered Metal Building located at 911 North 9th Street, Ozark, MO 65721.
Attention to bidders is particularly called to the following requirements:
· This project is prevailing wage. Please follow Annual Wage Order 32 for Christian County.
· This project is tax exempt. Please exclude sales tax from your proposal.
· This project requires two alternate prices. Please refer to 012300 for a full description.
1. Alternate 1 – Training Area Interior Infill
2. Alternate 2 – Exposed Fastener Exterior Metal Wall Panel
· This project requires twelve-unit prices. Please refer to 012200 for a full description.

Project Description: The project consists of the following scopes of work: concrete, steel, carpentry, waterproofing, doors, frames, hardware, overhead doors, glazing, drywall, flooring, epoxy flooring, painting, signage, wall protection, toilet accessories, fire extinguishers, window shades, pre-engineered metal buildings, fire suppression, plumbing, HVAC, electrical, communications, access controls, security, fire alarm, earthwork, and utilities.

Pre-Bid Meeting: will be held Thursday, February 26th, 2026 at 11:00 AM located at 604 North 3rd Street, Ozark, MO 65721.

Bid Date: Bids are due March 12th, 2026, at 2:00 PM. Bids may be emailed to Jarrett Sims at jarrett.sims@nabholz.com.
Please contact Jarrett Sims at 417-402-9693 if you have any questions.

Use sales email to search for job name and find POC depending on client

", + "created": "2026-03-06 19:12:55.438Z", + "deletedAt": "", + "id": "bpvl5sbyak44dya", + "isPrivate": false, + "key": "4829-ozark-fire-protection-district-new-training-maintenance-facility", + "tags": [ + "#4829-ozark-fire-protection-district-new-training-maintenance-facility", + "job_id:lphdba763bhkav3", + "prism_job" + ], + "tasks": [], + "title": "#4829 - Ozark Fire Protection District New Training & Maintenance Facility", + "updated": "2026-03-20 00:31:41.484Z", + "user": "fdve3i2gop4huym" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-06 20:29:52.804Z", + "deletedAt": "", + "id": "zrpf1wlanzpfltn", + "isPrivate": false, + "key": "test-note", + "tags": [ + "#test-note", + "__note_policy_handoff__" + ], + "tasks": [], + "title": "Test Note", + "updated": "2026-03-23 22:37:41.245Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4222: Love

CO: finishes vary from room to room. See voxer

", + "created": "2026-03-06 21:28:39.003Z", + "deletedAt": "", + "id": "co55bm5mxkdjtwi", + "isPrivate": false, + "key": "4222-love", + "tags": [ + "#4222-love", + "job_id:m0weg8p9kmpau6x", + "prism_job" + ], + "tasks": [], + "title": "#4222 - Love", + "updated": "2026-03-20 00:31:41.847Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4045: Nothum

2/24/26 CO: Updated wall plans emailed. Most of 3 walls in office now paneling & Bedroom #3 now has \"drywall w/trim paneling\". Everything else looks the same. Possibility the rooms showing tile are not tile all the way up and we are hanging most of those areas after all so may need to look into that if budget gets tight especially. CO Completed - BC

2/24/26 CO: Confirmed with Rex, level 4 behind wallpaper is sufficient - Dave CO completed for L5 deduct -BC

3/13 CO: hanging behind paneling. No drywall work was figured, but apparently we hung paneling walls. Also, Dave confirmed we hung bathrooms except for showers. CO completed BC

", + "created": "2026-03-06 22:24:54.715Z", + "deletedAt": "", + "id": "b16dsmemeubstqd", + "isPrivate": false, + "key": "4045-nothum", + "tags": [ + "#4045-nothum", + "job_id:02qhvwbyhhs5zyd", + "prism_job" + ], + "tasks": [], + "title": "#4045 - Nothum", + "updated": "2026-03-20 00:31:42.079Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

g

g

gg

g

g

g

g

g

g

g

g

g

g

g

g

g

g

g

g

g

", + "created": "2026-03-06 22:26:06.961Z", + "deletedAt": "", + "id": "rzcze7v149bu3u6", + "isPrivate": false, + "key": "mat", + "tags": [ + "#mat", + "child-of-zrpf1wlanzpfltn", + "taborder:2" + ], + "tasks": [], + "title": "Mat", + "updated": "2026-03-20 17:06:10.076Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4841: Andys Custard HQ - DD Budget

", + "created": "2026-03-07 00:27:10.824Z", + "deletedAt": "", + "id": "xcljwpoxsngift1", + "isPrivate": false, + "key": "4841-andys-custard-hq-dd-budget", + "tags": [ + "#4841-andys-custard-hq-dd-budget", + "job_id:uu6jzc4y9ump349", + "prism_job" + ], + "tasks": [], + "title": "#4841 - Andys Custard HQ - DD Budget", + "updated": "2026-03-20 00:31:42.407Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-07 00:52:44.389Z", + "deletedAt": "2026-03-20 23:23:29.069Z", + "id": "n3xnlo7tjm00khg", + "isPrivate": false, + "key": "plans", + "tags": [ + "#plans", + "child-of-bpvl5sbyak44dya" + ], + "tasks": [], + "title": "Plans", + "updated": "2026-03-20 23:23:28.939Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Potential change orders

They turned the doors upside down

They inverted windows

", + "created": "2026-03-09 14:58:30.885Z", + "deletedAt": "", + "id": "t6vuflkvybpbjjp", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-zrpf1wlanzpfltn", + "taborder:0" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:42.687Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4843: Garage

Sent Dave a verbal of $4700 to pass on for a rough number

", + "created": "2026-03-10 16:45:48.242Z", + "deletedAt": "", + "id": "1k3w30czzvqrdsp", + "isPrivate": false, + "key": "4843-garage", + "tags": [ + "#4843-garage", + "job_id:sj8bjn5p292rl1r", + "prism_job" + ], + "tasks": [], + "title": "#4843 - Garage", + "updated": "2026-03-20 00:31:42.839Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-10 20:37:25.911Z", + "deletedAt": "", + "id": "0p14wk1hgrq5fzn", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-b16dsmemeubstqd" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:42.991Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-10 20:37:38.746Z", + "deletedAt": "", + "id": "wktfxxfcy45g4tl", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-b16dsmemeubstqd" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:43.143Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Make sure tectum goes on prior to MEP

", + "created": "2026-03-10 22:46:40.620Z", + "deletedAt": "", + "id": "l4zml17cewqnq89", + "isPrivate": false, + "key": "acoustical-install-notes", + "tags": [ + "#acoustical-install-notes", + "child-of-xcljwpoxsngift1", + "taborder:0" + ], + "tasks": [], + "title": "Acoustical Install Notes", + "updated": "2026-03-20 00:31:43.307Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Estimating Notes

Ext Walls

24 OC framing (int) (Ext use 16 OC)

Wording Notes

Adds/Price Notes

Labor Rates

1610 & 1620 N Le Compte Rd, Springfield, MO, 65802

", + "created": "2026-03-10 23:43:54.214Z", + "deletedAt": "", + "id": "v841a7y1xpbgxe3", + "isPrivate": false, + "key": "estimating-notes", + "tags": [ + "#estimating-notes", + "child-of-xcljwpoxsngift1", + "taborder:1" + ], + "tasks": [], + "title": "Estimating Notes", + "updated": "2026-03-20 23:23:52.292Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

-duplicate long studs on building 758 (6\")

-remove 10ft 6\" studs from next ticket

-from dan info, adjust 11ft studs, also short for any short studs we may bring

-adjust for RC1

-confirm insulation for high walls (possibly 2 weeks out for needing insulation)

  1. figure out what we really need on the job

  2. figure out what has really been delivered

-how long studs above and below windows and doors

", + "created": "2026-03-11 16:37:58.094Z", + "deletedAt": "", + "id": "cjmy8zsb0x9ufn5", + "isPrivate": false, + "key": "contract", + "tags": [ + "#contract", + "child-of-qnotrhp9ibvicu2", + "taborder:0" + ], + "tasks": [], + "title": "Contract", + "updated": "2026-03-20 00:31:43.783Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4753: Ceiling

", + "created": "2026-03-11 17:29:33.661Z", + "deletedAt": "", + "id": "8jukh24j76z4mrg", + "isPrivate": false, + "key": "4753-ceiling", + "tags": [ + "#4753-ceiling", + "job_id:zfa3zymu5sqitnj", + "prism_job" + ], + "tasks": [], + "title": "#4753 - Ceiling", + "updated": "2026-03-20 00:31:43.939Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-11 17:29:36.649Z", + "deletedAt": "", + "id": "p5gp74ne3ck7nf7", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-8jukh24j76z4mrg" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:44.095Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-11 17:29:38.588Z", + "deletedAt": "", + "id": "hn9x5bqj17lyh7h", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-8jukh24j76z4mrg" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:44.246Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-11 17:29:39.136Z", + "deletedAt": "", + "id": "rv57rwn5mlrnwg4", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-8jukh24j76z4mrg" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:44.391Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-11 17:29:39.364Z", + "deletedAt": "", + "id": "o31grudhkjq783z", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-8jukh24j76z4mrg" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:44.535Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-11 17:29:41.609Z", + "deletedAt": "", + "id": "192lwm5boeqa2h2", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-8jukh24j76z4mrg" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:44.682Z", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4648:

possible CO: 100 feet of wrapped beams not in plans

", + "created": "2026-03-11 20:36:17.721Z", + "deletedAt": "", + "id": "8n1mdvztubx2jtn", + "isPrivate": false, + "key": "4648", + "tags": [ + "#4648", + "job_id:9ow671ppw43l75a", + "prism_job" + ], + "tasks": [], + "title": "#4648 - ", + "updated": "2026-03-20 00:31:44.839Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4649:

possible CO: 100 feet of wrapped beams not in plans

", + "created": "2026-03-11 20:37:06.475Z", + "deletedAt": "", + "id": "gsly0gfom2egpaj", + "isPrivate": false, + "key": "4649", + "tags": [ + "#4649", + "job_id:4c7g0ecqf8hr2hj", + "prism_job" + ], + "tasks": [], + "title": "#4649 - ", + "updated": "2026-03-20 00:31:45.011Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-11 22:11:17.950Z", + "deletedAt": "", + "id": "bqnpkukk3xji0x8", + "isPrivate": true, + "key": "estimaker", + "tags": [ + "#estimaker" + ], + "tasks": [], + "title": "Estimaker", + "updated": "2026-03-20 22:36:03.618Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4835: Kickapoo ceilings

Removal of Tile and Replace for HVAC

", + "created": "2026-03-12 16:58:57.416Z", + "deletedAt": "", + "id": "3vueccgfqu6nmc2", + "isPrivate": false, + "key": "4835-kickapoo-ceilings", + "tags": [ + "#4835-kickapoo-ceilings", + "job_id:s1ip8t4zaajii3l", + "prism_job" + ], + "tasks": [], + "title": "#4835 - Kickapoo ceilings", + "updated": "2026-03-20 00:31:45.347Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-12 20:03:41.276Z", + "deletedAt": "", + "id": "vl5aepn4eiw6slz", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-xcljwpoxsngift1" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:45.503Z", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-12 20:04:52.676Z", + "deletedAt": "", + "id": "lzaynkrc5kb76o9", + "isPrivate": false, + "key": "co", + "tags": [ + "#co", + "child-of-zrpf1wlanzpfltn", + "taborder:1" + ], + "tasks": [], + "title": "CO", + "updated": "2026-03-20 18:04:30.525Z", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4846: Heritage Coryell Office

", + "created": "2026-03-13 14:24:03.729Z", + "deletedAt": "", + "id": "2ur7d3nm0bvt7iy", + "isPrivate": false, + "key": "4846-heritage-coryell-office", + "tags": [ + "#4846-heritage-coryell-office", + "job_id:ehbvq75v5l3w10i", + "prism_job" + ], + "tasks": [], + "title": "#4846 - Heritage Coryell Office", + "updated": "2026-03-20 00:31:45.795Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4263: Woodring

Confirm everything was included in takeoff that should have been. Stock footage seems high.

", + "created": "2026-03-13 14:38:10.120Z", + "deletedAt": "", + "id": "h66xvegugjuzt62", + "isPrivate": false, + "key": "4263-woodring", + "tags": [ + "#4263-woodring", + "job_id:3wel1lelo2yecae", + "prism_job" + ], + "tasks": [], + "title": "#4263 - Woodring", + "updated": "2026-03-20 00:31:45.939Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4850: Intercounty Electric Rolla

", + "created": "2026-03-16 20:58:53.009Z", + "deletedAt": "", + "id": "4hfqo8k4hdeixxh", + "isPrivate": false, + "key": "4850-intercounty-electric-rolla", + "tags": [ + "#4850-intercounty-electric-rolla", + "job_id:utzuu7dy74paqcn", + "prism_job" + ], + "tasks": [], + "title": "#4850 - Intercounty Electric Rolla", + "updated": "2026-03-23 22:36:32.815Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Prevailing Wage?
Taxable?

ITB Notes

The scope of work includes: 

Project Plans are available to view/download using the following link: ​​Intercounty Rolla MO_Final Drawings_02-26-26.pdf​​.

Please include the following in your bid: 

All bids are due by 5:00pm on March 18, 2026

Please send all proposals to everyone below: 

    Austin Kelly, Assistant Project Manager

    Nathan Scribner, Assistant Project Manager

    Josh Seibert, Project Manager

", + "created": "2026-03-16 20:59:09.379Z", + "deletedAt": "", + "id": "pnauetnkkz7nqqc", + "isPrivate": false, + "key": "estimating-notes", + "tags": [ + "#estimating-notes", + "child-of-4hfqo8k4hdeixxh" + ], + "tasks": [], + "title": "Estimating Notes", + "updated": "2026-03-20 00:31:46.246Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-16 23:47:35.554Z", + "deletedAt": "2026-03-18 23:38:06.109Z", + "id": "u0om2mdxmzrzqua", + "isPrivate": false, + "key": "new-note", + "tags": [ + "#new-note" + ], + "tasks": [], + "title": "New Note", + "updated": "2026-03-20 00:31:46.406Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-16 23:47:46.985Z", + "deletedAt": "", + "id": "10br7e968zt1quu", + "isPrivate": true, + "key": "general-coding", + "tags": [ + "#general-coding" + ], + "tasks": [], + "title": "General Coding", + "updated": "2026-03-20 00:31:46.550Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [ + "ci_template_oe5a2y8m6i.yaml" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Below is an, end‑to‑end record you can reuse for the next app. It includes required file changes, CI changes, server setup, verification, and expected outputs.

1) Repo changes (local)

Files to edit:

- C:\\Users\\TimothyCardoza\\Documents\\AI-Apps\\EstiMaker\\item-extractor-solid\\package.json

Add a serve script and dependency:

```json

\"scripts\": {

\"dev\": \"vite\",

\"build\": \"tsc -b && vite build\",

\"preview\": \"vite preview\",

\"serve\": \"serve -s dist -l tcp://0.0.0.0:$PORT\"

}

```

Dependency:

```json

\"dependencies\": {

\"serve\": \"^14.2.6\"

}

```

Command to add dependency:

```

bun add serve

```

Verification:

```

bun run serve

```

Expected behavior: serves dist/ on the port defined by PORT env var.

---

2) CI workflow changes (Gitea Actions)

File:

C:\\Users\\TimothyCardoza\\Documents\\AI-Apps\\EstiMaker\\item-extractor-solid\\.gitea\\workflows\\ci.yaml

Key requirements:

- Build output is dist/ (Vite).

- Deploy dist/, package.json, and bun.lock or bun.lockb.

- Install production deps on server.

- Restart PM2 with PORT set.

Baseline working pattern:

```yaml

env:

DEPLOY_HOST: \"10.10.1.82\"

APP_PORT: \"4100\"

DEPLOY_PATH: \"/var/www/<APP_NAME>\"

# build job uses bun to run bun run build

# deploy job:

- rsync deploy/ -> /var/www/<APP_NAME>/

- SSH: bun install --production

- SSH: export PORT=<APP_PORT> and restart PM2

```

---

3) Server setup (one‑time per app)

On the server:

```

mkdir -p /var/www/<APP_NAME>

```

Start PM2 for first time:

```

cd /var/www/<APP_NAME>

PORT=<APP_PORT> pm2 start \"bun run serve\" --name <APP_NAME>

pm2 save

```

---

4) Deployment (from CI)

CI should copy these to /var/www/<APP_NAME>:

- dist/

- package.json

- bun.lock (or bun.lockb)

Then on the server:

```

cd /var/www/<APP_NAME>

bun install --production

PORT=<APP_PORT> pm2 restart <APP_NAME> --update-env

```

---

5) Verification steps

1) Verify PM2 is running the right command and CWD:

```

pm2 show <APP_NAME>

```

Expected:

- script args contains -c bun run serve

- exec cwd is /var/www/<APP_NAME>

2) Verify environment and port:

```

pm2 env <ID> | grep PORT

```

Expected:

```

PORT: <APP_PORT>

```

3) Verify serve is listening on correct interface:

```

pm2 logs <APP_NAME> --lines 20

```

Expected:

```

Accepting connections at http://0.0.0.0:<APP_PORT>

```

4) Verify deployment files:

```

ls -la /var/www/<APP_NAME>

ls -la /var/www/<APP_NAME>/dist | head -20

```

Expected: dist/ updated with current timestamps.

5) Verify connectivity from a client:

```

curl -I http://<SERVER_IP>:<APP_PORT>

```

Expected: HTTP/1.1 200 OK or a valid response.

---

6) Common failure causes and fixes

- Log shows Accepting connections at http://localhost:xxxxx

Fix: ensure serve -s dist -l tcp://0.0.0.0:$PORT is in package.json.

- PORT still old after restart

Fix:

```

PORT=<APP_PORT> pm2 restart <APP_NAME> --update-env

```

- CI deploy “succeeds” but app unchanged

Fix:

- Confirm CI copies dist/ into /var/www/<APP_NAME>.

- Confirm PM2 CWD is /var/www/<APP_NAME>.

- Confirm dist/ timestamps update.

- Access works on server but not externally

Fix: open firewall for <APP_PORT> or update reverse proxy.

---

If you want, I can generate a reusable ci.yaml template and a short “new app checklist” you can copy/paste with placeholders for app name, port, and path.

AttachmentView File

", + "created": "2026-03-16 23:48:08.178Z", + "deletedAt": "", + "id": "72skntmhl1zhlrc", + "isPrivate": true, + "key": "ci-for-solid-js-apps", + "tags": [ + "#ci-for-solid-js-apps", + "child-of-10br7e968zt1quu" + ], + "tasks": [], + "title": "CI for Solid.js Apps", + "updated": "2026-03-20 00:31:46.699Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [ + "a801_reflected_ceiling_plan_0zyubyshig.pdf", + "a101_floor_plan_weysfqpe6r.pdf", + "a101_floor_plan_rn5trf3l0d.pdf" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "
AttachmentView File
AttachmentView File
AttachmentView File

", + "created": "2026-03-17 14:02:13.131Z", + "deletedAt": "", + "id": "oackngl3ndp47uc", + "isPrivate": false, + "key": "drawings", + "tags": [ + "#drawings", + "child-of-ah0sv025c4riohg", + "taborder:2" + ], + "tasks": [], + "title": "Drawings", + "updated": "2026-03-20 00:31:46.839Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [ + "4150_estimate_zyb571u5bn.pdf" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "
AttachmentView File

", + "created": "2026-03-17 14:02:28.823Z", + "deletedAt": "", + "id": "kfus6axx2ptni4t", + "isPrivate": false, + "key": "estimate", + "tags": [ + "#estimate", + "child-of-ah0sv025c4riohg", + "taborder:1" + ], + "tasks": [], + "title": "Estimate", + "updated": "2026-03-20 00:31:46.979Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [ + "cardoza_mt_vernon_r_v_sd_ph_3berjt8wok.028-2_encrypted_.pdf" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "
AttachmentView File

", + "created": "2026-03-17 14:02:38.487Z", + "deletedAt": "", + "id": "opq68qm5rorkwjs", + "isPrivate": false, + "key": "contract", + "tags": [ + "#contract", + "child-of-ah0sv025c4riohg", + "taborder:0" + ], + "tasks": [], + "title": "Contract", + "updated": "2026-03-20 00:31:47.114Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [ + "mtv_prelim_const_schedule_pdf_ga91ueaf3r.pdf" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "
AttachmentView File

", + "created": "2026-03-17 14:03:23.027Z", + "deletedAt": "", + "id": "le8kbvhxldynga2", + "isPrivate": false, + "key": "schedule", + "tags": [ + "#schedule", + "child-of-ah0sv025c4riohg", + "taborder:3" + ], + "tasks": [], + "title": "Schedule", + "updated": "2026-03-20 00:31:47.263Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [ + "image_yulhefij9z.webp", + "image_odpxog428y.webp" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

MARCH 9, 2026

MARCH 9, 2026

", + "created": "2026-03-17 19:07:32.792Z", + "deletedAt": "", + "id": "len231ymi0gd3r2", + "isPrivate": false, + "key": "photos", + "tags": [ + "#photos", + "child-of-ah0sv025c4riohg", + "taborder:4" + ], + "tasks": [], + "title": "Photos", + "updated": "2026-03-20 00:31:47.419Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [ + "image_j1klxlt121.webp", + "image_cttfxevw5d.webp", + "image_utedor8bz6.webp", + "image_wh6ux05qvz.webp" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

FEB 24, 2026

Intro email sent to Phillip Rogers

FEB 24, 2026

Reached out to Ben Jennings and John Miller from RTM to get ship drawings for submittals

FEB 25, 2026

Question asked by RTM if shops are needed for interior or exterior or both. Follow up with Timothy on estimate — need to know how to read

FEB 25, 2026

Competent person form needs to be filled out prior to being on site. Current on-site date is March 5th, there are some delays on the project, and we might be looking at the 9th.

FEB 27, 2026

Contract states that substantial completion date is 06/29/2026 // contract states that we have 10 days to submit costs for changes, 10% markup is allowed for overhead and profit, Project is Tax Exempt // Prevailing Wage is under Wage order 31

MAR 3, 2026

Start date for interior framing is 3/12

MAR 4, 2026

Still need Miguel to sign the competent person form. Also need to figure out what we need for the EHS plan

MAR 6, 2026

Follow up on the correspondence with Phillip and Chip over the cloud insulation

MAR 9, 2026

Follow up email sent to RTM asking the status of the shop drawings needed for submittals

MAR 9, 2026

Shop drawings received from RTM

MAR 10, 2026

Pay application is complete and submitted to apcentral@veregy.com

MAR 10, 2026

Confirmed with Bill from wildcat that material will be on site 3/16

MAR 10, 2026

We are able to work Saturdays — Veregy will not pay overtime

MAR 16, 2026

Day 1 on site, Rick and I delivered the equipment needed, site guys not on site due to weather

MAR 17, 2026

Day 2, guys not on site due to weather, anticipated start date of tomorrow 3/18

MAR 17, 2026

This did not make it into the construction drawing set, but this is the layout for the band room ceiling. The highlighted strips will be open to allow sound to pass through.

", + "created": "2026-03-17 19:13:06.968Z", + "deletedAt": "", + "id": "9hidpoanxjyfomp", + "isPrivate": false, + "key": "notes", + "tags": [ + "#notes", + "child-of-ah0sv025c4riohg", + "taborder:5", + "__nc23vrshrg0qtdi_favorite__" + ], + "tasks": [], + "title": "Notes", + "updated": "2026-03-20 00:31:47.558Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-17 20:27:34.189Z", + "deletedAt": "", + "id": "shjpmpacyzxtj1b", + "isPrivate": false, + "key": "estimate", + "tags": [ + "#estimate", + "child-of-qnotrhp9ibvicu2", + "taborder:1" + ], + "tasks": [], + "title": "Estimate", + "updated": "2026-03-20 00:31:47.699Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-17 20:27:52.584Z", + "deletedAt": "", + "id": "eganmofr0aqzd0m", + "isPrivate": false, + "key": "drawings", + "tags": [ + "#drawings", + "child-of-qnotrhp9ibvicu2", + "taborder:2" + ], + "tasks": [], + "title": "Drawings", + "updated": "2026-03-20 00:31:47.843Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-17 20:27:59.639Z", + "deletedAt": "", + "id": "q5pms6o9vsztm72", + "isPrivate": false, + "key": "photos", + "tags": [ + "#photos", + "child-of-qnotrhp9ibvicu2", + "taborder:4" + ], + "tasks": [], + "title": "Photos", + "updated": "2026-03-20 00:31:47.986Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "", + "created": "2026-03-17 20:38:02.879Z", + "deletedAt": "", + "id": "v6ifl804ugfp2eg", + "isPrivate": false, + "key": "schedule", + "tags": [ + "#schedule", + "child-of-qnotrhp9ibvicu2", + "taborder:3" + ], + "tasks": [], + "title": "Schedule", + "updated": "2026-03-20 00:31:48.134Z", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4656: Northfork River Ranch House

This was brought to us by: Mourick, Travis and originally set up him as client. I believe he came through Ed Cardoza. But the actual homeowner is the one who is going to pay the bill/is the actual client.

", + "created": "2026-03-18 16:31:20.892Z", + "deletedAt": "", + "id": "lxf9q1oxnn0iq6n", + "isPrivate": false, + "key": "4656-northfork-river-ranch-house", + "tags": [ + "#4656-northfork-river-ranch-house", + "job_id:bs6qny1xy4la1q3", + "prism_job" + ], + "tasks": [], + "title": "#4656 - Northfork River Ranch House", + "updated": "2026-03-20 00:31:48.287Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

", + "created": "2026-03-18 19:19:30.528Z", + "deletedAt": "2026-03-18 19:19:47.157Z", + "id": "2xlrgl7e3motquo", + "isPrivate": false, + "key": "new-tab", + "tags": [ + "#new-tab", + "child-of-4hfqo8k4hdeixxh" + ], + "tasks": [], + "title": "New Tab", + "updated": "2026-03-20 00:31:48.423Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 3778: Reller

Basement plans are not correct. Asking for updated plans.

", + "created": "2026-03-18 20:20:08.114Z", + "deletedAt": "", + "id": "nx9wvl55pwrsczf", + "isPrivate": false, + "key": "3778-reller", + "tags": [ + "#3778-reller", + "job_id:mfebk0gg2jcuiyw", + "prism_job" + ], + "tasks": [], + "title": "#3778 - Reller", + "updated": "2026-03-20 00:31:48.567Z", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [ + "elec_comp_113_mdp_box_out_2rb72cbqno.pdf" + ], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "
AttachmentView File

", + "created": "2026-03-18 22:03:44.716Z", + "deletedAt": "", + "id": "arkby4bt69xmlcg", + "isPrivate": false, + "key": "changes", + "tags": [ + "#changes", + "child-of-7zj5jikjdski8vc" + ], + "tasks": [], + "title": "Changes", + "updated": "2026-03-20 00:31:48.715Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

tset

", + "created": "2026-03-18 23:16:27.428Z", + "deletedAt": "2026-03-18 23:21:48.185Z", + "id": "isxzzy07dbqiw5t", + "isPrivate": false, + "key": "new-note", + "tags": [ + "#new-note" + ], + "tasks": [], + "title": "New Note", + "updated": "2026-03-20 00:31:48.863Z", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Other


All:

Current Prompt:

I get this in the console every minute. Can you tell me why and maybe fix it? It seems benign but it's getting a little annoying to have them build up and it would be nice to know what is actually causing them.

Conole Item:

realtime:1 GET https://pocketbase.ccllc.pro/api/realtime net::ERR_QUIC_PROTOCOL_ERROR 200 (OK)

Prism Prompt:

When a note is created for a job using the tasgrid sdk. Also create the following child notes:
- Contract
- Estimate and Scopes
- Plans and Drawings
- Schedule
- Pictures

Notes can be children of other notes simply by adding the tag \"child-of-[parent-note-ID]\" to the note.

Code Cleanup (put whole flattened codebase in context)

Let's carefully improve the structure of this codebase to improve future AI assisted development. Review this flattened repo and provide the following:

", + "created": "2026-03-20 17:03:44.417Z", + "deletedAt": "2026-03-20 20:21:19.853Z", + "id": "ra85l82akperujr", + "isPrivate": true, + "key": "tasgrid-backup", + "tags": [], + "tasks": [], + "title": "Tasgrid Backup", + "updated": "2026-03-20 20:21:19.672Z", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_302699226", + "collectionName": "TasGrid_Notes", + "content": "

Notes for Job 4845: Pythian St Ceilings Colin

", + "created": "2026-03-20 20:33:03.302Z", + "deletedAt": "", + "id": "luppfbt04v2wpag", + "isPrivate": false, + "key": "", + "tags": [ + "job_id:vcdyimj5efgg498", + "prism_job" + ], + "tasks": [], + "title": "#4845 - Pythian St Ceilings Colin", + "updated": "2026-03-20 22:35:10.878Z", + "user": "sivbh2pwzyew5lb" + } +] \ No newline at end of file diff --git a/migration-output/context-ownership-2026-03-24T22-58-27-823Z/tasks.json b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/tasks.json new file mode 100644 index 0000000..d4ed304 --- /dev/null +++ b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/tasks.json @@ -0,0 +1,9709 @@ +[ + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Door Stops --CO (Full review without doorstops completed with Rick 1/15/26)

Door stops: $50/door stop (including $10 materials) --13

Add 2 more doors (Credit them two closers)

--add to consider--

Working Base for unlevel floor

Plywood around tvs

", + "created": "2026-01-30 21:44:42.630Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-03 21:44:00.000Z", + "id": "kdz3brscd1yhe92", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-30 21:44:43.749Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4310 Central Assembly CO", + "updated": "2026-03-20 00:31:49.582Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

From Heidi - 55 hrs Hang and Grid

", + "created": "2026-01-31 00:03:38.365Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-03 03:08:00.000Z", + "id": "8fujovkyzf7cmg4", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:03:39.514Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4758 Taco Bell/KFC T&M - See Notes", + "updated": "2026-03-20 00:31:49.739Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Talk to Heidi

Everything after a certain date except 4 hours of drywall repair around the doors needs to be included in CO. Make sure worker time was separated properly. Get more info See: 1/13 10am Vox from Rick

West Hall wall repair, hours for doors...

", + "created": "2026-01-31 00:05:02.898Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-02 11:05:00.000Z", + "id": "oaypxqcfodbjtnt", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:05:04.038Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4323 Prayer Center CO", + "updated": "2026-03-20 00:31:50.051Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-01-31 00:06:29.819Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-06 00:06:00.000Z", + "id": "z3g550zmrk2f6z7", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:06:30.982Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4795 Pizza Hut Lebanon - Estimate (Email that we will not bid)", + "updated": "2026-03-20 00:31:50.346Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Track any other T&M, if it adds up to 2-3 hours, send the CO

", + "created": "2026-01-31 00:12:07.423Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-25 09:04:33.624Z", + "id": "9w8uxmudgpyqazl", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:12:08.579Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4315 Friga T&M CO", + "updated": "2026-03-23 21:04:33.834Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Create CO template for CO tasks with this as a checklist item

", + "created": "2026-01-31 00:15:30.931Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-04-02 23:39:33.626Z", + "id": "gjmmf96wztqwumb", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:15:32.062Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "If bid is awarded, mark on memo", + "updated": "2026-03-23 23:39:59.899Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-01-31 00:16:49.054Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-14 00:16:00.000Z", + "id": "2jdou8acxae8of0", + "labelTags": [], + "noteRefs": [], + "priority": 4, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:16:50.216Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "St Elizabeth Punch Item (Confirm finished and mark on Procore)", + "updated": "2026-03-20 00:31:50.776Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-01-31 00:18:53.860Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-10 00:18:00.000Z", + "id": "i25724hokupv1xr", + "labelTags": [], + "noteRefs": [], + "priority": 4, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 00:18:55.015Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Silver Dollar City Resort - Estimate", + "updated": "2026-03-20 00:31:50.922Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-01-31 17:50:47.429Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-02 17:50:00.000Z", + "id": "dffj5f1eiq6b54z", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 17:50:47.348Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Change fastener price from 1 cent to 1.5 on drywall only", + "updated": "2026-03-20 00:31:51.038Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-01-31 17:51:25.071Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-19 23:03:52.521Z", + "id": "0nyzft1qlnwflvr", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 17:51:25.008Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Get forwarding to my personal phone", + "updated": "2026-03-20 00:31:51.186Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-01-31 20:09:30.624Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-09 23:03:52.521Z", + "id": "mv058m7pvgnde73", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 20:09:30.562Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Get printer scanning setup nicely", + "updated": "2026-03-20 00:31:51.335Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-01-31 22:20:25.099Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-02 09:21:00.000Z", + "id": "3pdqyp4otibscvu", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 22:20:25.000Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Check that CU Friga \"Phase 2\" CO was completed and billed", + "updated": "2026-03-20 00:31:51.763Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Mark it somewhere shared.

Define the different states.

QB?? TasGrid??

", + "created": "2026-01-31 22:41:03.760Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-23 23:05:35.460Z", + "id": "1addkfu38r8xvrr", + "labelTags": [], + "noteRefs": [], + "priority": 4, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 22:41:03.640Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Consider CO tracking system", + "updated": "2026-03-20 00:31:51.906Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Bring up to Zeek to include in Prism? Probably.

", + "created": "2026-01-31 22:44:42.233Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-05 11:33:00.000Z", + "id": "sp56zljg04g3bm3", + "labelTags": [], + "noteRefs": [], + "priority": 2, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-01-31 22:44:42.010Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Labor resource list. Dad asking for a good way to track it.", + "updated": "2026-03-20 00:31:52.034Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-01 22:52:18.266Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-08 13:39:29.000Z", + "id": "sa2327wzdwjsmaz", + "labelTags": [], + "noteRefs": [], + "priority": 4, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-01 22:52:18.000Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "things to do", + "updated": "2026-03-20 00:31:52.174Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-02 16:21:31.082Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-03 17:42:48.860Z", + "id": "o6xzgvtzh333jxs", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-02 16:21:31.554Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Review and Mark Up Camp Crowder Contracts", + "updated": "2026-03-20 00:31:52.327Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-02 22:40:59.022Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-12 22:40:00.000Z", + "id": "25lrq2zepqk5nfi", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-02 22:40:59.602Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Catch transitional CO (take over process to confirm and document approval)", + "updated": "2026-03-20 00:31:52.471Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-02 23:22:57.963Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-07 23:41:05.129Z", + "id": "rp8actu0zy8imhe", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-02 23:22:58.612Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Get dad on Tasgrid", + "updated": "2026-03-20 00:31:52.610Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

T&M get from Heidi to Alfonzo



--notes--

6 classrooms and 1 elevator mech room TOTAL

3 on the west side all 4 walls

3 on the east, 2 walls

Mech room we don't know (+ add door to dead space)

Estimated time is less than 40

", + "created": "2026-02-03 17:15:51.298Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-13 09:32:50.864Z", + "id": "w6vdppsvauy6bbb", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-02-03 17:15:51.220Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4803 - JRC South Early Childhood", + "updated": "2026-03-20 00:31:53.035Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Notes:

", + "created": "2026-02-03 21:26:42.728Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-04 09:25:00.000Z", + "id": "aof91ehxb4mvcs0", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-03 21:26:42.583Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4798 - Alpha Acquisition Victor Paulik - Estimate", + "updated": "2026-03-20 00:31:53.179Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Check to make sure all the jobs we have been working on actually have the correct information

List of Jobs checked/to check:

", + "created": "2026-02-04 14:11:21.205Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-01 22:48:46.029Z", + "id": "ih1a086a057lnbc", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-04 14:11:21.616Z", + "status": 10, + "tags": [ + "@Timothy Cardoza", + "@Ben Poland" + ], + "title": "Review commercial jobs on Prism", + "updated": "2026-03-20 00:31:53.335Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-04 15:41:47.012Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-27 21:13:38.253Z", + "id": "z6s8kfpek0wowmp", + "labelTags": [], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "mbx4fsykgq95ny3" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-04 15:41:47.165Z", + "status": 10, + "tags": [ + "@Timothy Cardoza", + "@Ben Poland", + "#4150-mt-vernon-performing-arts-center" + ], + "title": "4150 Performing Arts - Material Lengths to Bill Mabary - see email", + "updated": "2026-03-20 00:31:53.775Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Also ask about prayer center doors (2-3 doors)

No rush at all

", + "created": "2026-02-04 20:56:39.026Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-06 08:55:00.000Z", + "id": "7j1jltbyflj8fpn", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-04 20:56:39.179Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4310 Central Assembly - check door delivery schedule", + "updated": "2026-03-20 00:31:53.955Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-04 22:43:03.038Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-05 10:42:00.000Z", + "id": "53u5zedyqladkm2", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": { + "lastUncompleted": "2026-03-24T12:03:52.448Z", + "type": "daily" + }, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": [ + { + "access": "edit", + "userId": "ocx6cyn1q6lzabh" + } + ], + "size": 5, + "startDate": "2026-02-04 22:43:02.898Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Check Email", + "updated": "2026-03-24 12:03:52.464Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-05 19:24:54.096Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-06 21:30:49.768Z", + "id": "l8u74vvsdl12k2c", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-05 19:24:53.997Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Get Joel on Manager info - with Zeek", + "updated": "2026-03-20 00:31:54.259Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Credit extra tile to GC (we don't know how much)
Beth made a partial change order for the credit. Made in the original est.
2/3 Tile done by Craig. Create piece rate.

", + "created": "2026-02-05 21:45:19.839Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-07 09:44:00.000Z", + "id": "pr10xvwoppfl6qi", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-05 21:45:20.476Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4753 Web City (HANDED TO BETH)", + "updated": "2026-03-20 00:31:54.399Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-06 14:26:34.547Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-07 02:26:13.202Z", + "id": "tidw0qarfroqe1e", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-06 14:26:35.377Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Record Tasgrid Training Videos", + "updated": "2026-03-20 00:31:54.687Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Description

", + "created": "2026-02-06 16:23:16.859Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-06 18:22:00.000Z", + "id": "n7iwfypx3cj6amb", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-06 16:23:16.934Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Title of the task", + "updated": "2026-03-20 00:31:54.852Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-06 16:37:57.485Z", + "createdBy": "", + "deletedAt": "2026-03-20 22:40:56.610Z", + "dueDate": "2026-02-06 16:37:57.578Z", + "id": "kfgrrdion7sx0ux", + "labelTags": [], + "noteRefs": [], + "priority": 3, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-02-06 16:37:57.578Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "New Template", + "updated": "2026-03-20 22:40:56.512Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-06 21:36:23.619Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-09 16:00:00.000Z", + "id": "q0xuc76ypxctw5v", + "labelTags": [ + "delivery" + ], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-06 21:36:18.586Z", + "status": 10, + "tags": [ + "delivery", + "@Joel Snyder" + ], + "title": "deliver inpro and necessary equipment", + "updated": "2026-03-20 00:31:55.154Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-06 21:59:55.977Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-11 21:59:00.000Z", + "id": "h9z3gyz06ge57g7", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-06 21:59:56.832Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4019 St. Elizabeth Punch Items - Billing? Warrenty?", + "updated": "2026-03-20 00:31:55.299Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

To ensure software remains functional for a decade or more without manual intervention, development must shift from \"innovation-first\" to \"stability-first.\" These rules prioritize technologies with a proven track record of backward compatibility and independence from external vendors.

1. The Standard over the Framework

* Prioritize Web Standards: Build with vanilla HTML5, CSS3, and ECMAScript (JavaScript). Browsers prioritize backward compatibility for the \"open web\" more than any other platform.

* Avoid Build-Step Dependencies: If a tool requires a specific version of a compiler or bundler (like Vite, Webpack, or a specific CSS pre-processor) to run, it will eventually break when that compiler becomes obsolete.

* Use Server-Side Rendering (SSR): Deliver fully formed HTML to the client. This ensures that even if a future browser changes how it handles complex JavaScript, the core UI and data remain accessible.

2. The Isolation Rule

* No External CDNs: Never link to a hosted library (e.g., Google Fonts or a hosted version of jQuery). If the host changes the URL or shuts down, the tool breaks. Download all assets and serve them from the local server.

* Zero Third-Party APIs: If a core feature depends on a SaaS API (for messaging, maps, or auth), the tool has a shelf life. Use self-hosted equivalents (e.g., an internal MQTT broker for messaging or local Postgres for data).

* Pinned Containerization: Deploy every tool in a Docker container with \"pinned\" versions. Instead of using :latest, use :16.2.1-alpine. This freezes the entire OS environment, ensuring it stays identical for 10 years regardless of host updates.

3. Data Longevity

* Relational Database Supremacy: Use PostgreSQL. It is one of the most stable pieces of software ever written. Use strict schemas and foreign keys to ensure data integrity; \"messy\" data is a primary cause of software failure over time.

* Plain-Text Fallbacks: For critical logs or chat histories, ensure data is occasionally mirrored or exportable to CSV or JSON. These formats are human-readable and will be supported by every computing system in 2036.

* Single-Source-of-Truth Architecture: Avoid syncing data across multiple databases. Use a single, robust database with a modular schema so that the Job Tracker and Accounting tools are inherently linked at the database level rather than through fragile API \"glue.\"

4. Communication & Connectivity

* Standardized Realtime Protocols: For voice and messaging, use WebRTC and WebSockets. These are browser-native. Avoid proprietary SDKs that require regular updates to maintain \"handshakes\" with mobile operating systems.

* PWA over Native: Avoid the iOS App Store and Google Play Store. Native apps require constant updates to keep up with OS versions. A Progressive Web App (PWA) uses the browser as the wrapper, which is far more stable over long periods.

* Static Binaries: For backend logic, use languages that compile to a single static binary (like Go). A static binary contains everything it needs to run, making it immune to \"dependency hell\" or missing system libraries on the server.

5. Maintenance Philosophy

* The \"Boring Tech\" Requirement: Only use technology that has been in continuous, widespread use for at least five years. If it is \"trending,\" it is too risky for a ten-year horizon.

* Self-Documentation: Write the documentation into the code and the UI. Assume the person maintaining the tool in 10 years will have no context and no access to the original developer.

* Hardened Local Networking: Use static IPs or internal DNS for the Linux server. Do not rely on external cloud discovery services to connect phones to the server.

", + "created": "2026-02-07 00:02:08.611Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-19 23:29:27.909Z", + "id": "8wxf5imb4ydso86", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-07 00:02:08.614Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Use Tech Systems Stability Design", + "updated": "2026-03-20 00:31:55.590Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-09 18:41:54.678Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-10 06:40:00.000Z", + "id": "6kwj1op0vdtxo3j", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-09 18:41:55.426Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Confirm Prism Order is exactly per submittal 4315", + "updated": "2026-03-20 00:31:55.898Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-09 18:42:35.467Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-10 18:42:00.000Z", + "id": "vwd7yxnatp8t83e", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-09 18:42:36.228Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Finalize Correction Plan for Continuum 4315", + "updated": "2026-03-20 00:31:56.038Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-10 18:24:15.599Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-11 06:23:00.000Z", + "id": "7tzemetx8u5i6cv", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-10 18:24:16.564Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4118 Estes Trucking E200-5995 and 5994 clarity", + "updated": "2026-03-20 00:31:57.855Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-11 15:59:29.515Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-12 03:59:00.000Z", + "id": "pccmwghy4roxtl3", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": [], + "size": 10, + "startDate": "2026-02-11 15:59:29.000Z", + "status": 7, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Job info / Manager info (PRISM)", + "updated": "2026-03-20 00:31:58.031Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

put info on Tasgrid

", + "created": "2026-02-11 16:00:26.233Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-21 16:00:00.000Z", + "id": "ab62s8ieehgdzlm", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 10, + "startDate": "2026-02-11 16:00:26.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Islands of information / information poold", + "updated": "2026-03-20 00:31:58.223Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-11 16:00:44.648Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-21 16:00:00.000Z", + "id": "xc3yxhwic62j7x4", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 8, + "startDate": "2026-02-11 16:00:44.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Security and who has access to to what", + "updated": "2026-03-20 00:31:58.386Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-11 16:01:02.458Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-03-14 21:01:32.280Z", + "id": "9y9sfjgirrprkz2", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 8, + "startDate": "2026-02-11 16:01:02.000Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "improve Website", + "updated": "2026-03-20 00:31:58.574Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-11 16:05:49.486Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-08-10 16:05:00.000Z", + "id": "1cp3ekucot2o083", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-11 16:05:49.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Foundational values. Core values?", + "updated": "2026-03-20 00:31:58.870Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-11 16:06:12.111Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-08-10 16:05:00.000Z", + "id": "q57ov3oo2kx8j2h", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-11 16:06:11.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "general management note Rick’s inotes", + "updated": "2026-03-20 00:31:59.042Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

canceled

", + "created": "2026-02-11 16:06:30.136Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-08-10 16:06:00.000Z", + "id": "vk61eoffhl7viwj", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-11 16:06:30.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "JotForm", + "updated": "2026-03-20 00:31:59.207Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-11 16:07:24.704Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-05-12 16:06:00.000Z", + "id": "9ue0udw98vpt9va", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-11 16:07:24.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Vehicle tracker", + "updated": "2026-03-20 00:31:59.367Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-11 16:07:45.641Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-08-10 16:07:00.000Z", + "id": "2yhi3a7f4m81uqq", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 8, + "startDate": "2026-02-11 16:07:45.000Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "automatic rolling gate for Office look into", + "updated": "2026-03-20 00:31:59.535Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Regular wall - it was on the inside of the metal structure, they want it in between the metal structure.

", + "created": "2026-02-11 20:52:03.447Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-13 10:24:16.372Z", + "id": "lvo62yvd6wlh0ob", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-11 20:52:03.292Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "3981 SRC CO", + "updated": "2026-03-20 00:31:59.707Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-11 22:03:10.835Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-26 02:30:00.000Z", + "id": "8oo96lotwn067lf", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 9, + "startDate": "2026-02-11 22:03:10.676Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "solar issues", + "updated": "2026-03-20 00:31:59.866Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "{\"title\":\"XXXX - Name - Estimate\",\"urgency\":5,\"tags\":[\"Estimate\"],\"content\":\"

Job Vox Naming Template:

C#4815 job name - job address [client name contact name (if different and maybe their position) (###) ###-####]

Submit By:

\"}", + "created": "2026-02-12 15:39:46.021Z", + "createdBy": "", + "deletedAt": "", + "dueDate": "2026-02-12 15:39:46.205Z", + "id": "lcrl1cvljo0jw30", + "labelTags": null, + "noteRefs": null, + "priority": 7, + "recurrence": null, + "shareRefs": null, + "sharedWith": null, + "size": 0, + "startDate": "2026-02-12 15:39:46.205Z", + "status": 0, + "tags": [ + "__template__" + ], + "title": "New Job Estimate", + "updated": "2026-02-16 23:09:31.545Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

To Do:

Hosting:

AI Models:

General Purpose and Summarization:

Local Multi-Lingual Messaging Pipeline (2026 Spec)

1. Voice-to-Text (VTT): Whisper-v3-Turbo

2. Machine Translation (MT): NLLB-200-Distilled-1.3B

3. Text-to-Speech (TTS): Qwen3-TTS-0.6B

Execution Workflow

Voice to Voice translation:

  1. Ingestion: A voice message is recorded and passed to Whisper-v3-Turbo for transcription.

  2. Processing: * Spanish to English: Whisper.cpp uses the --translate flag to output English text directly.

  3. Synthesis: The translated text is sent to Qwen3-TTS, which generates the final audio file using the sender's stored voice profile.

Text to Voice (with translation):

  1. Ingestion: A text message is sent.

  2. Processing: * Spanish to English: Whisper.cpp uses the --translate flag to output English text directly.

  3. Synthesis: The translated text is sent to Qwen3-TTS, which generates the final audio file using the sender's stored voice profile.

Execution

The pipeline is triggered by incoming messages and routes them through the following logic, contingent on whether a user in the thread is marked as \"needing translation.\"

1. Transcription & Search (Standard)

2. Text-to-Audio Accessibility (Standard)

3. Voice-to-Translated-Voice (As Needed)

4. Text-to-Translated-Voice (As Needed)

Resource Management

​The system is designed to run on a server with at least 8GB of total RAM, with the following allocation for these specific services:

Architecture

Lets work on the app architecture.

This app should use a multi-tiered structure:
- Springs (high level grouping)
- Rivers (Job or topic level grouping)
- Streams (individual chats)
- Trenches (essentially like discord threads for sub-conversations)

Some specific preconfigured groups are:
- There should be a DM Spring (for direct user to user messaging)
- A Jobs Spring (for all job specific rivers)

UI

### The UI Refinement

Refine and modernize the UI for this communication app (RiverConnect) with a focus on professional consistency and 'Discord-meets-Linear' aesthetics. Please apply the following specific fixes:

* Sidebar Iconography: Replace the small blue icons next to 'Direct Messages' and 'Jobs' with modern, minimalist chevron or 'plus' icons. Ensure they are vertically centered with the text and have consistent padding.
* Header Actions: Update the search and settings icons in the top-right corner. Use a consistent SVG stroke weight (e.g., 1.5px or 2px) and ensure they are perfectly aligned within a subtle circular hover state.

* Channel Intro Text: Replace the 'This is the start of the #Stream channel.' text with more relevant text. Stream is the name of the layer of hierarchy not the name of THIS particular stream. And we aren't using \"#\" for anything.
* Global Styling: Implement a consistent *border-radius** (8px to 12px) across all UI elements.
* Adjust the typography scale to create a clearer distinction between channel names, user names, and timestamps.
* Ensure all voice note players have a uniform height and consistent padding within the chat stream.
* Maintain the dark theme but introduce subtle 'surface' colors (e.g., slightly lighter greys) to differentiate the sidebar from the main chat area.

* Visual Balance: The left sidebar feels a bit \"heavy\" compared to the right side. Adding a slight 1px border or a very subtle drop shadow to the sidebar can help create a sense of depth.

SPEC DOC CREATION PROMPT

Write me a spec document for an app for my company to use internally.

Here are the specifications I have:

Stack:

- Use Elixir, Phoenix Liveview, and a solid.js layer on the front (to prevent duplicate stores) - Unless you recommend just elixir as a backend and solid for the frontend.

- Use Supabase (or a direct connection to postgres)

Key features:

- Voxer-like audio recording/streaming messages. Record and playback by other users while recording or with a delay or days later.

- Text messaging

- Video and image sending

- PDF attachment sending

- A hierarchal chat system featuring 4 layers:

- - High level categories including \"DMs\", \"Job chats\", \"Office Chats\".

- - Chats including: various direct messages between users, all individual jobs, group chats.

- - Sub-chats for organizing conversations such as different topics within a job (these would be optional in that not all Chats need to have sub-chats)

- - \"Conversations\" or \"Threads\" which are collapsible groups of messages within a chat or sub-chat. Messages can be dynamically added to threads after the fact.

- 1x, 2x, 3x, and 4x playback speed for audio messages

UI:

- Shadcn baseline with light and dark mode

- Mobile and Desktop optimized

- Audio messages should have a playback/scrubbing bar that fits to the length of the audio message and can wrap to multi-line.

- Two-way transcription: Transcribe audio messages to text (and display a summary) and convert text messages to voice-cloned audio messages. (always transcribed and server side with company servers and ai models) use Whisper-v3-Turbo, NLLB-200-Distilled-1.3B (for translation to and from spanish for specific users), and Qwen3-TTS-0.6B as well as whatever general purpose LLM the company is already running.

- Simple modern shadcn inspired icons

", + "created": "2026-02-12 21:39:36.923Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-29 21:37:00.000Z", + "id": "u8nmxb12ooj8dyw", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 10, + "startDate": "2026-02-12 21:39:36.570Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Voxer-like | RiverTalk", + "updated": "2026-03-20 00:32:00.022Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Not yet confirmed and signed: Confirmed on Cintech system as a draft through email with Thomas. Awaiting appearance on our end of the system to prove submission.

", + "created": "2026-02-13 17:14:25.608Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-14 05:13:00.000Z", + "id": "pzwr4az1u2cjwep", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-02-13 17:14:25.411Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4118 Estes Trucking COs pending signitures", + "updated": "2026-03-20 00:32:00.250Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-13 20:39:21.699Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-23 20:36:00.000Z", + "id": "l8x2gmhc73yrzmv", + "labelTags": [ + "JTEC" + ], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-13 20:39:21.628Z", + "status": 7, + "tags": [ + "JTEC", + "@Joel Snyder" + ], + "title": "Remove film and clean Stainless Grid at JTEC ", + "updated": "2026-03-20 00:32:00.554Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

when InPro arrives needs to be scheduled ASAP

bottom of inpro where base trim will be installed needs to be 5 1/4\" off floor

", + "created": "2026-02-13 20:41:05.604Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-23 20:39:00.000Z", + "id": "1fcfbhfw95zedwm", + "labelTags": [ + "JTEC" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 10, + "startDate": "2026-02-13 20:41:05.559Z", + "status": 7, + "tags": [ + "JTEC", + "@Joel Snyder" + ], + "title": "Install InPro at JTEC", + "updated": "2026-03-20 00:32:00.699Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-13 21:35:05.248Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-19 12:03:53.370Z", + "id": "u520dkmt0da8wc0", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": { + "lastUncompleted": "2026-03-24T12:03:52.426Z", + "type": "daily" + }, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-13 21:35:05.067Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "ITB Tracking", + "updated": "2026-03-24 12:03:52.460Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Order Drywall

Screws

Drywall Cart

Trash Cart

", + "created": "2026-02-13 22:43:44.329Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-15 10:42:00.000Z", + "id": "258x39rwrfezwe0", + "labelTags": [ + "SRC" + ], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-13 22:43:44.174Z", + "status": 0, + "tags": [ + "SRC", + "@Joel Snyder" + ], + "title": "SRC Drywall Needs", + "updated": "2026-03-20 00:32:29.300Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Z Channel vs 2\" Hat Channel - Is it a CO?
SKIP

", + "created": "2026-02-16 15:41:53.881Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-18 03:40:00.000Z", + "id": "fuq2etljpvtioa1", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-16 15:41:54.561Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "3981 SRC CO potential", + "updated": "2026-03-20 00:32:29.596Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

RFI says to use framing

Job Vox Naming Template:

C#4815 job name - job address [client name contact name (if different and maybe their position) (###) ###-####]


Submit by: 2/24/26 at 12PM

", + "created": "2026-02-16 23:00:54.069Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-21 10:56:00.000Z", + "id": "p57gofk1fx44j11", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-16 23:00:54.751Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4818 - MSU Blair-Shannon Dining Center Renovation - Estimate", + "updated": "2026-03-20 00:32:30.320Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-17 14:53:17.906Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-18 02:52:00.000Z", + "id": "p3ll51yur19r3wu", + "labelTags": [ + "testing" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [], + "sharedWith": [], + "size": 5, + "startDate": "2026-02-17 14:53:18.000Z", + "status": 0, + "tags": [ + "testing" + ], + "title": "Bucket Testing", + "updated": "2026-03-20 00:32:30.611Z", + "updatedBy": "", + "user": "" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Email David to remind him to approve the subittal

Arm Wrestle David over 2\" insulation - price from Chip first

Waiting on submittal comment response. Ben commented changes from Chip and KJ conversation

A802 Change/Clarity Notes


Notes from Chip:

Chip talked to KJ about the cloud insulation And seismic stuff.

Submittals

Get them finalized and confirm that to Chip

MPS Coligo - long horizontal strip

MUR Wall - vertical sheet style - woodgrain

Change Order: (When Ready)

", + "created": "2026-02-17 16:37:36.989Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-26 09:14:38.262Z", + "id": "hnn0ruj5kvcj7mi", + "labelTags": [], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "mbx4fsykgq95ny3" + } + ], + "priority": 10, + "recurrence": { + "days": [ + 2, + 5 + ], + "lastUncompleted": "2026-03-17T09:59:06.425Z", + "type": "weekly" + }, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": [], + "size": 5, + "startDate": "2026-02-17 16:37:37.849Z", + "status": 8, + "tags": [ + "@Timothy Cardoza", + "@Ben Poland", + "#4150-mt-vernon-performing-arts-center" + ], + "title": "4150 Performing Arts - Acoustical", + "updated": "2026-03-20 00:32:30.751Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-17 18:13:14.057Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-18 02:52:00.000Z", + "id": "6m41f1k9tqltegu", + "labelTags": [ + "testing" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [], + "sharedWith": [], + "size": 5, + "startDate": "2026-02-17 14:53:18.756Z", + "status": 0, + "tags": [ + "testing" + ], + "title": "Bucket Testing", + "updated": "2026-03-20 00:32:30.904Z", + "updatedBy": "", + "user": "" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-17 22:12:17.747Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-01 00:34:49.170Z", + "id": "pycoprypdm0cyyn", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-17 22:12:18.635Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "Large half-week", + "updated": "2026-03-20 21:35:17.573Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Sent Pending

Thomas call on 2/17/26 said \"just send it and call it this\"

", + "created": "2026-02-17 22:57:42.431Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-26 21:29:10.411Z", + "id": "ohqyfnrcn5pxbnr", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-02-17 22:57:43.320Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4118 Estes - Create CO for \"Unforeseen Exterior Demo\"", + "updated": "2026-03-20 00:32:31.204Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-18 01:12:04.535Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-18 13:11:00.000Z", + "id": "yt13izw572d00gb", + "labelTags": [ + "testing" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-18 01:12:05.435Z", + "status": 0, + "tags": [ + "testing" + ], + "title": "testing's task", + "updated": "2026-03-20 00:32:31.352Z", + "updatedBy": "", + "user": "" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-18 17:40:42.049Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-19 17:40:00.000Z", + "id": "js4hmugnp967fjn", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-18 17:40:41.884Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "cortney recipts", + "updated": "2026-03-20 00:32:31.499Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Billing

Stucco guy fixed their framing

", + "created": "2026-02-18 21:12:28.904Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-23 22:54:54.880Z", + "id": "i1ki4u1pdvagrj0", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-18 21:12:29.231Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "3755 Swan EFIS CO Update", + "updated": "2026-03-20 00:32:31.640Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Get Thomas to sign something or put something in tremble to say the scope of work and the hourly/material rate (Estimate E200-6140)

T&M Estimate Sent 3/6/26

Per email 2/26/26 and 3/6/26

Create as a reference for Cintech. They do not have owner approval yet.

If approved add to CO E200-6103 to reduce number of individual COs

Adding 25' of 3-5/8 framing at 12' tall and 1 door frame and 81 sqft of grid/tile
insulation match what was already in room

S1.2 plans

", + "created": "2026-02-18 22:00:21.857Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-17 02:49:49.454Z", + "id": "ij2h8laauwxffyu", + "labelTags": [], + "noteRefs": [ + { + "key": "4118-estes-express-line-addition", + "noteId": "1mg085ngfajz6t8" + } + ], + "priority": 9, + "recurrence": { + "days": [ + 1, + 3, + 5 + ], + "lastUncompleted": "2026-03-18T13:32:50.861Z", + "type": "weekly" + }, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-02-18 22:00:22.263Z", + "status": 9, + "tags": [ + "@Timothy Cardoza", + "@Ben Poland", + "#4118-estes-express-line-addition" + ], + "title": "4118 - Estes new wall CO Awaiting Conf and Sign", + "updated": "2026-03-20 00:32:31.796Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

See handwritten note by Alfonso

", + "created": "2026-02-18 23:21:10.877Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-20 11:19:00.000Z", + "id": "p780p64mx82v9dm", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-18 23:21:11.269Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "3755 Swan Heat CO Update", + "updated": "2026-03-20 00:32:32.244Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Justin $54.14 per pay period wage garnishment

", + "created": "2026-02-19 17:16:50.470Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-02-24 17:15:00.000Z", + "id": "tjl1g2u7r29a45g", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-19 17:16:50.137Z", + "status": 10, + "tags": [ + "@Alfonso Ewing" + ], + "title": "Justin", + "updated": "2026-03-24 18:13:14.019Z", + "updatedBy": "1hbif9dbqng86h9", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-19 20:24:11.485Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-22 20:23:00.000Z", + "id": "f3musqzbe3n7gqv", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-19 20:24:11.392Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "NVR Harddrive", + "updated": "2026-03-20 00:32:33.124Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-19 20:24:39.665Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-22 20:23:00.000Z", + "id": "64006bnvd7sdl1q", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-19 20:24:39.562Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "WOL feature", + "updated": "2026-03-20 00:32:33.264Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-19 20:25:04.531Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-22 20:24:00.000Z", + "id": "zs8ltoy85f9mpon", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-19 20:25:04.392Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "SHOP email david", + "updated": "2026-03-20 00:32:33.420Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Bring PVC glue, filter, and two pipe wrenches and primer pick up trash while I’m there, etc.. Go down list on eye notes.

", + "created": "2026-02-19 21:00:27.190Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-02-24 09:17:01.840Z", + "id": "9vl938rpi666fq8", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-19 21:00:27.104Z", + "status": 6, + "tags": [ + "@Rick Cardoza" + ], + "title": "Elkland plumbing leak ", + "updated": "2026-03-20 00:32:33.561Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-20 14:16:36.779Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-21 02:15:00.000Z", + "id": "opvuzeta62q0p5i", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-20 14:16:36.928Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "SRC CO (not for bill but approval)", + "updated": "2026-03-20 00:32:33.708Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-20 15:05:59.419Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-02-21 03:04:00.000Z", + "id": "m33eiqc61vbxysr", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-02-20 15:05:58.973Z", + "status": 10, + "tags": [ + "@Alfonso Ewing" + ], + "title": "Follow up with Rick about Central COs for Billing", + "updated": "2026-03-20 00:32:33.859Z", + "updatedBy": "", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Don’t be late we have till August 30 but figure more like May.

Part a is free part B is 210 or so. If on time.

Samaritan has a back up plan as an individual only which will cause our family plan to dissipate. It cost 150 to 175 range per month per individual. Samaritan does have more options of some sort.

Get a financial consultant to consider further.

To get Jim benefits, you need to work with an insurance company to get part C and D. Council with a financial consultant.

", + "created": "2026-02-20 15:59:01.368Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-05-12 14:58:00.000Z", + "id": "zlyn622k7463wqk", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-20 15:59:01.165Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Medicare", + "updated": "2026-03-20 00:32:34.004Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Call Angie‘s lead about if they’re charging for every Lead now or if it’s mistake

", + "created": "2026-02-20 18:09:14.134Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-25 18:08:00.000Z", + "id": "najksh4fk73mkai", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-20 18:09:13.974Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Call Angie‘s Lead", + "updated": "2026-03-20 00:32:34.148Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Starred

", + "created": "2026-02-20 18:12:06.084Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-21 06:10:00.000Z", + "id": "w1l0yiqefeivto4", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-20 18:12:05.976Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Create new job for Mark Still", + "updated": "2026-03-20 00:32:34.296Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-20 19:01:47.937Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-02-22 06:02:00.000Z", + "id": "433q3o7sw3xl4ri", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "user-gk3u91dx0r79fo2", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-20 19:01:47.000Z", + "status": 10, + "tags": [ + "@Employee" + ], + "title": "new attachment test", + "updated": "2026-03-20 00:32:34.448Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

What specifically on Pitts Stewart job? Estimate review?

Estimate review

", + "created": "2026-02-20 20:08:29.139Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-24 20:07:00.000Z", + "id": "t1aorpeqyg132ih", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-20 20:08:29.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "4817 Stewart – Pitts", + "updated": "2026-03-20 00:32:34.608Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Message from Eddie

", + "created": "2026-02-20 20:22:32.073Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-21 08:21:00.000Z", + "id": "ozjnqebcxfoy8q6", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-20 20:22:31.950Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Create new job for Oak Grove/Glendale Garden", + "updated": "2026-03-20 00:32:34.764Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "


", + "created": "2026-02-20 20:45:04.347Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-27 09:37:00.000Z", + "id": "0w339orfnwebkko", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-20 20:45:04.293Z", + "status": 10, + "tags": [ + "@Timothy Cardoza", + "@Ben Poland" + ], + "title": "Crowder Material Order", + "updated": "2026-03-20 00:32:34.916Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Did we decide to continue? Should have called and talked to them about whether they are charging every Lead even if we don’t click on them.

", + "created": "2026-02-20 20:48:51.346Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-05-11 19:47:00.000Z", + "id": "zp32iyebpwhwhrc", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-20 20:48:51.196Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Cancel Angi’s list?", + "updated": "2026-03-20 00:32:35.064Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-20 22:01:43.973Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-04-06 14:57:49.858Z", + "id": "3fwv8zybgo9dddr", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-20 22:01:43.934Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Go over job description with Dad", + "updated": "2026-03-20 00:32:35.224Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Homeowners refers smooth. Told Jeff that I would give him a quote next week.

", + "created": "2026-02-20 22:13:31.294Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-25 22:12:00.000Z", + "id": "rshy6g2sgd9ciqt", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-20 22:13:31.167Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Get smooth upgrade price for job 4222", + "updated": "2026-03-20 00:32:35.376Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Pick pages from the SRC plans and ask zeke to print them for me. Give a deadline.

", + "created": "2026-02-20 22:26:26.024Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-21 22:19:00.000Z", + "id": "gob0rju5p0r2uo3", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-20 22:26:24.507Z", + "status": 10, + "tags": [ + "@Joel Snyder" + ], + "title": "SRC plans for myself to have", + "updated": "2026-03-20 00:32:35.692Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-20 22:41:24.155Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-21 10:41:00.000Z", + "id": "jwykri6rycnxd55", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-20 22:41:24.052Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Send 4823 Glendale Garden popcorn scrape", + "updated": "2026-03-20 00:32:35.836Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-20 23:04:09.750Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-23 23:03:00.000Z", + "id": "f6c2no5yd53864h", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-20 23:04:09.633Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Reply to Diane Smith about RLKC questions", + "updated": "2026-03-20 00:32:35.981Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-20 23:15:07.709Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-13 22:14:00.000Z", + "id": "zy0vbitw50gyoiy", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-02-20 23:15:07.669Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "ST ELIZABETH closeout submittal warranty (see sales email)", + "updated": "2026-03-20 00:32:36.128Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-21 00:18:16.478Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-02-24 00:17:00.000Z", + "id": "sodednuo7ue0gd3", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-21 00:18:15.391Z", + "status": 0, + "tags": [ + "@Alfonso Ewing" + ], + "title": "RLC/RLKC billing to Beth", + "updated": "2026-03-20 00:32:36.280Z", + "updatedBy": "", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-21 01:55:03.175Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-02-22 13:54:00.000Z", + "id": "x73ij8b05mm6z52", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-21 01:55:01.980Z", + "status": 10, + "tags": [ + "@Alfonso Ewing" + ], + "title": "Send Diane EOY stuff", + "updated": "2026-03-20 00:32:36.432Z", + "updatedBy": "", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Dad forwarded voicemail to text 2/21

I left voicemail 2/23 12:40 pm

No call back . Going to take off list

", + "created": "2026-02-21 16:30:23.793Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-24 16:29:00.000Z", + "id": "wa5o8nrcpeiiheh", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-21 16:30:23.608Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Contact Sam Lawson‘s referral", + "updated": "2026-03-20 00:32:36.579Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-22 21:13:09.078Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-08 21:12:00.000Z", + "id": "dane1zhggzgkum7", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-22 21:13:08.987Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Office exterior plants", + "updated": "2026-03-20 00:32:36.872Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Terry Conner @Prime Capital or Dave’s person or other

", + "created": "2026-02-22 21:20:32.366Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-08 21:20:00.000Z", + "id": "e0qi5hvfiotw1uo", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-22 21:20:32.277Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Financial consultation", + "updated": "2026-03-20 00:32:37.019Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Probably 50 or $60,000 worth being held by Kids aunt)

", + "created": "2026-02-22 21:22:47.969Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-05-23 21:21:00.000Z", + "id": "hwzw560fg7gkpw4", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-22 21:22:47.885Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Kids, Social Security money", + "updated": "2026-03-20 00:32:37.167Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Dianne has accountant copy of Cardoza construction and waiting on Lori‘s info

", + "created": "2026-02-22 21:25:15.320Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-04 21:24:00.000Z", + "id": "7r2r0umxbwhsctx", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-22 21:25:15.237Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "2025 taxes", + "updated": "2026-03-20 00:32:37.308Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-22 21:26:40.095Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-05-23 21:26:00.000Z", + "id": "t135uwwcwd3z10h", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 10, + "startDate": "2026-02-22 21:26:40.007Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Rabbit run roof", + "updated": "2026-03-20 00:32:37.443Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-22 21:27:45.701Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-08 21:27:00.000Z", + "id": "f0caa91ze39lapa", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-22 21:27:45.615Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Pump septicS", + "updated": "2026-03-20 00:32:37.592Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-22 22:55:29.109Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-02-24 10:54:00.000Z", + "id": "qv4g4q1p573g370", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-22 22:55:28.999Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Central assembly doorstops", + "updated": "2026-03-20 00:32:37.892Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

I talked to Fernando and his wife who know Pastor Alfaro from Nicaragua.

Fernando Padron. 561-578-0572.

FS Padron 35@gmail.com.

Have a photo of information around February 13

", + "created": "2026-02-22 22:57:57.105Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-15 22:55:00.000Z", + "id": "ttgucewz558qkkf", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-22 22:57:57.004Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Call Fernando from worship album night", + "updated": "2026-03-20 00:32:38.059Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Need review

", + "created": "2026-02-23 15:30:35.506Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-25 03:28:00.000Z", + "id": "5p0o04qwya1vzfz", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-23 15:30:35.462Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4821 Rent Branson Branson cove patch", + "updated": "2026-03-20 00:32:38.207Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Order 100S200-54 @ 25' x 86

162S200-43 x 37

Simpson S/LBV 2.12/10 x 90(probably have to be 100)

245' worth of 3\" strapping

Order is in to Brian at FBM, He will be texting to confirm that these j hangers are correct and

", + "created": "2026-02-23 16:01:42.176Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-24 03:58:00.000Z", + "id": "en5nahb44m6m9v0", + "labelTags": [ + "SRC" + ], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-23 16:01:41.735Z", + "status": 10, + "tags": [ + "SRC", + "@Joel Snyder" + ], + "title": "Steel needs for SRC J#3981", + "updated": "2026-03-20 00:32:38.352Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Review updated quote with added areas and ceiling height

", + "created": "2026-02-23 17:03:14.305Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-25 05:01:00.000Z", + "id": "g94samgrohujsia", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-23 17:03:14.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4705 review", + "updated": "2026-03-20 00:32:38.500Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Move complete or not awarded job folders

", + "created": "2026-02-23 17:04:51.659Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-05 17:03:00.000Z", + "id": "k882lafj93pt37k", + "labelTags": [], + "noteRefs": [], + "priority": 3, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-23 17:04:51.588Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Clean out job folders", + "updated": "2026-03-20 00:32:38.652Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-23 18:21:18.051Z", + "createdBy": "rrjoxd2wewmlrwy", + "deletedAt": "", + "dueDate": "2026-03-05 19:19:00.000Z", + "id": "4aqfw5ts6woirgy", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "2ttnn1vcdnniqci", + "key": "user-rrjoxd2wewmlrwy", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-23 18:21:17.835Z", + "status": 0, + "tags": [ + "@David Cardoza" + ], + "title": "Test", + "updated": "2026-03-20 00:32:38.808Z", + "updatedBy": "", + "user": "rrjoxd2wewmlrwy" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Central Assembly

Email on 2/20/26 - damage to corner of awning, CO for backsplash

Forwarded to Chad

", + "created": "2026-02-23 19:17:15.394Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-26 19:17:00.000Z", + "id": "7wu8ne10wwbgmro", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-23 19:17:15.644Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4310 Michael Lawson vox/email", + "updated": "2026-03-20 00:32:38.968Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Go over graphs that were requested. Show what we have available.

", + "created": "2026-02-23 19:29:25.434Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-28 19:28:00.000Z", + "id": "mnwev4xi38qsduc", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-23 19:29:25.333Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Go over Company financial graphs", + "updated": "2026-03-20 00:32:39.132Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-23 20:01:50.350Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-02-24 20:01:00.000Z", + "id": "dy670qpql15bzsm", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-23 20:01:50.250Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Cortney setup on tasgrid", + "updated": "2026-03-20 00:32:39.284Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-23 20:12:41.882Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-02-25 08:12:00.000Z", + "id": "1nqeb3902ylif3c", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-23 20:12:39.521Z", + "status": 10, + "tags": [ + "@Alfonso Ewing" + ], + "title": "Ask Heidi about Adam Billing", + "updated": "2026-03-20 00:32:39.444Z", + "updatedBy": "", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [ + "image_n16xap6mod.webp" + ], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Get shop drawings for the framing. Hire an engineer. We need it approved by GC before starting framing around March 5

-Request has been sent to RTM, waiting for shop drawings to come in (3/5)

", + "created": "2026-02-23 21:36:36.068Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-08 13:34:14.971Z", + "id": "yz34jlzc29tq3ve", + "labelTags": [], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "mbx4fsykgq95ny3" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-23 21:36:36.330Z", + "status": 10, + "tags": [ + "@Timothy Cardoza", + "@Ben Poland", + "#4150-mt-vernon-performing-arts-center" + ], + "title": "4150 Performing Arts - Framing Shop Drawings", + "updated": "2026-03-20 00:32:39.584Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-23 22:58:11.217Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-24 10:57:00.000Z", + "id": "a6veb903mnzifg9", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-23 22:58:11.262Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Test", + "updated": "2026-03-20 00:32:39.736Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Zeek is waiting for a call back from the Tmobile rep with pricing.

Need get Rick's approval.

$12 per month and using Zeek's old tablet.

", + "created": "2026-02-24 14:22:22.065Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-03-06 14:21:00.000Z", + "id": "iy8ifiwrcoagypi", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-24 14:22:21.474Z", + "status": 10, + "tags": [ + "@Alfonso Ewing" + ], + "title": "Zeek Ask About Joel and Tmobile Plan", + "updated": "2026-03-20 00:32:39.888Z", + "updatedBy": "", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-24 15:06:55.208Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-27 15:06:00.000Z", + "id": "quixl4us9m0vxzx", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-24 15:06:55.101Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Figure out why escrow accounts don’t balance", + "updated": "2026-03-20 00:32:40.040Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Job Vox Naming Template:

C#4815 job name - job address [client name contact name (if different and maybe their position) (###) ###-####]

Submit By:

3/11/26 at 12PM is the earliest due date among clients


Multiple GCs to Submit To:

", + "created": "2026-02-24 19:03:16.700Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-06 22:00:00.000Z", + "id": "9er02aq9dtymbau", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 9, + "startDate": "2026-02-24 19:03:17.399Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4829 - Ozark Fire New Training Annex and Maint Fac - Estimate", + "updated": "2026-03-20 00:32:40.188Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

need to check with Super(Matt) about what the Floor on top of ceiling at Mezzanine actually calls for?

", + "created": "2026-02-24 21:47:45.311Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-26 09:06:00.000Z", + "id": "ydb3kmc7r4ny5n9", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-24 21:47:45.197Z", + "status": 10, + "tags": [ + "@Joel Snyder" + ], + "title": "SRC change order?", + "updated": "2026-03-20 00:32:40.792Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Plywood on top of our CJs above Mezzanine? 1/2\"? Fire Treated? Push for blocking every 3rd CJ bay and flat strapping down center of CJ run? one side of Mezzanine ceiling shows 12\" OC and the other side shows 16\" OC?

", + "created": "2026-02-24 22:18:46.532Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-02-26 10:14:00.000Z", + "id": "io54z2ixmta7bf4", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-24 22:18:46.411Z", + "status": 10, + "tags": [ + "@Joel Snyder" + ], + "title": "Call Matt for SRC specifics", + "updated": "2026-03-20 00:32:40.936Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Ask for which plans specify where each type of board will be installed? where RC1 is installed? where double rock gets installed.

", + "created": "2026-02-24 22:21:04.013Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-03-17 22:19:00.000Z", + "id": "ht7a39beffwbrii", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-24 22:21:03.879Z", + "status": 0, + "tags": [ + "@Joel Snyder" + ], + "title": "Fulbright Heights Scope?", + "updated": "2026-03-20 00:32:41.080Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Get with David Gray on approval E200-6110

Pending, waiting on a response.

To add the 4 woodgrain panel sets on walls beside stage.

", + "created": "2026-02-24 23:53:50.324Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-26 23:03:27.906Z", + "id": "9wu0icmgy8z0dpn", + "labelTags": [ + "CO" + ], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "mbx4fsykgq95ny3" + } + ], + "priority": 9, + "recurrence": { + "days": [ + 1 + ], + "lastUncompleted": "2026-03-16T22:48:14.893Z", + "type": "weekly" + }, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-24 23:53:51.060Z", + "status": 9, + "tags": [ + "CO", + "@Timothy Cardoza", + "@Ben Poland", + "#4150-mt-vernon-performing-arts-center" + ], + "title": "4150 Acoustic CO pending response - Performing Arts Center", + "updated": "2026-03-20 00:32:41.232Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-02-25 16:46:38.493Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-26 04:46:00.000Z", + "id": "z7mhx8qd9o9sw5t", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-02-25 16:46:38.423Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "4830 O'Reilly Auto Parts in Shell Knob (1 hour away) - Bid Due: 02/25/2026 03:00 PM - Van Tassel-Proctor - High and Fast (Look into company)", + "updated": "2026-03-20 00:32:41.391Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Fire Treated Plywood was not found in the SOW. This would result in a CO.

", + "created": "2026-02-25 16:47:34.312Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-02-26 19:22:05.232Z", + "id": "ko14pq4kj5dntn4", + "labelTags": [ + "CO" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-25 16:47:34.231Z", + "status": 10, + "tags": [ + "CO", + "@Timothy Cardoza", + "@Ben Poland" + ], + "title": "4118 Fire Treated Plywood is a CO for Estes", + "updated": "2026-03-20 00:32:41.540Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-02-25 19:28:48.864Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-02-28 19:28:00.000Z", + "id": "4vs6bcr51zh9g9d", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "user-1hbif9dbqng86h9", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-25 19:28:47.838Z", + "status": 0, + "tags": [ + "@Alfonso Ewing" + ], + "title": "Create a List of Weekly/Monthly reports and send to Beth/Rick", + "updated": "2026-03-20 00:32:41.672Z", + "updatedBy": "", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-25 20:02:31.126Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-26 08:01:00.000Z", + "id": "i4ex2kbfg237v7a", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-25 20:02:31.058Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Get checks together for Mike McClaine", + "updated": "2026-03-20 00:32:41.828Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-25 20:08:18.908Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-07 20:07:00.000Z", + "id": "514w64ry5jv2bt2", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-25 20:08:18.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Go over accounts receivables and payables, ", + "updated": "2026-03-20 00:32:42.110Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

I was wrong about amounts. Plenty in account.

", + "created": "2026-02-25 22:34:59.782Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-10 23:54:32.688Z", + "id": "6blg33mvznto1sr", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-02-25 22:34:59.683Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Get a check ready for Mike for kentling, Melton, Pearl & Nichols", + "updated": "2026-03-20 00:32:42.311Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-02-26 00:32:29.723Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-02-26 13:12:17.270Z", + "id": "kzy2b674k6w7gib", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "user-gk3u91dx0r79fo2", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-02-26 00:32:29.701Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "Large today", + "updated": "2026-03-20 00:32:42.509Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-02-26 15:46:49.545Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-02-27 03:46:00.000Z", + "id": "ok1rdzlixjv6wtw", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-26 15:46:49.510Z", + "status": 10, + "tags": [ + "@Ben Poland", + "@Timothy Cardoza" + ], + "title": "Need to find Estimate for 4709/4710", + "updated": "2026-03-20 00:32:42.888Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Need to know if shop drawings are needed for interior framing and/or exterior framing

", + "created": "2026-02-26 16:03:08.425Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-02-27 04:02:00.000Z", + "id": "yuak12gjvb8qz2t", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-02-26 16:03:08.282Z", + "status": 10, + "tags": [ + "@Ben Poland", + "@Timothy Cardoza" + ], + "title": "4150 - Mt Vernon HS Performing Arts", + "updated": "2026-03-20 00:32:43.090Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Windows

Server Room Plywood:

We estimated 2 walls (14 LF) of server room to get 3/4\" plywood from 2 feet off the ground up to 10 feet (past the 9' ceilings). Supposedly we were supposed to do 3 walls.

Now Steve Brockman is telling us they want us to do all 4 walls. The additional 2 walls would come out to about $457 (without markup or contingency or handling fees)

I'm not submitting until I can tag it on with another change order since they don't like smaller things like this. I would also need to be very careful about wording.

Updates:

At Estes j#4118:

2/26 - 1.5 hrs delivering 3/4” FT ply for Server Room.

2/27 - 1 hr managing/delivering door frame for Server Room.

https://www.voxer.com/v/20dff9d309

", + "created": "2026-02-26 20:25:37.270Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-26 20:37:33.624Z", + "id": "lq7rzmxv7wtxdx0", + "labelTags": [], + "noteRefs": [ + { + "key": "4118-estes-express-line-addition", + "noteId": "1mg085ngfajz6t8" + } + ], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-02-26 20:25:37.591Z", + "status": 0, + "tags": [ + "@Timothy Cardoza", + "#4118-estes-express-line-addition" + ], + "title": "4118 Estes CO - Windows and Server Room Plywood", + "updated": "2026-03-23 20:37:42.807Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

fsf

sf

f

f

f

f

f

f

ff

f

f

f

f

f

f

f

f

f

ff

ff

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

f

ff

f

f

f

f

f

", + "created": "2026-02-27 18:47:02.715Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-01 06:46:00.000Z", + "id": "as0pl13rgk163zr", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "user-gk3u91dx0r79fo2", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-27 18:47:03.493Z", + "status": 10, + "tags": [ + "@Employee" + ], + "title": "New task test", + "updated": "2026-03-20 00:32:43.688Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Step through hole needs review

", + "created": "2026-02-27 19:30:02.544Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-02-28 07:29:00.000Z", + "id": "q49hw084oawrxot", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-02-27 19:30:02.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Review job 4831", + "updated": "2026-03-20 00:32:43.901Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Lease ends the end of March and Lisa is asking how to go about that.

Gave her lease extension, need to retrieve signed extension sometime

", + "created": "2026-02-27 20:07:59.919Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-04 20:06:00.000Z", + "id": "o7wnjwn734jyncp", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-02-27 20:07:59.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Renew 228 Redwood lease", + "updated": "2026-03-20 00:32:44.099Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-02-27 20:09:35.690Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-09 20:08:00.000Z", + "id": "aqrehwwy4cwoswh", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-02-27 20:09:35.498Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": " job 4833 Goldsmith Ozark Mountain", + "updated": "2026-03-20 00:32:44.302Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review. Due today

", + "created": "2026-03-02 15:24:32.213Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-07 15:23:00.000Z", + "id": "jqcbdezxb7yl141", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-02 15:24:32.144Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4826 estimate", + "updated": "2026-03-20 00:32:44.600Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Apparently dropped this one. Came in on the 19th so about a week and a half ago.

Approved. Needs sent

", + "created": "2026-03-02 15:27:58.987Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-04 03:26:00.000Z", + "id": "awdcg0y6e6wsr9r", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-02 15:27:58.917Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4822", + "updated": "2026-03-20 00:32:44.792Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Came in on 19th.

Needs review

", + "created": "2026-03-02 15:30:47.739Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-07 15:29:00.000Z", + "id": "t2fih0o9odhrch4", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-02 15:30:47.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4820", + "updated": "2026-03-20 00:32:45.000Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Ai to search plans would be great

", + "created": "2026-03-03 17:30:01.284Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-04-13 17:29:00.000Z", + "id": "5ny7hbnmo8x3dug", + "labelTags": [ + "System Design" + ], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 17:30:01.180Z", + "status": 0, + "tags": [ + "System Design", + "@Timothy Cardoza" + ], + "title": "Improve, Adjust, Replace Planswift", + "updated": "2026-03-20 00:32:45.822Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-03 18:02:48.578Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-04 06:02:00.000Z", + "id": "kdb70hvzm1rs7n1", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-03 18:02:48.382Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Check out prism and update Zeek", + "updated": "2026-03-20 00:32:46.029Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-03-03 18:42:33.212Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-08 18:40:00.000Z", + "id": "5cs9kcfqkavgy5y", + "labelTags": [], + "noteRefs": [ + { + "key": "4835-kickapoo-ceilings", + "noteId": "p855hivc9hlicjk" + } + ], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 18:42:33.107Z", + "status": 10, + "tags": [ + "@Timothy Cardoza", + "@Beth Cardoza", + "#4835-kickapoo-ceilings" + ], + "title": "Check in with Dad about further contact Kickapoo Ceilings", + "updated": "2026-03-20 00:32:46.221Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

use magnet plaques for labeling

", + "created": "2026-03-03 18:53:50.285Z", + "createdBy": "s1gwhknxaww38i3", + "deletedAt": "", + "dueDate": "2026-04-17 18:52:00.000Z", + "id": "59apl48j7se00cw", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "asgpvdgthuoyhgx", + "key": "user-s1gwhknxaww38i3", + "kind": "user" + }, + { + "contextId": "shop", + "key": "shop", + "kind": "bucket" + } + ], + "sharedWith": null, + "size": 6, + "startDate": "2026-03-03 18:53:49.000Z", + "status": 0, + "tags": [ + "@David Rader", + "@shop" + ], + "title": "reorganize metal & label", + "updated": "2026-03-20 00:32:46.440Z", + "updatedBy": "", + "user": "s1gwhknxaww38i3" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-03 19:02:21.225Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-06 19:01:00.000Z", + "id": "j96li4ql4tlpd05", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 19:02:21.036Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4827 Phillips - Krueger remodel", + "updated": "2026-03-20 00:32:46.819Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-03 19:04:26.441Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-06-01 19:03:00.000Z", + "id": "qw2fdmd75hxqjhc", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 9, + "startDate": "2026-03-03 19:04:26.345Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "QuickBooks transition", + "updated": "2026-03-20 00:32:47.011Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-03 19:06:00.352Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-06 19:05:00.000Z", + "id": "5xklrzgk0q9yf39", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 19:06:00.186Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4828 - Lewis - Krueger", + "updated": "2026-03-20 00:32:47.203Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Talk to Rick and Ben on Friday

", + "created": "2026-03-03 20:00:09.418Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-03-10 18:59:00.000Z", + "id": "tvchqp029biqji4", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-03 20:00:09.298Z", + "status": 10, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Blue beam Ben & Rick", + "updated": "2026-03-20 00:32:47.612Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-03 20:06:44.554Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-05 08:06:00.000Z", + "id": "or4dshi4v72wtcz", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-03 20:06:44.401Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Record Amber Cash app payment", + "updated": "2026-03-20 00:32:47.810Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

List for like April 25?

", + "created": "2026-03-03 20:07:42.637Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-14 20:30:16.860Z", + "id": "7xz4231b5vs3cuw", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 20:07:42.509Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "List 349 Kentling", + "updated": "2026-03-20 00:32:48.018Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

-Emailed Chip on 3/5 and provided the insulation numbers for SRC in attempt to fill the truck on the Mt Vernon order to avoid the $2,000 shipping fee

-We would need 50,000 sf of insulation ordered to be able to fill the truck

", + "created": "2026-03-03 21:43:41.125Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-04-02 13:58:49.896Z", + "id": "arvmx6hcvfv7yfi", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 21:43:40.850Z", + "status": 10, + "tags": [ + "@Ben Poland", + "@Timothy Cardoza" + ], + "title": "Look into insulation order from Sierra", + "updated": "2026-03-24 19:09:03.638Z", + "updatedBy": "nc23vrshrg0qtdi", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-03 21:49:06.368Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-03-04 13:00:00.000Z", + "id": "8a9vhgmjcm1lfjf", + "labelTags": [ + "SRC" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-03-03 21:49:06.187Z", + "status": 10, + "tags": [ + "SRC", + "@Joel Snyder" + ], + "title": "Meet Doyle at Ross office to load the stolen and returned 3/4\" ply for SRC", + "updated": "2026-03-20 00:32:48.418Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-03-03 22:42:32.090Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-04 22:42:00.000Z", + "id": "xxhwdefz9jfa9ia", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-03 22:42:31.993Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Respond to Inpro about trim confirmation", + "updated": "2026-03-20 00:32:48.621Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-03 22:49:19.172Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-08 22:48:00.000Z", + "id": "xpc2psffvd1i8hm", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 22:49:19.111Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Update SDC quote", + "updated": "2026-03-20 00:32:48.807Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Rick called Seth (original ITB contact) and Seth said they bowed out. Rick might want to call Connect Church directly. We probably don't want to GC but they may ask us to. Maybe recommend a GC??

", + "created": "2026-03-03 22:59:04.753Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-30 20:35:24.914Z", + "id": "2uc3dd5iyjiwfo7", + "labelTags": [ + "Ready for Rick" + ], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-03 22:59:04.566Z", + "status": 0, + "tags": [ + "Ready for Rick", + "@Timothy Cardoza" + ], + "title": "Follow Up on Connect Church Job", + "updated": "2026-03-20 20:35:54.388Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-03 23:47:33.983Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-08 23:46:00.000Z", + "id": "g99s0h5cu3z6wjq", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-03 23:47:33.000Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "EVA/job profitability", + "updated": "2026-03-20 00:32:49.219Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-04 00:37:23.249Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-05 00:43:56.875Z", + "id": "5vn3zkn7wzaldsk", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-04 00:37:23.185Z", + "status": 0, + "tags": [], + "title": "test", + "updated": "2026-03-24 21:17:19.599Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-04 00:45:06.061Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 22:36:42.008Z", + "dueDate": "2026-03-04 12:44:00.000Z", + "id": "lj75q71ko8spkm5", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": { + "lastUncompleted": "2026-03-17T22:57:25.851Z", + "type": "daily" + }, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-04 00:45:05.875Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "tsett", + "updated": "2026-03-23 22:36:41.507Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-04 16:14:59.425Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-05 04:14:00.000Z", + "id": "xux2v0u6p0zqomy", + "labelTags": [ + "randomtag" + ], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "user-gk3u91dx0r79fo2", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-04 16:14:59.000Z", + "status": 0, + "tags": [ + "randomtag", + "@Employee" + ], + "title": "dhdh", + "updated": "2026-03-20 00:32:50.062Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-04 17:03:23.893Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-09 17:02:00.000Z", + "id": "qlpe93lkjaudjst", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-04 17:03:23.804Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4834 estimate", + "updated": "2026-03-20 00:32:50.273Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-04 18:53:31.221Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-06 06:52:00.000Z", + "id": "vf8u1om6v8brglg", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-04 18:53:31.099Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4819 wants an estimate", + "updated": "2026-03-20 00:32:50.659Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

https://www.ceilume.com/pro/accessories/DecorativeStrips/SandalWood/

", + "created": "2026-03-04 18:57:28.358Z", + "createdBy": "s1gwhknxaww38i3", + "deletedAt": "", + "dueDate": "2026-03-06 06:51:00.000Z", + "id": "oy0af6b8ntd6az4", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "asgpvdgthuoyhgx", + "key": "user-s1gwhknxaww38i3", + "kind": "user" + } + ], + "sharedWith": [], + "size": 3, + "startDate": "2026-03-04 18:51:51.726Z", + "status": 0, + "tags": [ + "@David Rader" + ], + "title": "Tanger Outlets material order (specialty)", + "updated": "2026-03-20 00:32:50.883Z", + "updatedBy": "", + "user": "s1gwhknxaww38i3" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-05 19:34:57.705Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-25 16:34:00.000Z", + "id": "m3hvpbzb1w0hr3i", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-05 19:34:57.585Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Update Training videos for Tasgrid", + "updated": "2026-03-23 21:04:03.593Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Job 4246. We got a bill and a credit, but the credit did not completely cover the bill. We did not do the job at all. I don’t think that they actually stocked it.

", + "created": "2026-03-05 23:49:16.694Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-08 23:47:00.000Z", + "id": "b4dqh3o6tqf249z", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-05 23:49:16.607Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Follow up on 4246 L&W not full credit", + "updated": "2026-03-20 00:32:51.672Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Lease ends the end of March and Lisa is asking how to go about that.

Gave her lease extension, need to retrieve signed extension sometime

", + "created": "2026-03-06 15:32:42.317Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-04 20:06:00.000Z", + "id": "sd9v7uhsnkpycrs", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-06 15:32:42.233Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Renew 228 Redwood lease (Copy)", + "updated": "2026-03-20 00:32:52.087Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Left voicemail with Brad‘s cell phone and secondary number which gave me some kind of AI assistant that said he was not available. Kai no longer works for Brad for about two years so I deleted her work number.

", + "created": "2026-03-06 15:45:06.014Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-11 15:43:00.000Z", + "id": "avepde8qqer6mjv", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-06 15:45:05.934Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Brad King $1261?", + "updated": "2026-03-20 00:32:52.279Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Drywall comes in 8s, 10s, 12s, 14s and stretch board

Check to see if 9ft stand up would work. Framers must be on. check plans to see if ceiling heights are 9ft and get approval from PM to move forward with it.

", + "created": "2026-03-06 16:18:10.804Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-07 04:17:00.000Z", + "id": "0iptvancb5srz0n", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-06 16:18:09.616Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "Check into Fullbright Heights ceiling height and 9ft stand up", + "updated": "2026-03-20 00:32:52.481Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-06 16:31:10.141Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-16 16:30:00.000Z", + "id": "nham5j3d5jmidin", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-06 16:31:10.053Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Review all insurance work done by Mike", + "updated": "2026-03-20 00:32:52.669Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Fulbright's SOV in Procore.

", + "created": "2026-03-06 16:48:12.840Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-07 04:47:00.000Z", + "id": "mq6bn2ag8pbbr67", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-06 16:48:11.646Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "Fulbright's SOV in Procore.", + "updated": "2026-03-20 00:32:52.882Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-06 16:51:08.161Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-09 16:50:00.000Z", + "id": "p7v2dt31qmqnx5z", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-03-06 16:51:08.075Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "David Rader work scope", + "updated": "2026-03-20 00:32:53.070Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Make sure flag and note

“possible CO: 100 feet of wrapped beams not in plans”

Gets added to Prism

", + "created": "2026-03-06 22:21:16.308Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-16 22:19:00.000Z", + "id": "0yksk7lgtdcp8ek", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-06 22:21:16.172Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "4648 & 4649", + "updated": "2026-03-20 00:32:53.260Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Deduct wallpaper areas from L5. Check board footage. If actual high consider adding for tile rooms.

", + "created": "2026-03-06 22:29:00.172Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-09 22:27:00.000Z", + "id": "1sb3p6k8q48x3mc", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-06 22:29:00.069Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4045 change order", + "updated": "2026-03-20 00:32:53.459Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Emailed FBM, Sierra, and Wildcat about ceiling pricing.

See #Estimating Notes

", + "created": "2026-03-07 00:30:13.598Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-10 00:00:00.000Z", + "id": "p2ut35nntf8s5on", + "labelTags": [ + "Estimate" + ], + "noteRefs": [ + { + "key": "4841-andys-custard-hq-dd-budget", + "noteId": "xcljwpoxsngift1" + } + ], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-03-07 00:30:14.016Z", + "status": 10, + "tags": [ + "Estimate", + "@Timothy Cardoza", + "#4841-andys-custard-hq-dd-budget" + ], + "title": "4841 - Andys HQ DD- Estimate", + "updated": "2026-03-23 15:51:06.527Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Need to call back. Forgot to check voicemail

", + "created": "2026-03-07 00:45:21.509Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-08 00:44:00.000Z", + "id": "wp1egeh210lx1ku", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-07 00:45:21.430Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Call Lunceford (voicemail on Friday)", + "updated": "2026-03-20 00:32:53.891Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Left a text and voice message with Jason Lister. Waiting on response as to when to talk.

", + "created": "2026-03-07 14:50:51.276Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-10 14:49:00.000Z", + "id": "3uqr9tpox52lahy", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-07 14:50:51.202Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Cash flow for business", + "updated": "2026-03-20 00:32:54.109Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-07 14:51:41.505Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-12 14:50:00.000Z", + "id": "19rtpcusjtlduig", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-07 14:51:41.423Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "House for Kit and Zeke", + "updated": "2026-03-20 00:32:54.291Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Added Expansion Joints AND add stairs head repair

Expansion Joint

Stairs Head

Both

https://www.voxer.com/v/37a2bcd53e

", + "created": "2026-03-09 17:11:18.848Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-26 20:33:33.624Z", + "id": "i66egbx4z1cz1h8", + "labelTags": [ + "CO" + ], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-09 17:11:18.676Z", + "status": 0, + "tags": [ + "CO", + "@Timothy Cardoza" + ], + "title": "4019 St. Elizabeth CO Expansion Joints", + "updated": "2026-03-23 20:34:25.985Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-09 18:52:28.186Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-12 18:51:00.000Z", + "id": "1qvqe4wygdkwvvu", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-09 18:52:28.036Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Give Dad updated RLKC checks", + "updated": "2026-03-20 00:32:54.712Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-09 22:24:22.199Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-12 22:23:00.000Z", + "id": "11yi14blga4re1e", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-09 22:24:22.024Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4333.1 CO REVIEW", + "updated": "2026-03-20 00:32:54.930Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-10 15:20:35.935Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-13 08:32:16.843Z", + "id": "2jl7durb7b9ktiv", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-10 15:20:35.818Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "4222 CO", + "updated": "2026-03-20 00:32:55.112Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

This job has a contract, but they’ve made changes and we sent one new estimate and we have

More changes to make. Ceiling height changes and five eights ceiling. So we need the contract to either have change orders or be scratched out and signed a new work order.

Says will create new contract

", + "created": "2026-03-10 16:41:37.822Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-13 16:39:00.000Z", + "id": "cxjsd43duzv3cp2", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-10 16:41:37.519Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "4222 request new contract or a signed statement saying previous contract is Void", + "updated": "2026-03-20 00:32:55.331Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-10 18:15:18.107Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-11 06:14:00.000Z", + "id": "yvyld556t57iqyj", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-10 18:15:17.917Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4839 review", + "updated": "2026-03-20 00:32:55.561Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-11 16:54:16.009Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-14 16:53:00.000Z", + "id": "fx7hr580g9qxu3g", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-11 16:54:15.906Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Find Cruise title to sign over to Orville", + "updated": "2026-03-20 00:32:55.763Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-11 17:27:22.472Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-13 05:26:00.000Z", + "id": "wink5uwbsmdov8x", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-11 17:27:22.363Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4838 review", + "updated": "2026-03-20 00:32:55.981Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Ready for review

", + "created": "2026-03-11 19:43:45.677Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-14 19:42:00.000Z", + "id": "d35ft9xmd8n5kg8", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-11 19:43:45.493Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4842 review", + "updated": "2026-03-20 00:32:56.402Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-11 23:17:10.692Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-14 23:16:00.000Z", + "id": "b6chb3blm46pu6d", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-11 23:17:10.553Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Get amortization schedule and copy of promissory note to Orville ", + "updated": "2026-03-20 00:32:56.589Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-12 12:07:11.172Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-13 00:06:00.000Z", + "id": "xw9g4ygoga93u8q", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-12 12:07:11.084Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4834 - how much is garage?", + "updated": "2026-03-20 00:32:56.791Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Notes on folder A, dicta phone and yellow note paper on home desk

", + "created": "2026-03-12 13:09:40.876Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-02 13:09:00.000Z", + "id": "1xq369i3vturc4g", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-12 13:09:40.771Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Well agreement for rabbit run", + "updated": "2026-03-20 00:32:57.044Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-03-12 13:52:30.459Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-13 01:51:00.000Z", + "id": "r1ejh2xwbfnjfv8", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-12 13:52:30.284Z", + "status": 10, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Identify TasGrid issues and reprioritize", + "updated": "2026-03-20 00:32:57.343Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

from pieces to feet

", + "created": "2026-03-12 15:51:27.167Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-28 20:33:33.624Z", + "id": "vvyg7bjakydwelb", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-12 15:51:28.007Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Adjust template for Wall Angle", + "updated": "2026-03-23 20:34:09.905Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-03-12 16:44:53.379Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-07 06:54:00.000Z", + "id": "kn1nxbmwgz7pyz9", + "labelTags": [], + "noteRefs": [ + { + "key": "4609-camp-crowder-solider-barracks-bldg-757", + "noteId": "qnotrhp9ibvicu2" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": [], + "size": 3, + "startDate": "2026-03-05 18:55:03.095Z", + "status": 10, + "tags": [ + "@Ben Poland", + "#4609-camp-crowder-solider-barracks-bldg-757" + ], + "title": "Equipment lists", + "updated": "2026-03-20 00:32:57.927Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [ + "image_v2wbxvx89d.webp" + ], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-12 19:59:07.833Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-22 19:58:00.000Z", + "id": "tq75g84bzg47028", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-12 19:59:07.752Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Test", + "updated": "2026-03-20 00:32:58.196Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-13 16:22:16.015Z", + "createdBy": "2lmwfhtdwuexmiv", + "deletedAt": "", + "dueDate": "2026-03-20 16:22:00.000Z", + "id": "pzrd4h7si03fr4v", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u3julc5juv1c5pq", + "key": "user-2lmwfhtdwuexmiv", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-13 16:22:15.852Z", + "status": 0, + "tags": [ + "@Ezekiel Ewing" + ], + "title": "Tracking from Wareshouse", + "updated": "2026-03-20 00:32:58.483Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Get final information from Dave and Johanna and figure change order including any changes to Wehr paneling will go and maybe tile areas in bathroom. They did not get back to me this week! But I did a change order with what I know. 3/20

", + "created": "2026-03-13 18:27:16.543Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-16 18:26:00.000Z", + "id": "gn2xcal7hvtjk32", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-13 18:27:16.510Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4045 CO - paneling areas hang", + "updated": "2026-03-20 22:19:40.264Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Materials

", + "created": "2026-03-16 14:55:48.276Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-21 14:54:49.869Z", + "id": "yqffg2agv88ggjo", + "labelTags": [], + "noteRefs": [ + { + "key": "4118-estes-express-line-addition", + "noteId": "1mg085ngfajz6t8" + } + ], + "priority": 8, + "recurrence": { + "lastUncompleted": "2026-02-11T09:15:08.363Z", + "type": "daily" + }, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": [], + "size": 5, + "startDate": "2026-01-31 00:05:50.401Z", + "status": 0, + "tags": [ + "@Ben Poland", + "#4118-estes-express-line-addition" + ], + "title": "4118 - Estes - Lead Time Material Orders", + "updated": "2026-03-20 00:32:59.356Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Job Vox Naming Template:

C#4815 job name - job address [client name contact name (if different and maybe their position) (###) ###-####]

Submit By:

", + "created": "2026-03-16 21:03:07.820Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-18 18:00:00.000Z", + "id": "n9tb1zd2qovqycz", + "labelTags": [ + "Estimate" + ], + "noteRefs": [ + { + "key": "4850-intercounty-electric-rolla", + "noteId": "4hfqo8k4hdeixxh" + } + ], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-03-16 21:03:07.883Z", + "status": 10, + "tags": [ + "Estimate", + "@Timothy Cardoza", + "#4850-intercounty-electric-rolla" + ], + "title": "4850 - Intercounty Electric Rolla - Estimate", + "updated": "2026-03-23 15:51:06.597Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Job Vox Naming Template:

C#4815 job name - job address [client name contact name (if different and maybe their position) (###) ###-####]

Submit By:

", + "created": "2026-03-16 22:59:00.927Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-18 18:00:00.000Z", + "id": "5rsy930ttk14kdm", + "labelTags": [ + "Estimate", + "__sivbh2pwzyew5lb_favorite__" + ], + "noteRefs": [ + { + "key": "4850-intercounty-electric-rolla", + "noteId": "4hfqo8k4hdeixxh" + } + ], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 7, + "startDate": "2026-03-16 22:59:00.759Z", + "status": 0, + "tags": [ + "Estimate", + "__sivbh2pwzyew5lb_favorite__", + "@Rick Cardoza", + "#4850-intercounty-electric-rolla" + ], + "title": "4850 - Intercounty Electric Rolla - Estimate (Copy)", + "updated": "2026-03-20 00:32:59.912Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Added Expansion Joints

", + "created": "2026-03-16 23:07:11.371Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-18 09:05:27.907Z", + "id": "qv3ojd6iwspwtc7", + "labelTags": [ + "CO", + "Ready for Rick", + "__e9vck6v3pa951wn_favorite__" + ], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-16 23:07:11.274Z", + "status": 10, + "tags": [ + "CO", + "Ready for Rick", + "__e9vck6v3pa951wn_favorite__", + "@Rick Cardoza" + ], + "title": "4019 St. Elizabeth CO Expansion Joints (Copy)", + "updated": "2026-03-20 00:33:00.202Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

-Perry Wheels for the good perry (12)

-screws #10, #12, #10-#16

-pallet jack

", + "created": "2026-03-17 13:32:28.814Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-18 13:32:00.000Z", + "id": "hjxf3g8r912y5hn", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 13:32:27.692Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4150-Veregy Remaing Equipment", + "updated": "2026-03-20 00:33:00.487Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

-emailed Brian the estimate and requested any insight on lead times for materials. Target start date is 4/20

Need to get with timothy on correct lengths needed for materials

", + "created": "2026-03-17 13:35:22.261Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-18 14:06:29.653Z", + "id": "flrnp9281re4hyv", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 13:35:21.076Z", + "status": 7, + "tags": [ + "@Ben Poland" + ], + "title": "4707-Nabholz Specialty Order Items", + "updated": "2026-03-20 00:33:00.780Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-17 13:41:35.668Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-18 13:41:00.000Z", + "id": "7pfz7dyxhwjxfvt", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 13:41:34.535Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4019 - St Elizabeth Change Order Follow up", + "updated": "2026-03-20 00:33:01.051Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-17 13:45:19.281Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-03-19 01:44:00.000Z", + "id": "k3crvjrwpmrb2ey", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 13:45:19.185Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Taco Bell credit", + "updated": "2026-03-20 00:33:01.328Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Check on Status of Job

Randy got back with me. They are ready to start at the end of this week, 3/19-3/20 or the begin of the following week.

3/17-Emailed Chip the estimate to get a quote and lead time on materials. —Sierra does not handle this.

3/18 - Emailed Brian and Bill to get a quote

", + "created": "2026-03-17 14:17:58.633Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-22 14:17:00.000Z", + "id": "879xrabccjuk4xk", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 14:17:57.462Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4709 - Logan Verizon", + "updated": "2026-03-20 00:33:01.611Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-03-17 14:19:09.242Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-22 14:18:00.000Z", + "id": "c9931530pue6jry", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 14:19:08.029Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "3928 - Prayer Center", + "updated": "2026-03-20 19:08:30.149Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Joists lengths needed for order

", + "created": "2026-03-17 15:34:39.310Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-18 15:33:00.000Z", + "id": "4gxjrfyafwvbns8", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-17 15:34:38.056Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4150 - Mt Vernon HS Performing Arts Joists", + "updated": "2026-03-20 19:06:43.352Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Budgetary for a garage

", + "created": "2026-03-17 15:36:15.389Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-18 03:35:00.000Z", + "id": "lobtn8wa4x8flka", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-17 15:36:15.239Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4852 review", + "updated": "2026-03-20 00:33:02.476Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-17 15:37:49.713Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-18 03:37:00.000Z", + "id": "p8558tkr3fngioh", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-17 15:37:49.569Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4835 Kickapoo ceilings review", + "updated": "2026-03-20 00:33:02.777Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Talk to super about the clips setup (S4.3 the second one).

", + "created": "2026-03-17 15:47:56.949Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-18 03:46:00.000Z", + "id": "zfmf0nil83svwan", + "labelTags": [], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "mbx4fsykgq95ny3" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-17 15:47:56.987Z", + "status": 10, + "tags": [ + "@Ben Poland", + "@Timothy Cardoza", + "#4150-mt-vernon-performing-arts-center" + ], + "title": "4150 Veregy - Joist lengths", + "updated": "2026-03-20 19:00:30.149Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Type C drywall on lids - 2 week lead time

", + "created": "2026-03-17 16:58:55.963Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-27 16:13:00.000Z", + "id": "qbks1mjrdnnrtzk", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-03-17 16:58:54.608Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4260 - Fulbright Order Material", + "updated": "2026-03-20 00:33:03.375Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-17 21:08:33.775Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-18 21:07:00.000Z", + "id": "fsmclqtsmz3t9bi", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-17 21:08:33.657Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Bid garage wall job 4854", + "updated": "2026-03-20 00:33:04.260Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-17 21:58:58.120Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-18 21:57:00.000Z", + "id": "q9gs6x0dzf3gjcf", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-17 21:58:56.410Z", + "status": 10, + "tags": [ + "@Ben Poland", + "@Timothy Cardoza" + ], + "title": "Get with Ben on outstanding tasks", + "updated": "2026-03-20 00:33:04.564Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

26ft Scissor Lift from Superior Rents

", + "created": "2026-03-18 14:59:15.648Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-04-09 14:58:00.000Z", + "id": "pvlll83bj4f54ka", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-18 14:59:14.507Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4150-Lift Return for Mt Vernon - 4/13", + "updated": "2026-03-20 00:33:04.871Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Scissor Lift rental from Superior Rents

", + "created": "2026-03-18 15:01:06.071Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-04-15 15:00:00.000Z", + "id": "3xzpysu0jeqtdoj", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-18 15:01:04.931Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4609-Lift Return for Crowder - 4/17", + "updated": "2026-03-20 00:33:05.152Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Took care of 2 submittals. Need more information on the hard stop walls to procure data.

Called site super and he did not know what the hard stop walls were either. Thomas is out of the office today. I will contact him Monday about what/where these are

-Called Thomas Elliott (PM) on clarification on what is being requested 3/18/26, left VM asking him to call me back

", + "created": "2026-03-18 15:04:04.082Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-29 15:13:45.500Z", + "id": "dt3r5jsh23xojeo", + "labelTags": [], + "noteRefs": [], + "priority": 3, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-18 15:04:02.931Z", + "status": 8, + "tags": [ + "@Ben Poland" + ], + "title": "4118 - Cintech Submittals", + "updated": "2026-03-24 15:14:06.449Z", + "updatedBy": "nc23vrshrg0qtdi", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Emailed Bill Mabary for the bill of lading for this delivery

", + "created": "2026-03-18 15:10:36.512Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-19 03:09:00.000Z", + "id": "wt5gr0z4hlfe62o", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-18 15:10:35.364Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4150- Missing 6\" track on Mt Vernon", + "updated": "2026-03-20 00:33:05.726Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Samples Still Needed

  1. Insulation Samples: 1/2\" Zip R, 2\" Rigid Foam, R-11 batt and R-19 batt samples

  2.  FRP Samples: Standard White Pebbled, Marlite Pebbled White, Marlite Symmetrix Smart Seam 12\"x3\" subway tile white with grey grout

  3. Sherwin Williams Color Swatch \"SW 7588 Show Stopper\"

", + "created": "2026-03-18 16:15:32.636Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-21 16:13:00.000Z", + "id": "39e6pir39vwdo1d", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-03-18 16:15:31.416Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4707 - Nabholz Sample Submittals", + "updated": "2026-03-20 12:38:54.774Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-18 18:07:10.530Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-26 21:04:33.624Z", + "id": "a1s5jsksi9pphzm", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-18 18:07:11.249Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Add potentially active jobs to QB", + "updated": "2026-03-23 21:04:58.928Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Krueger wanted a number for a garage demising wall

", + "created": "2026-03-18 19:41:15.283Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-19 07:40:00.000Z", + "id": "qvw6xxy621bqgfj", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-18 19:41:15.130Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Review job 4854", + "updated": "2026-03-20 21:12:49.869Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

I asked Gary for updated plans because Dave’s description of the basement doesn’t match the plans. Also, Gary is managing it again instead of Ozark Mountain. So may need to change that as well so that we bill Gary.

", + "created": "2026-03-18 20:22:06.567Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-19 20:20:00.000Z", + "id": "v7bjpue7zu5bvgw", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-18 20:22:06.442Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Rebid job 3778 with corrected footage after get new plans", + "updated": "2026-03-20 19:51:41.912Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

TM done today. Dad doesn’t want to wait till next week to bill. No idea about the scope or who worked on it or if there’s materials involved. Will need to look into it.

", + "created": "2026-03-18 20:36:52.710Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-20 08:35:00.000Z", + "id": "87y1sp4g1jjfmis", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-18 20:36:52.583Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Find out billing information for 4855", + "updated": "2026-03-20 16:47:04.491Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Get with Rick on what we need.

", + "created": "2026-03-18 21:35:58.128Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-26 09:35:00.000Z", + "id": "zmbk26ddfi9789n", + "labelTags": [], + "noteRefs": [], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-18 21:35:56.520Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4707 - Nabholz Equipment Order", + "updated": "2026-03-20 00:33:07.415Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

aSAP would be good. Try and get it scheduled

", + "created": "2026-03-18 22:10:50.328Z", + "createdBy": "ewdxrba73q68kqj", + "deletedAt": "", + "dueDate": "2026-03-21 22:09:00.000Z", + "id": "q6no9kttqkzljer", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "p66mi0tscgw3sri", + "key": "user-ewdxrba73q68kqj", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-18 22:10:50.218Z", + "status": 0, + "tags": [ + "@Joel Snyder" + ], + "title": "SRC Electrical Chase/Electrical Room", + "updated": "2026-03-20 00:33:07.688Z", + "updatedBy": "", + "user": "ewdxrba73q68kqj" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 14:27:42.605Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-09 14:27:00.000Z", + "id": "mtjxp83wrf8nz0o", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-19 14:27:42.503Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Door closure adjustment wrenches to central assembly", + "updated": "2026-03-20 00:33:07.983Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

GX-120
does not shoot consistently need to fix ( is it worth it?)
hilti could maybe fix need to call or is it something mark can fix?

", + "created": "2026-03-19 14:52:19.071Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-29 14:50:00.000Z", + "id": "h2al3o03sfkn40z", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "shop", + "key": "shop", + "kind": "bucket" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-19 14:52:17.631Z", + "status": 0, + "tags": [ + "@shop" + ], + "title": "fix hilit gx-120", + "updated": "2026-03-20 00:33:08.263Z", + "updatedBy": "", + "user": "" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 15:10:33.865Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-09 15:10:00.000Z", + "id": "e4xgyoaoa1vrzg0", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-19 15:10:33.738Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Price drywall and other material out", + "updated": "2026-03-20 00:33:08.536Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 15:15:02.544Z", + "createdBy": "e9vck6v3pa951wn", + "deletedAt": "", + "dueDate": "2026-04-09 15:14:00.000Z", + "id": "0zh5ngfl7p0waag", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "user-e9vck6v3pa951wn", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-19 15:15:02.406Z", + "status": 0, + "tags": [ + "@Rick Cardoza" + ], + "title": "Passion assembly donation?", + "updated": "2026-03-20 00:33:09.071Z", + "updatedBy": "", + "user": "e9vck6v3pa951wn" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 20:00:46.730Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-04-09 20:00:00.000Z", + "id": "wudh1i0pe3cg5dc", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-19 20:00:46.543Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "4271 review for contract. Turner.", + "updated": "2026-03-20 00:33:09.364Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 21:33:28.988Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-24 21:32:00.000Z", + "id": "unie34qoujc48cn", + "labelTags": [], + "noteRefs": [], + "priority": 6, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-19 21:33:27.363Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4609 - Bring chain and lock to site", + "updated": "2026-03-20 00:33:09.667Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

", + "created": "2026-03-19 21:34:23.985Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-24 21:33:00.000Z", + "id": "kdcojikeg19qxes", + "labelTags": [], + "noteRefs": [], + "priority": 5, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-19 21:34:22.376Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4798 - Victor Pawlick (Follow up on status)", + "updated": "2026-03-24 19:04:56.331Z", + "updatedBy": "nc23vrshrg0qtdi", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 21:36:08.076Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-20 21:35:00.000Z", + "id": "vdh3cooonhaq95u", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "user-nc23vrshrg0qtdi", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-19 21:36:06.451Z", + "status": 5, + "tags": [ + "@Ben Poland" + ], + "title": "4709 - Verizon (Check in shop for needed material)", + "updated": "2026-03-20 17:21:43.878Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-19 23:04:29.786Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 11:03:00.000Z", + "id": "ohywnk2crusicru", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-19 23:04:29.603Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Kickapoo ceilings one more time review", + "updated": "2026-03-23 15:50:39.167Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-19 23:20:24.780Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 11:19:00.000Z", + "id": "a5ueq29p4rmx6ld", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + }, + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-19 23:20:24.632Z", + "status": 10, + "tags": [ + "@Beth Cardoza", + "@Rick Cardoza" + ], + "title": "Job 4848 Review", + "updated": "2026-03-20 21:50:40.994Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-19 23:22:12.094Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 11:21:00.000Z", + "id": "a8r1lxuz3ppltcp", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "user-h9uihmnkwngdu8y", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-19 23:22:11.864Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Estimate job 4847 for Sheila", + "updated": "2026-03-20 18:19:27.997Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

T

", + "created": "2026-03-19 23:53:06.619Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "2026-03-20 01:38:49.349Z", + "dueDate": "2026-03-20 11:52:00.000Z", + "id": "28pxbjglmnl4fyg", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "user-sivbh2pwzyew5lb", + "kind": "user" + }, + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-19 23:53:07.593Z", + "status": 0, + "tags": [ + "@Timothy Cardoza", + "@Employee" + ], + "title": "TEST Tim to Employee", + "updated": "2026-03-20 01:38:49.540Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-19 23:53:52.581Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-20 11:52:00.000Z", + "id": "m3jk7vi6jhnai3y", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "testing-bucket", + "key": "testing-bucket", + "kind": "bucket" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-19 23:53:53.556Z", + "status": 0, + "tags": [ + "@testing-bucket" + ], + "title": "TEST Tim to Bucket", + "updated": "2026-03-20 00:33:11.731Z", + "updatedBy": "", + "user": "" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 00:44:45.216Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-25 00:43:00.000Z", + "id": "7p1pdl5drtzdmfv", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "zdqmiqyfjx3z68d", + "key": "development", + "kind": "bucket" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 00:44:46.177Z", + "status": 0, + "tags": [ + "@Development" + ], + "title": "Sign in solutions", + "updated": "2026-03-20 00:44:45.216Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 00:45:15.683Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-20 12:44:00.000Z", + "id": "lujyxzo4069s1ma", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "zdqmiqyfjx3z68d", + "key": "development", + "kind": "bucket" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 00:45:15.535Z", + "status": 0, + "tags": [ + "@Development" + ], + "title": "HRM scopes", + "updated": "2026-03-20 00:45:15.683Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 00:45:42.424Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-20 12:45:00.000Z", + "id": "4gav3za0hisgaak", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "zdqmiqyfjx3z68d", + "key": "development", + "kind": "bucket" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 00:45:42.230Z", + "status": 0, + "tags": [ + "@Development" + ], + "title": "Create an ai setup that points to all instructions for company", + "updated": "2026-03-20 00:45:42.424Z", + "updatedBy": "", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Ready for us to start on Monday

", + "created": "2026-03-20 15:48:14.297Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 03:47:00.000Z", + "id": "unfm1beybcad9uv", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-20 15:48:14.235Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Review 4851", + "updated": "2026-03-23 15:50:39.175Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Sheila’s bath remodel. Installing FRP, bath/shower unit and flooring

", + "created": "2026-03-20 16:17:44.599Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 04:15:00.000Z", + "id": "zngq94s4tocdj3e", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + }, + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-20 16:17:44.489Z", + "status": 0, + "tags": [ + "@Rick Cardoza", + "@Beth Cardoza" + ], + "title": "Review 4847 Sheila’s bath", + "updated": "2026-03-20 16:17:44.599Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-20 16:46:56.965Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 04:46:00.000Z", + "id": "lj27ktknh2kk2on", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-20 16:46:56.822Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Request for quotes for Fulbright heights", + "updated": "2026-03-20 21:20:26.352Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 17:04:46.544Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-21 05:04:00.000Z", + "id": "wgy1754kwj6okyd", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 17:04:46.705Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "buffer task", + "updated": "2026-03-20 17:04:46.544Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 17:04:51.348Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-21 05:04:00.000Z", + "id": "fyvv7j4urntiukg", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 17:04:51.576Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "buffer task", + "updated": "2026-03-20 17:04:51.348Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 17:05:10.581Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-09-16 17:04:00.000Z", + "id": "aq1trlil8wnqgms", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": { + "lastUncompleted": "2026-03-24T18:31:37.144Z", + "type": "daily" + }, + "shareRefs": [], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 17:05:10.744Z", + "status": 0, + "tags": [], + "title": "buffer task", + "updated": "2026-03-24 18:31:37.286Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 17:05:19.244Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-09-16 17:04:00.000Z", + "id": "2tpfggoav5ahhtl", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 17:05:19.401Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "buffer task", + "updated": "2026-03-23 15:04:16.617Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 17:05:27.700Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-09-16 17:04:00.000Z", + "id": "8cgpn9pdlttvfpr", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 17:05:27.861Z", + "status": 0, + "tags": [ + "@Employee" + ], + "title": "buffer task", + "updated": "2026-03-20 17:05:27.700Z", + "updatedBy": "", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Timothy handling

", + "created": "2026-03-20 18:08:08.571Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 06:07:00.000Z", + "id": "0a1ag7urkvo543p", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-20 18:08:08.431Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Review 4846 Heritage", + "updated": "2026-03-20 22:18:56.900Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-20 19:52:17.029Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 07:51:00.000Z", + "id": "ol4i99vaw8diwu9", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "u9517tx1x3hxrs5", + "key": "rick-cardoza", + "kind": "user" + }, + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 1, + "startDate": "2026-03-20 19:52:16.845Z", + "status": 10, + "tags": [ + "@Rick Cardoza", + "@Beth Cardoza" + ], + "title": "Review 3778 rebid", + "updated": "2026-03-20 21:00:37.895Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-20 20:01:24.945Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-21 08:00:00.000Z", + "id": "obipfks0r9u7uhc", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-20 20:01:23.854Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "4260 - Fulbright Pre-rock CO", + "updated": "2026-03-20 20:55:37.924Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 20:17:00.871Z", + "createdBy": "", + "deletedAt": "", + "dueDate": "2026-03-30 20:16:00.000Z", + "id": "zbj1uyj0mvusqnb", + "labelTags": null, + "noteRefs": null, + "priority": 6, + "recurrence": null, + "shareRefs": null, + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 20:17:00.778Z", + "status": 0, + "tags": [], + "title": "Door strike", + "updated": "2026-03-20 20:17:00.871Z", + "updatedBy": "", + "user": "2lmwfhtdwuexmiv" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Submit By:

", + "created": "2026-03-20 20:35:19.349Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-26 21:03:33.640Z", + "id": "9347spthvpgrpsn", + "labelTags": [ + "Estimate" + ], + "noteRefs": [ + { + "key": "4845-pythian-st-ceilings-colin", + "noteId": "luppfbt04v2wpag" + }, + { + "key": "4845-pythian-st-ceilings-colin", + "noteId": "luppfbt04v2wpag" + } + ], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-20 20:35:19.511Z", + "status": 0, + "tags": [ + "Estimate", + "@Timothy Cardoza", + "#4845-pythian-st-ceilings-colin" + ], + "title": "4845 - Pythian St Ceilings Colin - Estimate", + "updated": "2026-03-23 21:03:52.685Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

test 2

", + "created": "2026-03-20 20:40:18.389Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "2026-03-23 22:03:33.159Z", + "dueDate": "2026-09-19 14:20:52.088Z", + "id": "a355tq3xxfjvdh5", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + }, + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 20:40:18.516Z", + "status": 0, + "tags": [ + "@Timothy Cardoza", + "@Employee" + ], + "title": "Test Task - Tim to Employee collaborative", + "updated": "2026-03-23 22:03:32.567Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

Need for 3-5/8\" studs for above and below the windows and doors. (12) windows, (1) 6' door, (2) 3' doors

", + "created": "2026-03-20 21:09:15.297Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-21 09:06:00.000Z", + "id": "5syyujnucjfdbza", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-20 21:09:14.206Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "4609 - Camp Crowder (More Material Needed)", + "updated": "2026-03-23 21:41:16.266Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "", + "created": "2026-03-20 21:12:39.433Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-21 09:12:00.000Z", + "id": "kuof15h5otwzhjr", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-20 21:12:39.298Z", + "status": 10, + "tags": [ + "@Beth Cardoza" + ], + "title": "Auto forward email", + "updated": "2026-03-20 22:18:26.962Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

Starts in 3 to 4 weeks. So maybe April 15, Ish

", + "created": "2026-03-20 21:29:43.014Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-30 21:28:00.000Z", + "id": "lxvlgrkf0td3t82", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 21:29:42.864Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Update job 4276 Rejda -Essick", + "updated": "2026-03-20 21:29:43.014Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-20 21:47:52.173Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "2026-03-23 23:40:11.022Z", + "dueDate": "2026-03-22 09:47:00.000Z", + "id": "mczpkhl653625ie", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 21:47:52.088Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Ask Chip about thing", + "updated": "2026-03-23 23:40:10.586Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 22:03:08.887Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-30 22:02:00.000Z", + "id": "c843fmyvzhhgqwy", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 22:03:08.733Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Follow up on Kickapoo ceilings", + "updated": "2026-03-20 22:03:08.887Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

", + "created": "2026-03-20 22:16:55.375Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "2026-03-23 13:33:33.140Z", + "dueDate": "2026-03-21 10:16:00.000Z", + "id": "zkgwu8em3k5x3iu", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-20 22:16:55.513Z", + "status": 0, + "tags": [ + "@Ben Poland", + "@Timothy Cardoza" + ], + "title": "4150 Veregy Mezzanine Band Room", + "updated": "2026-03-23 13:33:33.211Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 23:11:56.291Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-30 23:09:00.000Z", + "id": "jf1qioqa948703g", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-20 23:11:56.101Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Job 4321 review old estimate", + "updated": "2026-03-20 23:11:56.291Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 23:13:45.808Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-30 23:13:00.000Z", + "id": "da0sqxxwe4ouiy0", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-20 23:13:45.611Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Review and update job 4263 old estimate", + "updated": "2026-03-20 23:13:45.808Z", + "updatedBy": "", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-20 23:43:50.682Z", + "createdBy": "h9uihmnkwngdu8y", + "deletedAt": "", + "dueDate": "2026-03-30 23:43:00.000Z", + "id": "7fiut18zc8v740d", + "labelTags": [], + "noteRefs": [], + "priority": 8, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ez800j2vp4tp0tk", + "key": "beth-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 4, + "startDate": "2026-03-20 23:43:50.493Z", + "status": 0, + "tags": [ + "@Beth Cardoza" + ], + "title": "Create & Estimate new job - Williams for Essick", + "updated": "2026-03-20 23:43:50.682Z", + "updatedBy": "h9uihmnkwngdu8y", + "user": "h9uihmnkwngdu8y" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

test 2

", + "created": "2026-03-23 16:07:28.717Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "2026-03-23 22:03:28.316Z", + "dueDate": "2026-09-19 14:20:52.088Z", + "id": "t5uaf47oy4f84qs", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 16:07:29.216Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Test Task - Tim to Employee Handoff", + "updated": "2026-03-23 22:03:27.787Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 16:32:32.183Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-09-19 16:32:00.000Z", + "id": "4jzvnxiyu2ucsrb", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 16:32:32.693Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Test Task - Share Employee to Tim Handoff", + "updated": "2026-03-23 16:33:33.571Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "

test

", + "created": "2026-03-23 16:33:07.565Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 22:03:30.867Z", + "dueDate": "2026-09-19 16:32:00.000Z", + "id": "sroadx9hrjifk6p", + "labelTags": [], + "noteRefs": [], + "priority": 1, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 16:33:08.062Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Test Task - Share Employee to Tim Collab", + "updated": "2026-03-23 22:03:30.355Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

READY TO ORDER

Today

", + "created": "2026-03-23 20:32:47.129Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-24 21:47:48.775Z", + "id": "8xvb21a21k83gd1", + "labelTags": [], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "ah0sv025c4riohg" + } + ], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ah0sv025c4riohg", + "key": "4150-mt-vernon-performing-arts-center", + "kind": "note", + "policy": "collaborative" + }, + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user", + "policy": "handoff" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user", + "policy": "collaborative" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 20:32:47.654Z", + "status": 10, + "tags": [ + "#4150-mt-vernon-performing-arts-center", + "@Ben Poland", + "@Timothy Cardoza" + ], + "title": "4150 Veregy Material Order", + "updated": "2026-03-24 19:04:45.623Z", + "updatedBy": "nc23vrshrg0qtdi", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": true, + "content": "

-no response back from Bill —- check with FBM for material

joists, cold rolled channel, shiny 90

", + "created": "2026-03-23 21:53:28.503Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-24 09:41:00.000Z", + "id": "27e1edp9c0hijus", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 21:53:26.895Z", + "status": 10, + "tags": [ + "@Ben Poland" + ], + "title": "Veregy Extra Material Order", + "updated": "2026-03-24 19:04:48.467Z", + "updatedBy": "nc23vrshrg0qtdi", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 21:59:24.010Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 22:03:41.109Z", + "dueDate": "2026-03-24 09:58:00.000Z", + "id": "hvib4hz4nvamb0r", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-23 21:59:24.564Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "test employee to tim collab", + "updated": "2026-03-23 22:03:40.595Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 21:59:47.807Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 22:36:02.345Z", + "dueDate": "2026-03-24 09:59:00.000Z", + "id": "fzjbasn9r86merg", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [], + "sharedWith": null, + "size": 0, + "startDate": "2026-03-23 21:59:48.347Z", + "status": 0, + "tags": [], + "title": "test employee to tim handoff", + "updated": "2026-03-23 22:36:01.884Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 22:37:24.313Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 22:45:48.061Z", + "dueDate": "2026-03-24 10:36:00.000Z", + "id": "amf55nd5ywhc0rc", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ucj2hrr4htezrzo", + "key": "employee", + "kind": "user" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 22:37:24.827Z", + "status": 0, + "tags": [ + "@Employee", + "@Timothy Cardoza" + ], + "title": "Task to note via collab", + "updated": "2026-03-23 22:45:47.490Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 22:37:42.301Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 22:45:45.639Z", + "dueDate": "2026-03-24 10:36:00.000Z", + "id": "w1ce533o8voja8w", + "labelTags": [], + "noteRefs": [ + { + "key": "test-note", + "noteId": "zrpf1wlanzpfltn" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "zrpf1wlanzpfltn", + "key": "test-note", + "kind": "note" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 22:37:42.832Z", + "status": 0, + "tags": [ + "#test-note", + "@Timothy Cardoza" + ], + "title": "Task to note via handoff", + "updated": "2026-03-23 22:45:45.070Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 22:55:58.402Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-24 10:55:00.000Z", + "id": "wk754kcblrx1pxt", + "labelTags": [], + "noteRefs": [ + { + "key": "test-note", + "noteId": "zrpf1wlanzpfltn" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "zrpf1wlanzpfltn", + "key": "test-note", + "kind": "note", + "policy": "handoff" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 22:55:58.946Z", + "status": 0, + "tags": [ + "#test-note" + ], + "title": "Test task employee to note via handoff", + "updated": "2026-03-23 22:55:58.402Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 22:56:16.393Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-24 10:55:00.000Z", + "id": "napobxne0ak37gn", + "labelTags": [], + "noteRefs": [ + { + "key": "test-note", + "noteId": "zrpf1wlanzpfltn" + } + ], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "zrpf1wlanzpfltn", + "key": "test-note", + "kind": "note", + "policy": "collaborative" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 22:56:16.930Z", + "status": 0, + "tags": [ + "#test-note" + ], + "title": "Test task employee to note via collab", + "updated": "2026-03-23 22:56:16.393Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 22:56:36.372Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 23:39:51.184Z", + "dueDate": "2026-03-24 10:56:00.000Z", + "id": "qtos3xoxvhxxe8u", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user", + "policy": "handoff" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 22:56:36.916Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Test task employee to tim via handoff", + "updated": "2026-03-23 23:39:50.697Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 22:56:53.478Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "2026-03-23 23:39:53.350Z", + "dueDate": "2026-03-24 10:56:00.000Z", + "id": "1w3bbufjhoqq3sg", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user", + "policy": "collaborative" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 22:56:54.000Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Test task employee to tim via collab", + "updated": "2026-03-23 23:39:52.858Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 23:00:10.169Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-24 10:59:00.000Z", + "id": "h7njqcljmbwvdcx", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "il3piz7xfklzw3o", + "key": "testing-bucket", + "kind": "bucket", + "policy": "handoff" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 23:00:10.694Z", + "status": 0, + "tags": [ + "@Testing Bucket" + ], + "title": "Test task employee to bucket via handoff", + "updated": "2026-03-23 23:00:10.169Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-23 23:00:29.535Z", + "createdBy": "gk3u91dx0r79fo2", + "deletedAt": "", + "dueDate": "2026-03-24 10:59:00.000Z", + "id": "6o855v9n1r3147h", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "il3piz7xfklzw3o", + "key": "testing-bucket", + "kind": "bucket", + "policy": "collaborative" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-23 23:00:30.064Z", + "status": 0, + "tags": [ + "@Testing Bucket" + ], + "title": "Test task employee to bucket via collab", + "updated": "2026-03-23 23:00:29.535Z", + "updatedBy": "gk3u91dx0r79fo2", + "user": "gk3u91dx0r79fo2" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-24 12:10:00.674Z", + "createdBy": "nc23vrshrg0qtdi", + "deletedAt": "", + "dueDate": "2026-03-25 00:09:00.000Z", + "id": "xoblhxmejlfrhs6", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "5jdlsa7ebt1jd3i", + "key": "ben-poland", + "kind": "user" + } + ], + "sharedWith": null, + "size": 2, + "startDate": "2026-03-24 12:10:00.585Z", + "status": 0, + "tags": [ + "@Ben Poland" + ], + "title": "Screws for Veregy, Phillips", + "updated": "2026-03-24 12:10:00.674Z", + "updatedBy": "", + "user": "nc23vrshrg0qtdi" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-24 17:42:02.630Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-25 05:41:00.000Z", + "id": "r9303qb1ejgfoaw", + "labelTags": [], + "noteRefs": [ + { + "key": "4150-mt-vernon-performing-arts-center", + "noteId": "ah0sv025c4riohg" + } + ], + "priority": 9, + "recurrence": null, + "shareRefs": [ + { + "contextId": "ah0sv025c4riohg", + "key": "4150-mt-vernon-performing-arts-center", + "kind": "note", + "policy": "collaborative" + }, + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user", + "policy": "collaborative" + } + ], + "sharedWith": null, + "size": 5, + "startDate": "2026-03-24 17:42:02.417Z", + "status": 0, + "tags": [ + "#4150-mt-vernon-performing-arts-center", + "@Timothy Cardoza" + ], + "title": "4150 Veregy Redo Full Takeoff", + "updated": "2026-03-24 17:42:02.630Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-24 18:13:50.736Z", + "createdBy": "1hbif9dbqng86h9", + "deletedAt": "", + "dueDate": "2026-03-25 18:13:00.000Z", + "id": "6vumi3zvm1136ka", + "labelTags": [], + "noteRefs": [], + "priority": 7, + "recurrence": null, + "shareRefs": [ + { + "contextId": "73z3dp9b6alhbl4", + "key": "alfonso-ewing", + "kind": "user" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-24 18:13:50.536Z", + "status": 0, + "tags": [ + "@Alfonso Ewing" + ], + "title": "My News", + "updated": "2026-03-24 18:13:50.736Z", + "updatedBy": "1hbif9dbqng86h9", + "user": "1hbif9dbqng86h9" + }, + { + "attachments": [], + "collectionId": "pbc_153715397", + "collectionName": "TasGrid", + "completed": false, + "content": "", + "created": "2026-03-24 21:52:57.589Z", + "createdBy": "sivbh2pwzyew5lb", + "deletedAt": "", + "dueDate": "2026-03-25 21:52:00.000Z", + "id": "zvtc0cogmsv18i0", + "labelTags": [], + "noteRefs": [], + "priority": 10, + "recurrence": null, + "shareRefs": [ + { + "contextId": "a3nd0f8tpipjc3e", + "key": "timothy-cardoza", + "kind": "user", + "policy": "collaborative" + } + ], + "sharedWith": null, + "size": 3, + "startDate": "2026-03-24 21:52:57.495Z", + "status": 0, + "tags": [ + "@Timothy Cardoza" + ], + "title": "Sheila response (get with dad)", + "updated": "2026-03-24 21:52:57.589Z", + "updatedBy": "sivbh2pwzyew5lb", + "user": "sivbh2pwzyew5lb" + } +] \ No newline at end of file diff --git a/migration-output/context-ownership-2026-03-24T22-58-27-823Z/users.json b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/users.json new file mode 100644 index 0000000..d18bafb --- /dev/null +++ b/migration-output/context-ownership-2026-03-24T22-58-27-823Z/users.json @@ -0,0 +1,82 @@ +[ + { + "email": "it@cardoza.construction", + "id": "oz8sxsyg8hznqa6", + "name": "IT" + }, + { + "email": "pbserviceupdate@cardoza.construction", + "id": "x6hu9mgawxzfvk6", + "name": "PBServiceWorker" + }, + { + "email": "eewing@cardoza.construction", + "id": "2lmwfhtdwuexmiv", + "name": "Ezekiel Ewing" + }, + { + "email": "aewing@cardoza.construction", + "id": "1hbif9dbqng86h9", + "name": "Alfonso Ewing" + }, + { + "email": "hmahan@cardoza.construction", + "id": "fdve3i2gop4huym", + "name": "Heidi Mahan" + }, + { + "email": "bcardoza@cardoza.construction", + "id": "h9uihmnkwngdu8y", + "name": "Beth Cardoza" + }, + { + "email": "rcardoza@cardoza.construction", + "id": "e9vck6v3pa951wn", + "name": "Rick Cardoza" + }, + { + "email": "dcardoza@cardoza.construction", + "id": "rrjoxd2wewmlrwy", + "name": "David Cardoza" + }, + { + "email": "tcardoza@cardoza.construction", + "id": "sivbh2pwzyew5lb", + "name": "Timothy Cardoza" + }, + { + "email": "employee@cardoza.construction", + "id": "gk3u91dx0r79fo2", + "name": "Employee" + }, + { + "email": "cabrams@cardoza.construction", + "id": "mchpsyvh0wrcxv6", + "name": "Cortney Abrams" + }, + { + "email": "jsnyder@cardoza.construction", + "id": "ewdxrba73q68kqj", + "name": "Joel Snyder" + }, + { + "email": "drader@cardoza.construction", + "id": "s1gwhknxaww38i3", + "name": "David Rader" + }, + { + "email": "mreds01@aol.com", + "id": "i73wk8r7f2evbew", + "name": "Eddie" + }, + { + "email": "bpoland@cardoza.construction", + "id": "nc23vrshrg0qtdi", + "name": "Ben Poland" + }, + { + "email": "markhuber66@yahoo.com", + "id": "naztc2sg4b4fgfc", + "name": "Mark Huber" + } +] \ No newline at end of file diff --git a/migration-output/context-ownership-2026-03-24T22-59-08-457Z/context-ownership-report.json b/migration-output/context-ownership-2026-03-24T22-59-08-457Z/context-ownership-report.json new file mode 100644 index 0000000..5717988 --- /dev/null +++ b/migration-output/context-ownership-2026-03-24T22-59-08-457Z/context-ownership-report.json @@ -0,0 +1,266 @@ +{ + "summary": { + "touched": 28, + "personalRefsAdded": 7, + "personalRefsRemoved": 0, + "ambiguousMultiPersonal": 44, + "failures": 0 + }, + "tasks": [ + { + "id": "z6s8kfpek0wowmp", + "title": "4150 Performing Arts - Material Lengths to Bill Mabary - see email", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb", + "nc23vrshrg0qtdi" + ] + }, + { + "id": "hnn0ruj5kvcj7mi", + "title": "4150 Performing Arts - Acoustical", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb", + "nc23vrshrg0qtdi" + ] + }, + { + "id": "ij2h8laauwxffyu", + "title": "4118 - Estes new wall CO Awaiting Conf and Sign", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb", + "nc23vrshrg0qtdi" + ] + }, + { + "id": "yz34jlzc29tq3ve", + "title": "4150 Performing Arts - Framing Shop Drawings", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb", + "nc23vrshrg0qtdi" + ] + }, + { + "id": "9wu0icmgy8z0dpn", + "title": "4150 Acoustic CO pending response - Performing Arts Center", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb", + "nc23vrshrg0qtdi" + ] + }, + { + "id": "lq7rzmxv7wtxdx0", + "title": "4118 Estes CO - Windows and Server Room Plywood", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + }, + { + "id": "5cs9kcfqkavgy5y", + "title": "Check in with Dad about further contact Kickapoo Ceilings", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb", + "h9uihmnkwngdu8y" + ] + }, + { + "id": "59apl48j7se00cw", + "title": "reorganize metal & label", + "ownerIdBefore": "s1gwhknxaww38i3", + "ownerIdAfter": "s1gwhknxaww38i3", + "personalUserIds": [ + "s1gwhknxaww38i3" + ] + }, + { + "id": "5vn3zkn7wzaldsk", + "title": "test", + "ownerIdBefore": "gk3u91dx0r79fo2", + "ownerIdAfter": "gk3u91dx0r79fo2", + "personalUserIds": [ + "gk3u91dx0r79fo2" + ] + }, + { + "id": "p2ut35nntf8s5on", + "title": "4841 - Andys HQ DD- Estimate", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + }, + { + "id": "kn1nxbmwgz7pyz9", + "title": "Equipment lists", + "ownerIdBefore": "nc23vrshrg0qtdi", + "ownerIdAfter": "nc23vrshrg0qtdi", + "personalUserIds": [ + "nc23vrshrg0qtdi" + ] + }, + { + "id": "yqffg2agv88ggjo", + "title": "4118 - Estes - Lead Time Material Orders", + "ownerIdBefore": "nc23vrshrg0qtdi", + "ownerIdAfter": "nc23vrshrg0qtdi", + "personalUserIds": [ + "nc23vrshrg0qtdi" + ] + }, + { + "id": "n9tb1zd2qovqycz", + "title": "4850 - Intercounty Electric Rolla - Estimate", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + }, + { + "id": "5rsy930ttk14kdm", + "title": "4850 - Intercounty Electric Rolla - Estimate (Copy)", + "ownerIdBefore": "e9vck6v3pa951wn", + "ownerIdAfter": "e9vck6v3pa951wn", + "personalUserIds": [ + "e9vck6v3pa951wn" + ] + }, + { + "id": "zfmf0nil83svwan", + "title": "4150 Veregy - Joist lengths", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "nc23vrshrg0qtdi", + "sivbh2pwzyew5lb" + ] + }, + { + "id": "h2al3o03sfkn40z", + "title": "fix hilit gx-120", + "ownerIdBefore": null, + "ownerIdAfter": null, + "personalUserIds": [] + }, + { + "id": "m3jk7vi6jhnai3y", + "title": "TEST Tim to Bucket", + "ownerIdBefore": null, + "ownerIdAfter": null, + "personalUserIds": [] + }, + { + "id": "aq1trlil8wnqgms", + "title": "buffer task", + "ownerIdBefore": "gk3u91dx0r79fo2", + "ownerIdAfter": "gk3u91dx0r79fo2", + "personalUserIds": [ + "gk3u91dx0r79fo2" + ] + }, + { + "id": "zbj1uyj0mvusqnb", + "title": "Door strike", + "ownerIdBefore": "2lmwfhtdwuexmiv", + "ownerIdAfter": "2lmwfhtdwuexmiv", + "personalUserIds": [ + "2lmwfhtdwuexmiv" + ] + }, + { + "id": "9347spthvpgrpsn", + "title": "4845 - Pythian St Ceilings Colin - Estimate", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + }, + { + "id": "8xvb21a21k83gd1", + "title": "4150 Veregy Material Order", + "ownerIdBefore": "nc23vrshrg0qtdi", + "ownerIdAfter": "nc23vrshrg0qtdi", + "personalUserIds": [ + "nc23vrshrg0qtdi", + "sivbh2pwzyew5lb" + ] + }, + { + "id": "fzjbasn9r86merg", + "title": "test employee to tim handoff", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + }, + { + "id": "w1ce533o8voja8w", + "title": "Task to note via handoff", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + }, + { + "id": "wk754kcblrx1pxt", + "title": "Test task employee to note via handoff", + "ownerIdBefore": "gk3u91dx0r79fo2", + "ownerIdAfter": "gk3u91dx0r79fo2", + "personalUserIds": [] + }, + { + "id": "napobxne0ak37gn", + "title": "Test task employee to note via collab", + "ownerIdBefore": "gk3u91dx0r79fo2", + "ownerIdAfter": "gk3u91dx0r79fo2", + "personalUserIds": [ + "gk3u91dx0r79fo2" + ] + }, + { + "id": "1w3bbufjhoqq3sg", + "title": "Test task employee to tim via collab", + "ownerIdBefore": "gk3u91dx0r79fo2", + "ownerIdAfter": "gk3u91dx0r79fo2", + "personalUserIds": [ + "gk3u91dx0r79fo2", + "sivbh2pwzyew5lb" + ] + }, + { + "id": "6o855v9n1r3147h", + "title": "Test task employee to bucket via collab", + "ownerIdBefore": "gk3u91dx0r79fo2", + "ownerIdAfter": "gk3u91dx0r79fo2", + "personalUserIds": [ + "gk3u91dx0r79fo2" + ] + }, + { + "id": "r9303qb1ejgfoaw", + "title": "4150 Veregy Redo Full Takeoff", + "ownerIdBefore": "sivbh2pwzyew5lb", + "ownerIdAfter": "sivbh2pwzyew5lb", + "personalUserIds": [ + "sivbh2pwzyew5lb" + ] + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 155cf66..54d5486 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "dev:devdata": "vite --host 0.0.0.0 --port 4001 --mode devdata", "build": "tsc -b && vite build", "build:devdata": "tsc -b && vite build --mode devdata", + "migration:context-ownership:backup": "bun run scripts/context-ownership-migration.ts backup", + "migration:context-ownership:report": "bun run scripts/context-ownership-migration.ts report", + "migration:context-ownership:migrate": "bun run scripts/context-ownership-migration.ts migrate", "serve": "vite preview --host 0.0.0.0 --port 4000", "serve:devdata": "vite preview --host 0.0.0.0 --port 4002 --mode devdata", "---PM2 COMMANDS---": "------------------", diff --git a/scripts/context-ownership-migration.ts b/scripts/context-ownership-migration.ts new file mode 100644 index 0000000..d820b60 --- /dev/null +++ b/scripts/context-ownership-migration.ts @@ -0,0 +1,596 @@ +import fs from "node:fs/promises"; +import path from "node:path"; + +type SharePolicy = "collaborative" | "handoff"; +type ShareKind = "user" | "bucket" | "note"; + +type ShareContext = { + id: string; + key: string; + displayName: string; + kind: ShareKind; + policy: SharePolicy; + targetUserId?: string | null; + deletedAt?: string | null; +}; + +type NoteRecord = { + id: string; + title: string; + key: string; + tags: string[]; + user: string; + tasks: string[]; +}; + +type TaskShareRef = { + contextId: string; + key: string; + kind: ShareKind; + policy?: SharePolicy; +}; + +type NoteRef = { + noteId: string; + key: string; +}; + +type ParsedTag = + | { kind: "share"; raw: string; key: string; display: string } + | { kind: "note"; raw: string; key: string; display: string } + | { kind: "label"; raw: string; key: string; display: string }; + +type TaskRecord = { + id: string; + title: string; + tags?: string[]; + labelTags?: string[]; + shareRefs?: TaskShareRef[]; + noteRefs?: NoteRef[]; + createdBy?: string | null; + user?: string | string[] | null; +}; + +type Summary = { + touched: number; + personalRefsAdded: number; + personalRefsRemoved: number; + ambiguousMultiPersonal: number; + failures: number; +}; + +const mode = (process.argv[2] || "report").toLowerCase(); +if (!["backup", "report", "migrate"].includes(mode)) { + throw new Error("Usage: bun run scripts/context-ownership-migration.ts [backup|report|migrate]"); +} + +const dataMode = (process.env.TASGRID_DATA_MODE || "prod").toLowerCase() === "dev" ? "dev" : "prod"; +const withDataSuffix = (base: string) => dataMode === "dev" ? `${base}_Dev` : base; +const TASGRID_COLLECTION = withDataSuffix("TasGrid"); +const CONTEXTS_COLLECTION = withDataSuffix("TasGrid_Contexts"); +const NOTES_COLLECTION = withDataSuffix("TasGrid_Notes"); +const NOTE_HANDOFF_POLICY_TAG = "__note_policy_handoff__"; + +const POCKETBASE_URL = process.env.POCKETBASE_URL || "https://pocketbase.ccllc.pro"; +let authToken = ""; + +const normalizeWhitespace = (value: string) => value.trim().replace(/\s+/g, " "); +const normalizeKey = (value: string) => + normalizeWhitespace(value) + .toLowerCase() + .replace(/^[@#]+/, "") + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-+|-+$/g, ""); + +const buildShareTag = (displayName: string) => `@${normalizeWhitespace(displayName)}`; +const buildNoteTag = (value: string) => `#${normalizeWhitespace(value)}`; +const buildUserContextKey = (userId: string) => `user-${userId}`; +const unwrapRelationId = (value: unknown): string | null => { + if (typeof value === "string") return value || null; + if (Array.isArray(value)) { + const first = value[0]; + return typeof first === "string" ? first : null; + } + return null; +}; + +const parseTag = (rawTag: string): ParsedTag => { + const raw = normalizeWhitespace(rawTag); + const prefix = raw[0]; + const display = prefix === "@" || prefix === "#" ? raw.slice(1).trim() : raw; + const key = normalizeKey(display); + + if (prefix === "@") return { kind: "share", raw, key, display }; + if (prefix === "#") return { kind: "note", raw, key, display }; + return { kind: "label", raw, key, display }; +}; + +const parseTags = (rawTags: string[] | undefined | null) => + (rawTags || []).map(parseTag).filter(tag => !!tag.display); + +const dedupeShareRefs = (refs: TaskShareRef[]) => { + const seen = new Set(); + return refs.filter(ref => { + const key = `${ref.kind}:${ref.contextId}:${ref.key}`; + if (seen.has(key)) return false; + seen.add(key); + return true; + }); +}; + +const dedupeNoteRefs = (refs: NoteRef[]) => { + const seen = new Set(); + return refs.filter(ref => { + const key = `${ref.noteId}:${ref.key}`; + if (seen.has(key)) return false; + seen.add(key); + return true; + }); +}; + +const DEFAULT_SHARE_POLICY_BY_KIND: Record = { + user: "collaborative", + bucket: "handoff", + note: "handoff" +}; + +const getNoteSharePolicy = (note: Pick | undefined): SharePolicy => + note?.tags?.includes(NOTE_HANDOFF_POLICY_TAG) ? "handoff" : "collaborative"; + +const relationId = (record: any, field: string) => unwrapRelationId(record?.[field]); + +const createOutputDir = async () => { + const outputDir = path.resolve(process.cwd(), "migration-output", `context-ownership-${new Date().toISOString().replace(/[:.]/g, "-")}`); + await fs.mkdir(outputDir, { recursive: true }); + return outputDir; +}; + +const tryAuthEndpoint = async (pathname: string, email: string, password: string) => { + const response = await fetch(`${POCKETBASE_URL}${pathname}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ identity: email, password }) + }); + + if (!response.ok) { + return { + ok: false as const, + status: response.status, + body: await response.text(), + pathname + }; + } + + return { + ok: true as const, + payload: await response.json(), + pathname + }; +}; + +const auth = async () => { + const email = process.env.PB_ADMIN_EMAIL || process.env.PB_EMAIL; + const password = process.env.PB_ADMIN_PASSWORD || process.env.PB_PASSWORD; + if (!email || !password) { + throw new Error("Set PB_ADMIN_EMAIL/PB_ADMIN_PASSWORD (or PB_EMAIL/PB_PASSWORD) before running this script."); + } + + const authAttempts = [ + await tryAuthEndpoint("/api/collections/_superusers/auth-with-password", email, password), + await tryAuthEndpoint("/api/admins/auth-with-password", email, password) + ]; + + const success = authAttempts.find(attempt => attempt.ok); + if (!success) { + const details = authAttempts + .map(attempt => `${attempt.pathname}: ${attempt.status} ${attempt.body}`) + .join(" | "); + throw new Error(`PocketBase superuser/admin auth failed. ${details}`); + } + + const payload = success.payload; + authToken = payload.token; +}; + +const request = async (pathname: string, init: RequestInit = {}) => { + const response = await fetch(`${POCKETBASE_URL}${pathname}`, { + ...init, + headers: { + "Content-Type": "application/json", + ...(authToken ? { Authorization: authToken } : {}), + ...(init.headers || {}) + } + }); + + if (!response.ok) { + throw new Error(`${response.status} ${response.statusText}: ${await response.text()}`); + } + + if (response.status === 204) { + return null; + } + + return response.json(); +}; + +const getFullList = async (collection: string, query: Record = {}) => { + const items: any[] = []; + let page = 1; + + while (true) { + const search = new URLSearchParams({ perPage: "500", page: String(page), ...query }); + const payload = await request(`/api/collections/${collection}/records?${search.toString()}`); + items.push(...(payload.items || [])); + if (!payload.totalPages || page >= payload.totalPages) { + break; + } + page += 1; + } + + return items; +}; + +const createRecord = (collection: string, body: Record) => + request(`/api/collections/${collection}/records`, { + method: "POST", + body: JSON.stringify(body) + }); + +const updateRecord = (collection: string, id: string, body: Record) => + request(`/api/collections/${collection}/records/${id}`, { + method: "PATCH", + body: JSON.stringify(body) + }); + +const syncUserContexts = async (users: any[], contexts: ShareContext[]) => { + const nextContexts = [...contexts]; + for (const user of users) { + const displayName = user.name || user.email; + const existing = nextContexts.find(context => + context.kind === "user" && + context.targetUserId === user.id && + !context.deletedAt + ); + if (!displayName || existing) continue; + + const created = await createRecord(CONTEXTS_COLLECTION, { + key: buildUserContextKey(user.id), + displayName, + kind: "user", + policy: "collaborative", + targetUserId: user.id + }); + + nextContexts.push({ + id: created.id, + key: created.key, + displayName: created.displayName, + kind: created.kind, + policy: "collaborative", + targetUserId: relationId(created, "targetUserId"), + deletedAt: created.deletedAt || null + }); + } + return nextContexts; +}; + +const buildNoteLinkMap = (notes: NoteRecord[]) => { + const links = new Map(); + for (const note of notes) { + for (const taskId of note.tasks || []) { + const existing = links.get(taskId) || []; + existing.push({ noteId: note.id, key: note.key }); + links.set(taskId, existing); + } + } + return links; +}; + +const main = async () => { + await auth(); + + const [users, rawContexts, rawNotes, rawTasks] = await Promise.all([ + getFullList("users", { fields: "id,name,email" }), + getFullList(CONTEXTS_COLLECTION), + getFullList(NOTES_COLLECTION), + getFullList(TASGRID_COLLECTION) + ]); + + const contexts = mode === "migrate" + ? await syncUserContexts(users, rawContexts.map((record: any) => ({ + id: record.id, + key: record.key, + displayName: record.displayName, + kind: record.kind || "bucket", + policy: (record.policy || (record.kind === "user" ? "collaborative" : "handoff")) as SharePolicy, + targetUserId: relationId(record, "targetUserId"), + deletedAt: record.deletedAt || null + }))) + : rawContexts.map((record: any) => ({ + id: record.id, + key: record.key, + displayName: record.displayName, + kind: record.kind || "bucket", + policy: (record.policy || (record.kind === "user" ? "collaborative" : "handoff")) as SharePolicy, + targetUserId: relationId(record, "targetUserId"), + deletedAt: record.deletedAt || null + })); + + const notes = rawNotes.map((record: any) => ({ + id: record.id, + title: record.title, + key: record.key || normalizeKey(record.title || record.id), + tags: Array.isArray(record.tags) ? record.tags.filter(Boolean) : [], + user: relationId(record, "user") || "", + tasks: Array.isArray(record.tasks) ? record.tasks.filter(Boolean) : [] + })) satisfies NoteRecord[]; + + const contextById = new Map(contexts.map(context => [context.id, context])); + const ownerContextByUserId = new Map( + contexts + .filter(context => context.kind === "user" && !!context.targetUserId && !context.deletedAt) + .map(context => [context.targetUserId as string, context] as const) + ); + const noteById = new Map(notes.map(note => [note.id, note])); + const noteByKey = new Map(notes.map(note => [note.key, note])); + const noteLinksByTaskId = buildNoteLinkMap(notes); + + const getContextByRef = (ref: TaskShareRef) => { + if (ref.kind === "note") { + const note = noteById.get(ref.contextId) || noteByKey.get(ref.key); + return note + ? { + id: note.id, + key: note.key, + displayName: note.key || note.title, + kind: "note" as const, + policy: getNoteSharePolicy(note), + targetUserId: note.user + } + : null; + } + + return contextById.get(ref.contextId) + || contexts.find(context => !context.deletedAt && context.key === ref.key && context.kind === ref.kind) + || contexts.find(context => !context.deletedAt && normalizeKey(context.displayName) === ref.key) + || null; + }; + + const getTaskSharePolicy = (ref: TaskShareRef): SharePolicy => { + if (ref.kind === "note") { + if (ref.policy) return ref.policy; + const note = noteById.get(ref.contextId) || noteByKey.get(ref.key); + return getNoteSharePolicy(note); + } + const context = getContextByRef(ref); + if (ref.policy) return ref.policy; + return context?.policy || DEFAULT_SHARE_POLICY_BY_KIND[ref.kind]; + }; + + const getPersonalContextUserIdFromRef = (ref: TaskShareRef) => { + if (ref.kind !== "user") return null; + const context = getContextByRef(ref); + if (context?.targetUserId) return context.targetUserId; + if (ref.key.startsWith("user-")) return ref.key.replace(/^user-/, "") || null; + return null; + }; + + const getTaskPersonalRefs = (refs: TaskShareRef[]) => + refs.filter(ref => ref.kind === "user" && !!getPersonalContextUserIdFromRef(ref)); + + const resolveMirroredOwnerId = (currentOwnerId: string | null, refs: TaskShareRef[], preferredOwnerId?: string | null) => { + const personalUserIds = [...new Set( + refs + .map(ref => getPersonalContextUserIdFromRef(ref)) + .filter((value): value is string => !!value) + )]; + + if (personalUserIds.length === 1) return personalUserIds[0]; + if (personalUserIds.length > 1 && preferredOwnerId && personalUserIds.includes(preferredOwnerId)) return preferredOwnerId; + return currentOwnerId || null; + }; + + const buildTaskTags = (labelTags: string[], shareRefs: TaskShareRef[], noteRefs: NoteRef[], favoriteTag?: string) => { + const tags = [ + ...labelTags, + ...shareRefs.map(ref => { + const context = getContextByRef(ref); + if (ref.kind === "note") return buildNoteTag(context?.key || ref.key); + if (context?.displayName) return buildShareTag(context.displayName); + if (ref.kind === "user" && ref.key.startsWith("user-")) return null; + return buildShareTag(ref.key); + }), + ...noteRefs.map(ref => { + const note = noteById.get(ref.noteId) || noteByKey.get(ref.key); + return buildNoteTag(note?.key || ref.key); + }) + ]; + + if (favoriteTag && !tags.includes(favoriteTag)) tags.push(favoriteTag); + return [...new Set(tags.filter((value): value is string => !!value))]; + }; + + const summary: Summary = { + touched: 0, + personalRefsAdded: 0, + personalRefsRemoved: 0, + ambiguousMultiPersonal: 0, + failures: 0 + }; + + const reportRows: any[] = []; + + for (const record of rawTasks as TaskRecord[]) { + if ((record.tags || []).includes("__template__")) continue; + + try { + const legacyTags = record.tags || []; + const parsedTags = parseTags(legacyTags).filter(tag => tag.raw !== "__template__"); + const shareRefs = Array.isArray(record.shareRefs) + ? record.shareRefs.map(ref => ({ + contextId: ref.contextId, + key: ref.key, + kind: ref.kind, + policy: ref.policy + })) + : parsedTags + .filter((tag): tag is Extract<(typeof parsedTags)[number], { kind: "share" | "note" }> => tag.kind === "share" || tag.kind === "note") + .map(tag => { + if (tag.kind === "note") { + const note = noteByKey.get(tag.key); + return { + contextId: note?.id || tag.key, + key: tag.key, + kind: "note" as const + }; + } + + const context = contexts.find(existing => + !existing.deletedAt && ( + existing.key === tag.key || + normalizeKey(existing.displayName) === tag.key || + buildShareTag(existing.displayName).toLowerCase() === tag.raw.toLowerCase() + ) + ); + return { + contextId: context?.id || tag.key, + key: tag.key, + kind: (context?.kind || "bucket") as "user" | "bucket", + policy: context?.policy + }; + }); + + const noteRefs = dedupeNoteRefs([ + ...(Array.isArray(record.noteRefs) + ? record.noteRefs.map(ref => ({ noteId: ref.noteId, key: ref.key })) + : parsedTags + .filter(tag => tag.kind === "note") + .map(tag => { + const note = noteByKey.get(tag.key); + return { + noteId: note?.id || tag.key, + key: tag.key + }; + })), + ...(noteLinksByTaskId.get(record.id) || []) + ]); + + let nextShareRefs = dedupeShareRefs([ + ...shareRefs, + ...noteRefs.map(ref => ({ + contextId: ref.noteId, + key: ref.key, + kind: "note" as const, + policy: shareRefs.find(existing => existing.kind === "note" && (existing.contextId === ref.noteId || existing.key === ref.key))?.policy + })) + ]); + + const ownerId = unwrapRelationId(record.user); + const ownerContext = ownerId ? ownerContextByUserId.get(ownerId) : undefined; + const shouldRemoveOwnerPersonalRef = !!ownerId && + getTaskPersonalRefs(nextShareRefs).length === 0 && + nextShareRefs.some(ref => ref.kind !== "user" && getTaskSharePolicy(ref) === "handoff"); + + if (ownerContext) { + const matchesOwnerContext = (ref: TaskShareRef) => + ref.kind === "user" && ( + ref.contextId === ownerContext.id || + ref.key === ownerContext.key || + normalizeKey(ownerContext.displayName) === ref.key + ); + + if (shouldRemoveOwnerPersonalRef) { + const before = nextShareRefs.length; + nextShareRefs = nextShareRefs.filter(ref => !matchesOwnerContext(ref)); + if (before !== nextShareRefs.length) { + summary.personalRefsRemoved += before - nextShareRefs.length; + } + } else if (!nextShareRefs.some(matchesOwnerContext)) { + nextShareRefs = [ + { + contextId: ownerContext.id, + key: ownerContext.key, + kind: "user" as const, + policy: ownerContext.policy + }, + ...nextShareRefs + ]; + summary.personalRefsAdded += 1; + } + } + + nextShareRefs = dedupeShareRefs(nextShareRefs); + + const labelTags = Array.isArray(record.labelTags) + ? record.labelTags + : parsedTags.filter(tag => tag.kind === "label").map(tag => tag.display); + const favoriteTag = legacyTags.find(tag => tag.endsWith("_favorite__")); + const nextTags = buildTaskTags(labelTags, nextShareRefs, noteRefs, favoriteTag); + const nextOwnerId = resolveMirroredOwnerId(ownerId, nextShareRefs, ownerId); + const personalUserIds = [...new Set(nextShareRefs.map(ref => getPersonalContextUserIdFromRef(ref)).filter((value): value is string => !!value))]; + if (personalUserIds.length > 1) { + summary.ambiguousMultiPersonal += 1; + } + + const changed = + JSON.stringify(nextShareRefs) !== JSON.stringify(record.shareRefs || []) || + JSON.stringify(noteRefs) !== JSON.stringify(record.noteRefs || []) || + JSON.stringify(nextTags) !== JSON.stringify(record.tags || []) || + nextOwnerId !== ownerId; + + if (changed) { + summary.touched += 1; + reportRows.push({ + id: record.id, + title: record.title, + ownerIdBefore: ownerId, + ownerIdAfter: nextOwnerId, + personalUserIds + }); + + if (mode === "migrate") { + await updateRecord(TASGRID_COLLECTION, record.id, { + user: nextOwnerId, + tags: nextTags, + labelTags, + shareRefs: nextShareRefs, + noteRefs + }); + } + } + } catch (error) { + summary.failures += 1; + reportRows.push({ + id: record.id, + title: record.title, + error: error instanceof Error ? error.message : String(error) + }); + } + } + + if (mode === "backup") { + const outputDir = await createOutputDir(); + await Promise.all([ + fs.writeFile(path.join(outputDir, "users.json"), JSON.stringify(users, null, 2)), + fs.writeFile(path.join(outputDir, "contexts.json"), JSON.stringify(contexts, null, 2)), + fs.writeFile(path.join(outputDir, "notes.json"), JSON.stringify(rawNotes, null, 2)), + fs.writeFile(path.join(outputDir, "tasks.json"), JSON.stringify(rawTasks, null, 2)) + ]); + console.log(JSON.stringify({ mode, dataMode, outputDir, counts: { users: users.length, contexts: contexts.length, notes: rawNotes.length, tasks: rawTasks.length } }, null, 2)); + return; + } + + if (mode === "report") { + const outputDir = await createOutputDir(); + await fs.writeFile(path.join(outputDir, "context-ownership-report.json"), JSON.stringify({ summary, tasks: reportRows }, null, 2)); + console.log(JSON.stringify({ mode, dataMode, outputDir, summary }, null, 2)); + return; + } + + console.log(JSON.stringify({ mode, dataMode, summary }, null, 2)); +}; + +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/src/store/index.ts b/src/store/index.ts index 063b81e..5c2bda9 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -217,8 +217,9 @@ export const startContextPolling = () => { try { // Fetch only recent updates (last 30s) to minimize payload const timeStr = new Date(Date.now() - 30000).toISOString(); + const contextFilter = buildPersonalAccessFilter([personalOrUserId]); const records = await pb.collection(TASGRID_COLLECTION).getFullList({ - filter: `${relationFilter("user", personalOrUserId)} && updated >= "${timeStr}"`, + filter: `${contextFilter} && updated >= "${timeStr}"`, sort: '-updated', fields: getTaskListFields(), requestKey: 'context-poll' @@ -286,6 +287,7 @@ interface ScopedTaskgridPrefs { collapsedUntilUpdatedTasks?: Record; migratedStructuredTagsV2?: boolean; migratedPersonalContextRefsV1?: boolean; + migratedContextOwnershipV2?: boolean; lastCompletedTaskCleanupDate?: string; // YYYY-MM-DD, per user/environment } @@ -558,14 +560,14 @@ export const getNoteSharePolicy = (note: Pick | null | undefined): note?.tags?.includes(NOTE_HANDOFF_POLICY_TAG) ? "handoff" : "collaborative"; export const getTaskSharePolicy = (ref: Pick): "collaborative" | "handoff" => { - if (ref.policy) return ref.policy; - if (ref.kind === "note") { + if (ref.policy) return ref.policy; const note = store.notes.find(existing => existing.id === ref.contextId || existing.key === ref.key); return getNoteSharePolicy(note); } const context = getContextByRef(ref as TaskShareRef); + if (ref.policy) return ref.policy; if (context?.policy) return context.policy; return DEFAULT_SHARE_POLICY_BY_KIND[ref.kind]; @@ -868,6 +870,106 @@ const getPersonalContext = (userId = pb.authStore.model?.id) => ) || null : null; +const getCurrentUserDisplayName = () => + (pb.authStore.model?.name || pb.authStore.model?.email || "").trim() || null; + +const getPersonalContextTag = (userId = pb.authStore.model?.id) => { + const context = getPersonalContext(userId); + if (context?.displayName) { + return buildShareTag(context.displayName); + } + + if (userId && userId === pb.authStore.model?.id) { + const displayName = getCurrentUserDisplayName(); + if (displayName) { + return buildShareTag(displayName); + } + } + + return null; +}; + +const escapeFilterValue = (value: string) => value.replace(/\\/g, "\\\\").replace(/"/g, '\\"'); + +const buildPersonalAccessFilter = (userIds: string[], includeLegacyUser = true) => { + const clauses = userIds.flatMap(userId => { + const nextClauses: string[] = []; + const personalTag = getPersonalContextTag(userId); + if (personalTag) { + nextClauses.push(`tags ~ "${escapeFilterValue(personalTag)}"`); + } + if (includeLegacyUser) { + nextClauses.push(relationFilter("user", userId)); + } + return nextClauses; + }).filter(Boolean); + + return clauses.length > 0 ? `(${clauses.join(" || ")})` : "false"; +}; + +const getPersonalContextUserIdFromRef = (ref: TaskShareRef) => { + if (ref.kind !== "user") return null; + + const context = getContextByRef(ref); + if (context?.targetUserId) { + return context.targetUserId; + } + + if (ref.key.startsWith("user-")) { + return ref.key.replace(/^user-/, "") || null; + } + + return null; +}; + +const getTaskPersonalRefs = (task: Pick) => + task.shareRefs.filter(ref => ref.kind === "user" && !!getPersonalContextUserIdFromRef(ref)); + +const getTaskPersonalUserIds = (task: Pick) => + [...new Set(getTaskPersonalRefs(task).map(ref => getPersonalContextUserIdFromRef(ref)).filter((value): value is string => !!value))]; + +const taskHasLegacyPersonalAccess = (task: Pick, userId: string) => + task.ownerId === userId && + getTaskPersonalRefs(task).length === 0 && + !task.shareRefs.some(ref => ref.kind !== "user" && getTaskSharePolicy(ref) === "handoff"); + +const taskHasPersonalContextAccess = (task: Pick, userId: string, allowLegacyFallback = true) => + getTaskPersonalUserIds(task).includes(userId) || + (allowLegacyFallback && taskHasLegacyPersonalAccess(task, userId)); + +const resolveMirroredOwnerId = ( + currentOwnerId: string | null | undefined, + shareRefs: TaskShareRef[], + preferredOwnerId?: string | null +) => { + const personalUserIds = [...new Set( + shareRefs + .filter(ref => ref.kind === "user") + .map(ref => getPersonalContextUserIdFromRef(ref)) + .filter((value): value is string => !!value) + )]; + + if (personalUserIds.length === 1) { + return personalUserIds[0]; + } + + if (personalUserIds.length > 1 && preferredOwnerId && personalUserIds.includes(preferredOwnerId)) { + return preferredOwnerId; + } + + return currentOwnerId || null; +}; + +const withMirroredOwnerId = ( + currentOwnerId: string | null | undefined, + shareRefs: TaskShareRef[], + updates: Partial, + preferredOwnerId?: string | null +) => ({ + ...updates, + ownerId: resolveMirroredOwnerId(currentOwnerId, shareRefs, preferredOwnerId) +}); + export const isCurrentUserContextTag = (tag: string) => { const normalizedTag = tag.trim().toLowerCase(); if (!normalizedTag.startsWith("@")) return false; @@ -937,69 +1039,34 @@ export const matchesFilter = (task: Task) => { const activeShareContexts = task.shareRefs .map(ref => getContextByRef(ref)) .filter((context): context is ShareContext => !!context && !context.deletedAt); - const collaborativeUserShare = task.shareRefs.some(ref => { - if (ref.kind !== "user" || getTaskSharePolicy(ref) !== "collaborative") return false; - const context = getContextByRef(ref); - return context?.targetUserId === currentUserId; - }); const bucketRefs = activeShareContexts.filter(context => context.kind === "bucket"); - const hasHandoffContext = task.shareRefs.some(ref => - ref.kind !== "user" && getTaskSharePolicy(ref) === "handoff" - ); - const inPinnedBucket = rawBucketRefs.some(ref => - store.subscribedBuckets.includes(ref.contextId) || - store.subscribedBuckets.some(bucketId => store.contexts.find(context => context.id === bucketId)?.key === ref.key) - ); - const inAnyBucket = rawBucketRefs.length > 0; const isPersonalView = ctx === "mine" || ( typeof ctx === "object" && "bucketId" in ctx && !!personalContext && ctx.bucketId === personalContext.id ); - const inPersonalContext = !!personalContext && task.shareRefs.some(ref => - ref.kind === "user" && - ( - ref.contextId === personalContext.id || - ref.key === personalContext.key || - normalizeContextKey(personalContext.displayName) === ref.key - ) - ); // 0. Context Filter if (isPersonalView) { - if (hasHandoffContext) return false; - const isOwner = task.ownerId === currentUserId; - if (!isOwner && !collaborativeUserShare && !inPersonalContext) return false; + if (!currentUserId || !taskHasPersonalContextAccess(task, currentUserId)) return false; } else if (typeof ctx === 'object' && 'bucketId' in ctx) { const activeBucketContext = store.contexts.find(context => context.id === (ctx as { bucketId: string }).bucketId); const activeBucketKey = activeBucketContext?.key || normalizeContextKey((ctx as { name: string }).name); - const inCurrentBucket = rawBucketRefs.some(ref => - ref.contextId === (ctx as { bucketId: string }).bucketId || - ref.key === activeBucketKey - ) || bucketRefs.some(context => context.id === (ctx as { bucketId: string }).bucketId); + const inCurrentBucket = activeBucketContext?.kind === "user" + ? !!activeBucketContext.targetUserId && taskHasPersonalContextAccess(task, activeBucketContext.targetUserId) + : rawBucketRefs.some(ref => + ref.contextId === (ctx as { bucketId: string }).bucketId || + ref.key === activeBucketKey + ) || bucketRefs.some(context => context.id === (ctx as { bucketId: string }).bucketId); if (!inCurrentBucket) return false; } else { const targetUserId = (ctx as { userId: string }).userId; - const targetPersonalContext = getPersonalContext(targetUserId); - const inTargetPersonalContext = !!targetPersonalContext && task.shareRefs.some(ref => - ref.kind === "user" && - ( - ref.contextId === targetPersonalContext.id || - ref.key === targetPersonalContext.key || - normalizeContextKey(targetPersonalContext.displayName) === ref.key - ) - ); - - if (targetPersonalContext) { - if (!inTargetPersonalContext) return false; - } else if (task.ownerId !== targetUserId) { + if (!taskHasPersonalContextAccess(task, targetUserId)) { return false; } } - if (isPersonalView && inAnyBucket && !inPinnedBucket && task.ownerId !== currentUserId) return false; - // Hide templates from all regular views if (task.tags?.includes("__template__")) return false; @@ -1046,7 +1113,7 @@ export const matchesFilter = (task: Task) => { } // Owned By Me - if (f.ownedByMe && task.ownerId !== currentUserId) { + if (f.ownedByMe && (!currentUserId || !taskHasPersonalContextAccess(task, currentUserId))) { return false; } @@ -1107,7 +1174,7 @@ createRoot(() => { // Calculate Top 20 Tasks const incompleteTasks = store.tasks.filter(t => !t.completed && - t.ownerId === pb.authStore.model?.id && + taskHasPersonalContextAccess(t, pb.authStore.model?.id || "", true) && !t.tags?.includes("__template__") && !t.deletedAt ); @@ -1306,7 +1373,9 @@ const buildTaskMigrationPayload = ( const ownerContext = task.ownerId ? ownerContextByUserId.get(task.ownerId) : undefined; let nextShareRefs = dedupeShareRefs(task.shareRefs); let nextNoteRefs = dedupeNoteRefs([...task.noteRefs, ...linkedNoteRefs]); - const hasHandoffContext = nextShareRefs.some(ref => ref.kind !== "user" && getTaskSharePolicy(ref) === "handoff"); + const shouldHideFromLegacyOwner = !!task.ownerId && + getTaskPersonalRefs(task).length === 0 && + nextShareRefs.some(ref => ref.kind !== "user" && getTaskSharePolicy(ref) === "handoff"); if (ownerContext) { const matchesOwnerContext = (ref: TaskShareRef) => @@ -1316,7 +1385,7 @@ const buildTaskMigrationPayload = ( normalizeContextKey(ownerContext.displayName) === ref.key ); - if (hasHandoffContext) { + if (shouldHideFromLegacyOwner) { nextShareRefs = nextShareRefs.filter(ref => !matchesOwnerContext(ref)); } else if (!nextShareRefs.some(matchesOwnerContext)) { nextShareRefs = [ @@ -1332,12 +1401,18 @@ const buildTaskMigrationPayload = ( } nextShareRefs = dedupeShareRefs(nextShareRefs); + const mirroredOwnerId = resolveMirroredOwnerId( + task.ownerId || fallbackUserId || pb.authStore.model?.id || null, + nextShareRefs, + task.ownerId || fallbackUserId || null + ); return { tags: buildTaskTags(task.labelTags, nextShareRefs, nextNoteRefs, favoriteTag), labelTags: task.labelTags, shareRefs: nextShareRefs, noteRefs: nextNoteRefs, + ownerId: mirroredOwnerId, createdBy: task.createdBy || task.ownerId || fallbackUserId || pb.authStore.model?.id || "" }; }; @@ -1612,10 +1687,22 @@ export const loadNoteContent = async (id: string) => { // Helper to check if a task should be visible based on ownership, shares, or rules const shouldTaskBeVisible = (task: any, currentUserId: string): boolean => { const mappedTask = "shareRefs" in task ? task as Task : mapRecordToTask(task); - if (mappedTask.ownerId === currentUserId) return true; - if (store.supervisedContexts.some(context => context.ownerUserId === mappedTask.ownerId)) return true; + if (taskHasPersonalContextAccess(mappedTask, currentUserId)) return true; + if (store.supervisedContexts.some(context => taskHasPersonalContextAccess(mappedTask, context.ownerUserId))) return true; - if (mappedTask.shareRefs.some(ref => ref.kind === "bucket")) return true; + const hasSubscribedBucket = mappedTask.shareRefs.some(ref => + ref.kind === "bucket" && ( + store.subscribedBuckets.includes(ref.contextId) || + store.subscribedBuckets.some(bucketId => store.contexts.find(context => context.id === bucketId)?.key === ref.key) + ) + ); + if (hasSubscribedBucket) return true; + + const hasAccessibleNote = mappedTask.noteRefs.some(ref => { + const note = getNoteByRef(ref); + return !!note && (!note.isPrivate || note.user === currentUserId); + }); + if (hasAccessibleNote) return true; return mappedTask.shareRefs.some(ref => { if (ref.kind !== "user" || getTaskSharePolicy(ref) !== "collaborative") return false; @@ -1879,7 +1966,7 @@ const syncUserContexts = async () => { key: buildUserContextKey(user.id), displayName, kind: "user", - policy: "handoff", + policy: "collaborative", targetUserId: user.id }, { requestKey: null }).catch(() => null); if (created) { @@ -1933,7 +2020,7 @@ const syncSupervisedContexts = async () => { } }; -const runPersonalContextMigration = async (force = false) => { +const runContextOwnershipMigration = async (force = false) => { const currentUserId = pb.authStore.model?.id; if (!currentUserId) return; @@ -1942,19 +2029,23 @@ const runPersonalContextMigration = async (force = false) => { const rawPrefs = userRec.Taskgrid_pref || {}; const prefs = readScopedPrefs(rawPrefs); - if (!force && prefs.migratedPersonalContextRefsV1) { + if (!force && prefs.migratedContextOwnershipV2) { return; } - const contexts = store.contexts.length > 0 - ? store.contexts - : await loadContextsIntoStore(); + await syncUserContexts(); + const contexts = store.contexts.length > 0 ? store.contexts : await loadContextsIntoStore(); const ownerContextByUserId = new Map( contexts .filter(context => context.kind === "user" && !!context.targetUserId && !context.deletedAt) .map(context => [context.targetUserId as string, context]) ); - const noteLinksByTaskId = buildNoteLinkMap(store.notes); + const noteRecords = await pb.collection(NOTES_COLLECTION).getFullList({ + fields: NOTE_LIST_FIELDS, + requestKey: null + }).catch(() => []); + const allNotes = noteRecords.map(record => mapRecordToNote(record)); + const noteLinksByTaskId = buildNoteLinkMap(allNotes); const taskRecords = await pb.collection(TASGRID_COLLECTION).getFullList({ fields: getTaskListFields(), @@ -1976,19 +2067,27 @@ const runPersonalContextMigration = async (force = false) => { const sameShareRefs = JSON.stringify(payload.shareRefs) === JSON.stringify(task.shareRefs); const sameNoteRefs = JSON.stringify(payload.noteRefs) === JSON.stringify(task.noteRefs); const sameTags = JSON.stringify(payload.tags) === JSON.stringify(task.tags); - if (sameShareRefs && sameNoteRefs && sameTags && payload.createdBy === task.createdBy) continue; + const sameOwnerId = payload.ownerId === task.ownerId; + if (sameShareRefs && sameNoteRefs && sameTags && payload.createdBy === task.createdBy && sameOwnerId) continue; - await pb.collection(TASGRID_COLLECTION).update(task.id, payload, { requestKey: null }); + const pbPayload = { + ...payload, + user: payload.ownerId || task.ownerId || null + } as any; + delete pbPayload.ownerId; + + await pb.collection(TASGRID_COLLECTION).update(task.id, pbPayload, { requestKey: null }); } await pb.collection('users').update(currentUserId, { Taskgrid_pref: writeScopedPrefs(rawPrefs, { ...prefs, - migratedPersonalContextRefsV1: true + migratedPersonalContextRefsV1: true, + migratedContextOwnershipV2: true }) }, { requestKey: null }); } catch (err) { - console.error("[MIGRATION] Failed personal context backfill:", err); + console.error("[MIGRATION] Failed context ownership migration:", err); } }; @@ -2001,7 +2100,7 @@ export const runDevDataMigration = async () => { await toast.promise((async () => { await runLegacyTagMigration(true); - await runPersonalContextMigration(true); + await runContextOwnershipMigration(true); await loadContextsIntoStore(); await syncSupervisedContexts(); return "Dev data migration completed."; @@ -2027,7 +2126,7 @@ export const runProdDataMigration = async () => { await toast.promise((async () => { await runLegacyTagMigration(true); - await runPersonalContextMigration(true); + await runContextOwnershipMigration(true); await loadContextsIntoStore(); await syncSupervisedContexts(); return "Production data migration completed."; @@ -2065,8 +2164,9 @@ export const initStore = async () => { res.sort((a, b) => cachedQuickload.indexOf(a.id) - cachedQuickload.indexOf(b.id)); focusRecords = { items: res }; } else { + const personalAccessFilter = buildPersonalAccessFilter([currentUserId]); focusRecords = await pb.collection(TASGRID_COLLECTION).getList(1, 30, { - filter: `${relationFilter("user", currentUserId)} && completed = false && deletedAt = ""`, + filter: `${personalAccessFilter} && completed = false && deletedAt = ""`, sort: '-priority,dueDate', requestKey: null }); @@ -2206,18 +2306,13 @@ export const initStore = async () => { const subscribedBucketTags = getSubscribedBucketContexts() .map(context => buildShareTag(context.displayName)); const supervisedUserIds = store.supervisedContexts.map(context => context.ownerUserId); - const collaborativeKeys = store.contexts - .filter(context => - !context.deletedAt && - context.kind === "user" && - context.targetUserId === currentUserId - ) - .map(context => buildShareTag(context.displayName)); + const currentUserAccessFilter = buildPersonalAccessFilter(currentUserId ? [currentUserId] : []); + const supervisedAccessFilter = buildPersonalAccessFilter(supervisedUserIds); // 2a. Fetch ALL Incomplete Tasks (Metadata Only) to ensure availability const incompletePromises = [ pb.collection(TASGRID_COLLECTION).getFullList({ - filter: `${relationFilter("user", currentUserId)} && completed = false`, + filter: `${currentUserAccessFilter} && completed = false`, sort: '-created', fields: getTaskListFields(), requestKey: null @@ -2228,14 +2323,8 @@ export const initStore = async () => { fields: getTaskListFields(), requestKey: null }).catch(() => []) : Promise.resolve([]), - (collaborativeKeys.length > 0) ? pb.collection(TASGRID_COLLECTION).getFullList({ - filter: `(${collaborativeKeys.map(tag => `tags ~ "${tag}"`).join(' || ')}) && completed = false`, - sort: '-created', - fields: getTaskListFields(), - requestKey: null - }).catch(() => []) : Promise.resolve([]), (supervisedUserIds.length > 0) ? pb.collection(TASGRID_COLLECTION).getFullList({ - filter: `(${supervisedUserIds.map(id => relationFilter("user", id)).join(' || ')}) && completed = false`, + filter: `${supervisedAccessFilter} && completed = false`, sort: '-created', fields: getTaskListFields(), requestKey: null @@ -2302,8 +2391,9 @@ export const initStore = async () => { if (remainingSlots > 0) { try { + const completedAccessFilter = buildPersonalAccessFilter(currentUserId ? [currentUserId] : []); const recentCompleted = await pb.collection(TASGRID_COLLECTION).getList(1, remainingSlots, { - filter: `${relationFilter("user", currentUserId)} && completed = true`, + filter: `${completedAccessFilter} && completed = true`, sort: '-updated', fields: getTaskListFields(), requestKey: null @@ -2346,7 +2436,7 @@ export const initStore = async () => { // Run one-time migration automatically only in dev data mode. if (TASGRID_IS_DEV_DATA) { await runLegacyTagMigration(); - await runPersonalContextMigration(); + await runContextOwnershipMigration(); } // Separate Templates load (less critical) @@ -2622,7 +2712,13 @@ export const addTask = async (title: string, options?: { dueDate?: Date | string // Apply Handoff Logic (e.g. transfer ownership if tagging for another user) // We treat the entire new task as "updates" to check against itself const handoffUpdates = checkForHandoffs(initialTask, initialTask); - const newTask = { ...initialTask, ...handoffUpdates }; + const mirroredUpdates = withMirroredOwnerId( + initialTask.ownerId, + handoffUpdates.shareRefs || initialTask.shareRefs, + handoffUpdates, + handoffUpdates.ownerId || initialTask.ownerId + ); + const newTask = { ...initialTask, ...mirroredUpdates }; // Optimistic UI update setStore("tasks", (t) => [newTask, ...t]); @@ -2710,7 +2806,7 @@ export const copyTask = async (id: string) => { const checkForHandoffs = (task: Task, updates: Partial): Partial => { const currentUserId = pb.authStore.model?.id; - if (!currentUserId || task.ownerId !== currentUserId) return updates; + if (!currentUserId || !taskHasPersonalContextAccess(task, currentUserId)) return updates; const refs = updates.shareRefs || task.shareRefs; const senderPersonalContext = getPersonalContext(currentUserId); @@ -2724,6 +2820,12 @@ const checkForHandoffs = (task: Task, updates: Partial): Partial => for (const ref of refs) { const context = getContextByRef(ref); + if (senderPersonalContext && ref.kind === "user" && ( + ref.contextId === senderPersonalContext.id || + ref.key === senderPersonalContext.key + )) { + continue; + } if (!context || getTaskSharePolicy(ref) !== "handoff") continue; const nextShareRefs = stripSenderPersonalContext(refs); const labelTags = updates.labelTags || task.labelTags; @@ -2801,6 +2903,13 @@ export const updateTask = async (id: string, updates: Partial) => { ); } finalUpdates = checkForHandoffs(currentTask, finalUpdates); + const mirroredShareRefs = finalUpdates.shareRefs || currentTask.shareRefs; + finalUpdates = withMirroredOwnerId( + finalUpdates.ownerId ?? currentTask.ownerId, + mirroredShareRefs, + finalUpdates, + finalUpdates.ownerId ?? currentTask.ownerId + ); } // Optimistic update with timestamp to prevent stale realtime events @@ -3141,16 +3250,11 @@ export const loadAllHistory = async () => { const bucketTags = getSubscribedBucketContexts() .map(context => buildShareTag(context.displayName)); const supervisedUserIds = store.supervisedContexts.map(context => context.ownerUserId); - const collaborativeTags = store.contexts - .filter(context => - !context.deletedAt && - context.kind === "user" && - context.targetUserId === userId - ) - .map(context => buildShareTag(context.displayName)); + const userAccessFilter = buildPersonalAccessFilter([userId]); + const supervisedAccessFilter = buildPersonalAccessFilter(supervisedUserIds); const promises = [ - pb.collection(TASGRID_COLLECTION).getFullList({ filter: relationFilter("user", userId), sort: '-created', fields: getTaskListFields(), requestKey: null }) + pb.collection(TASGRID_COLLECTION).getFullList({ filter: userAccessFilter, sort: '-created', fields: getTaskListFields(), requestKey: null }) ]; if (bucketTags.length > 0) { @@ -3162,18 +3266,9 @@ export const loadAllHistory = async () => { }).catch(() => [])); } - if (collaborativeTags.length > 0) { - promises.push(pb.collection(TASGRID_COLLECTION).getFullList({ - filter: collaborativeTags.map(tag => `tags ~ "${tag}"`).join(' || '), - sort: '-created', - fields: getTaskListFields(), - requestKey: null - }).catch(() => [])); - } - if (supervisedUserIds.length > 0) { promises.push(pb.collection(TASGRID_COLLECTION).getFullList({ - filter: supervisedUserIds.map(id => relationFilter("user", id)).join(' || '), + filter: supervisedAccessFilter, sort: '-created', fields: getTaskListFields(), requestKey: null @@ -3406,10 +3501,7 @@ export const loadTasksForOwner = async (userId: string) => { if (!pb.authStore.isValid || !userId) return; try { - const targetPersonalContext = getPersonalContext(userId); - const filter = targetPersonalContext - ? `tags ~ "${buildShareTag(targetPersonalContext.displayName)}"` - : relationFilter("user", userId); + const filter = buildPersonalAccessFilter([userId]); const records = await pb.collection(TASGRID_COLLECTION).getFullList({ filter, sort: '-created',