Activities
The ing.as platform for universal activity apps
Activities
ing.as is the universal platform for activity apps - any verb becomes an app.
{object}.{verb}.ing.as/{context}/{role}The Grammar of Activities
Every activity follows a consistent grammar that maps directly to URLs:
Subject-Verb-Object
Subject performs Action on Object
│ │ │
Who What Target
(Worker) (Verb) (Thing)The Verb Lifecycle
Action → Activity → Event
│ │ │
scan scanning scanned
approve approving approved
review reviewing reviewed| Stage | Form | When | Example |
|---|---|---|---|
| Action | Imperative | Command to do | "scan this barcode" |
| Activity | Gerund (-ing) | While doing | "scanning barcode..." |
| Event | Past tense | After done | "barcode scanned" |
URL Structure
{object}.{verb-stem}.ing.as/{context}/{role}
barcode.scann.ing.as/warehouse/picker
│ │ │ │
│ │ │ └── Role: who's doing it
│ │ └── Context: where/what business
│ └── Verb stem: the action (scan → scann)
└── Object: what's being acted onWhy Verb Stems?
The subdomain uses the verb stem (not full gerund) because ing.as provides the "-ing":
| Verb | Stem | Subdomain |
|---|---|---|
| scan | scann | scann.ing.as |
| approve | approv | approv.ing.as |
| review | review | review.ing.as |
| process | process | process.ing.as |
| generate | generat | generat.ing.as |
| analyze | analyz | analyz.ing.as |
Activity Categories
Data Entry Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Scanning | {object}.scann.ing.as | Barcodes, QR codes, documents |
| Entering | {object}.enter.ing.as | Forms, data entry |
| Uploading | {object}.upload.ing.as | Files, images, documents |
| Recording | {object}.record.ing.as | Audio, video, notes |
Approval Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Approving | {object}.approv.ing.as | Invoices, requests, PRs |
| Reviewing | {object}.review.ing.as | Code, documents, applications |
| Signing | {object}.sign.ing.as | Contracts, documents |
| Verifying | {object}.verif.ing.as | Identity, data, claims |
Communication Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Drafting | {object}.draft.ing.as | Emails, proposals, docs |
| Messaging | {object}.messag.ing.as | Chat, notifications |
| Calling | {object}.call.ing.as | Voice, video calls |
| Presenting | {object}.present.ing.as | Slides, demos |
Processing Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Processing | {object}.process.ing.as | Orders, payments, requests |
| Triaging | {object}.triag.ing.as | Tickets, issues, leads |
| Sorting | {object}.sort.ing.as | Items, priorities |
| Routing | {object}.rout.ing.as | Tasks, messages, requests |
Creation Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Generating | {object}.generat.ing.as | Content, reports, code |
| Creating | {object}.creat.ing.as | Records, items, resources |
| Building | {object}.build.ing.as | Projects, features |
| Designing | {object}.design.ing.as | UI, graphics, systems |
Analysis Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Analyzing | {object}.analyz.ing.as | Data, metrics, trends |
| Monitoring | {object}.monitor.ing.as | Systems, metrics, logs |
| Tracking | {object}.track.ing.as | Time, progress, shipments |
| Auditing | {object}.audit.ing.as | Logs, compliance, finances |
Scheduling Activities
| Activity | Subdomain | Use Cases |
|---|---|---|
| Scheduling | {object}.schedul.ing.as | Meetings, appointments |
| Booking | {object}.book.ing.as | Resources, rooms, services |
| Planning | {object}.plann.ing.as | Projects, sprints, events |
| Coordinating | {object}.coordinat.ing.as | Teams, resources |
Context + Role Customization
The same activity renders differently based on context and role:
Example: barcode.scann.ing.as
/warehouse/picker
├── Large scan button
├── Item details display
├── Quantity confirmation
├── Bin location
└── Next item in pick list
/warehouse/receiver
├── PO lookup
├── Quantity received
├── Condition check
├── Put-away location
└── Discrepancy reporting
/retail/cashier
├── Running total
├── Item lookup
├── Price check
├── Discount application
└── Payment integration
/retail/inventory
├── Count mode
├── Location verification
├── Stock level display
├── Reorder alerts
└── Batch scanningExample: invoice.approv.ing.as
/finance/manager
├── Full invoice preview
├── Line item breakdown
├── Budget impact
├── Approval chain
└── Comment required
/finance/controller
├── Batch approval view
├── Exception flagging
├── Audit trail
├── Policy compliance
└── Delegation options
/operations/manager
├── PO matching
├── Delivery confirmation
├── Service verification
├── Quick approve/reject
└── Escalation pathActivity App Structure
Each activity app has a consistent structure:
Views
| View | Purpose |
|---|---|
| Queue | List of items to process |
| Active | Current item being worked |
| History | Completed items |
| Settings | Activity preferences |
Panels (Active View)
ActiveView
├── ObjectPanel (what you're acting on)
├── ActionPanel (controls to perform action)
├── ContextPanel (relevant context/history)
├── NavigationPanel (prev/next/skip)
└── StatusPanel (progress, queue depth)Activity Flow
Queue → Select → Preview → Act → Confirm → Next
│ │ │ │ │ │
│ │ │ │ │ └── Return to queue
│ │ │ │ └── Event recorded
│ │ │ └── Activity in progress
│ │ └── Review object
│ └── Pick from queue
└── Available workSubject: Workers
The Subject performing activities is always a Worker (Human or Agent):
interface Worker {
ask(prompt: string): Promise<Response>
do(task: Task): Promise<Result>
}
class Human implements Worker {
// Uses ing.as UI to perform activities
// Sees queue, picks items, performs actions
}
class Agent implements Worker {
// Uses ing.as API/MCP to perform activities
// Automated processing of queues
}Human Workers
Access activities via browser:
barcode.scann.ing.as/warehouse/picker
→ Mobile-optimized UI
→ Camera access for scanning
→ Touch-friendly controlsAgent Workers
Access activities via API/MCP:
POST barcode.scann.ing.as/api/scan
{
"object": "barcode",
"context": "warehouse",
"role": "agent",
"data": { "barcode": "123456789" }
}Object: Things Being Acted On
The Object in {object}.{verb}.ing.as is the Thing type being processed:
| Object | Thing Type | Examples |
|---|---|---|
barcode | Barcode | Product, asset, location codes |
invoice | Invoice | AP invoices, bills |
document | Document | Contracts, forms, PDFs |
code | Code | PRs, commits, files |
ticket | Ticket | Support tickets, issues |
lead | Lead | Sales leads |
order | Order | Customer orders |
email | Messages to review/send | |
meeting | Meeting | Calendar events |
task | Task | Work items |
content | Content | Articles, posts, copy |
data | Data | Records, datasets |
Events: Activity Completion
When an activity completes, it produces an Event:
interface ActivityEvent {
$type: string // 'BarcodeScanned', 'InvoiceApproved'
$id: string // Event ID
timestamp: Date // When it happened
// The grammar
actor: Worker // Who did it
action: string // What they did
object: Thing // What they did it to
result: Thing // What was produced
// Context
context: string // Where it happened
role: string // In what capacity
}
// Example
{
$type: 'InvoiceApproved',
$id: 'evt_123',
timestamp: '2024-01-15T10:30:00Z',
actor: { $type: 'Human', name: 'Jane Smith' },
action: 'approve',
object: { $type: 'Invoice', $id: 'inv_456' },
result: { $type: 'Approval', $id: 'apr_789' },
context: 'finance',
role: 'manager'
}Event Flow
Activity (ing.as) → Event (schema.org.ai) → Workflow (trigger)
│ │ │
"approving" "approved" "on approved"Events can trigger workflows:
# Workflow definition
$type: Workflow
trigger:
event: InvoiceApproved
context: finance
actions:
- notify: accounts-payable
- schedule: payment
- update: budgetReverse Relations
Every activity has a reverse relation for querying:
| Activity | Event | Reverse |
|---|---|---|
| scanning | scanned | scannedBy |
| approving | approved | approvedBy |
| reviewing | reviewed | reviewedBy |
| creating | created | createdBy |
| assigning | assigned | assignedTo |
# Find all invoices approved by Jane
query {
invoices(where: { approvedBy: "jane@acme.com" }) {
id
amount
approvedAt
}
}
# Find all items scanned at warehouse today
query {
barcodes(where: {
scannedAt: { gte: "2024-01-15" },
context: "warehouse"
}) {
id
item
scannedBy
}
}Integration with Studios
Activities integrate with the studio ecosystem:
Management.Studio
└── monitors activities across businesses
Agents.Management
└── assigns agent workers to activities
API.Management
└── exposes activity APIs
ing.as
└── provides the activity UI/APIActivity Metrics in Studios
ManagementDashboard
├── ActivitiesPanel
│ ├── Active now (who's doing what)
│ ├── Throughput (activities/hour)
│ ├── Queue depth (waiting work)
│ └── Completion rateSummary
The ing.as platform provides:
- Universal Activity URLs - Any verb becomes
{object}.{verb}.ing.as - Context + Role Customization - Same activity, different UIs
- Human + Agent Workers - Both can perform activities
- Event Production - Activities produce events for workflows
- Studio Integration - Metrics and management across businesses
The grammar:
Subject (Worker) + Action (Verb) + Object (Thing) = Activity (ing.as)
↓
Event (schema.org.ai)
↓
Workflow (trigger)