Timesheet Collector Skill
Collect employee work hours via any messaging channel. Employees send hours in natural language — "Mon-Thu 8hrs, Fri 6hrs" or "40 hours, took Friday afternoon off" — and the AI extracts, validates, and confirms. Managers get weekly summaries.
The Problem
Every Friday, someone chases 15 people for their hours. Employees forget, submit late, or send inconsistent formats. Someone manually types everything into a spreadsheet. It takes hours and everyone hates it.
How It Solves It
- InTouch sends a scheduled reminder Friday at 3pm: "Submit your hours for this week"
- Employee replies on WhatsApp/Slack/email in whatever format is natural
- AI extracts hours per day, project notes, and validates the total
- Employee gets instant confirmation with structured summary
- Manager gets a team summary Monday morning — who submitted, who didn't, any flags
Setup
1. Enable Inbound Messaging
Enable at least one channel your team uses. Common choices:
- WhatsApp: System > Server Settings > Messaging > WhatsApp
- Slack: System > Server Settings > Messaging > Slack
- Email: System > Server Settings > Email (Enable On-Demand)
- Teams: System > Server Settings > Messaging > Teams
2. Create Contact Profiles
For each employee:
- Users & Privileges > Subscribers
- Set channel address (WhatsApp number, Slack ID, email)
- Inbound Enabled: Yes
- Set the appropriate Transport code
Also create a contact or group for the manager who receives summaries.
3. Configure AI Assistant
- System > Server Settings > AI Assistant
- Any provider works (no image analysis needed for timesheets):
- Ollama — free, recommended for cost-sensitive setups
- Anthropic / OpenAI / Gemini — all work well
4. Create the Friday Reminder Job
Create a YAML job or use the UI to build a job with:
- Task:
messagetool - Subject: "Timesheet Reminder"
- Body: "Please submit your hours for this week. Reply to this message with your hours, e.g.: Mon-Thu 8hrs, Fri 6hrs. Or just tell me your total. Use @timesheet-collector before your message."
- Subscribers: All employees (or a contact group)
- Schedule: Weekly, Friday at 3:00 PM
Example YAML job:
name: timesheet-reminder
description: Weekly reminder to submit hours
tasks:
- name: remind
tool: message
properties:
subject: "Timesheet Reminder"
body: "Please submit your hours for this week. Reply with your hours — e.g., Mon-Thu 8hrs, Fri 6hrs. Prefix with @timesheet-collector"
subscriberGroupName: "all-employees"
5. Install the Skill
Pre-installed at INTOUCH_HOME/skills/timesheet-collector/SKILL.md. If missing:
- UI: System > Skills > Install
- API:
POST /api/skill/install - File: Copy
timesheet-collector/toINTOUCH_HOME/skills/
Usage
Employee Submits Hours
From any channel:
@timesheet-collector Mon-Thu 8hrs, Fri 6hrs, worked on the website redesign
Or more casually:
@timesheet-collector 40 hours this week. Spent Monday and Tuesday on client site, rest in office.
Or minimal:
@timesheet-collector 8/8/8/8/6
All formats work. The AI normalizes and confirms.
Employee Checks Status
@timesheet-collector status
Employee Corrects Hours
@timesheet-collector correct Wednesday to 9 hours, had the client meeting
Manager Requests Summary
@timesheet-collector team summary
Validation Rules
| Rule | Trigger | Action |
|---|---|---|
| Missing days | Weekday without hours | Asks about missing days |
| Low week | Under 35 hours | Flagged |
| High week | Over 50 hours | Flagged — overtime reason required |
| Long day | Over 12 hours | Flagged — verification requested |
| Weekend | Saturday/Sunday reported | Noted |
| Zero day | 0 hours on a weekday | Asks: PTO, sick, or holiday? |
Customization
Edit SKILL.md to change:
- Hour thresholds — change 35/50 minimums and maximums
- Work week — change from Mon-Fri if your business operates differently
- Overtime rules — add or remove overtime flagging criteria
- Project tracking — require project codes, or remove project tracking entirely
- Response format — simplify or add detail to the confirmation messages
- Reminder text — customize the language for your team's culture
Cost
- Ollama: Free
- Claude/GPT: ~$0.005 per submission (text only, no images)
- 15 employees × 52 weeks = 780 submissions/year = ~$4/year with Claude
Pairing with a Database
For persistent tracking across weeks, pair this skill with a YAML job that:
- Runs the
timesheet-collectorskill - Parses the structured output
- Inserts into a database table via the
sqltool
This gives you historical reporting, export to payroll, and year-end summaries.
Limitations
- No persistent storage across conversations — each message is independent. For running weekly state, use conversation history (AI assistant multi-turn) or pair with a database.
- No payroll integration — extracts and validates hours but doesn't push to ADP, Gusto, etc. Export to CSV and import manually, or build an HTTP step to your payroll API.
- Approximate validation — the AI applies rules but can't verify against a time clock or project management system.