$ Pulse · Object Model
FieldTech, Job, and CoachingHistory, and how a generated tip links back to the jobs it was based on.
## FIELD_TECH
One record per seeded field technician: an id, a name, and the snapshot stat shown on the roster card (their current tag-completion rate). Lives in the techs container, partitioned by /id.
## JOB
One record per completed job: the assigned tech’s techId, a completion timestamp, tag-completion and turnaround measurements for that job, and the angle types captured versus missed. Lives in the jobs container, partitioned by /techId — 20-30 seeded jobs per technician, patterned so the job history tells a real trend, not random noise.
## COACHING_HISTORY
One record per generated coaching tip: the tip text, the techId it was generated for, and references to the specific Job records the tip was based on. Lives in the coachingHistory container, partitioned by /techId. A stored tip is never a standalone string — it’s always traceable back to the job history that produced it, so a visitor (or a future real model call) can see exactly what evidence a given tip was grounded in.
