[ ] Personas
[ ] Crowd sources/interface generation (?)
[ ] Tasks
[ ] Quality Control
[ ] Result exposure (store in database, produce CSV, call webhook)
[ ] Other stuff
Base schema abstraction on RDF (subject, predicate, object).
Find-Task concerns finding new subjects.
Fix-Task concerns finding missing object for related predicates.
Verify-Task concerns verifying the current state of the object to be representative for the real world.
Needed:
Questions for future work:
Source of information (worker interface type): question (generic), upload image (image, time, location, potential labeling via image recognition),
Task Pipeline Pattern (generation, aggregation): Find-Fix-Verify
Task generation:
Generate Find-Tasks based on entity types. (schema only)
Generate Fix-Tasks based on existing entity instances. (some kind of DB needed, with potential seed data)
Generate Verify-Tasks based on incoming results/known data.
[ ] Add database (redis)
[ ] Finish schema logic
[ ] Generate Find and Fix tasks
[ ] Build worker logic
[ ] Assign tasks to workers
[ ] Simulate worker results
[ ] Build streaming logic
[ ] Generate Verify-Tasks based on incoming results
Micro-task result types: plain text answer, labeling (with preset options, collaborative labeling tasks where crowd decides on top-k labels), provide an image, yes/no (boolean), number (int, real number), error (task can not be completed by worker, optional feedback)
Entity: ThrashCan -> Passive Find-Task, restrict 'location' property to range 'TU Delft campus', stale after 1 day, covers properties {name, location, image}, grouped to plain-text name and 'upload an image' task.
Property isFull: -> Active Fix-Task, boolean "label image" task, "Would you say this ThrashCan is full?" (split isSomething based on 'is' and lowercase all words)
Meta-properties: createdAt, updatedAt (managed by the system)
All properties covered!
Quality assurance: Verify-Tasks generated based on other tasks, 1 passive Find-Task, no verification i.e. every result is immediately accepted, 1 active Fix-Task, threshold 10, at least 10 workers must agree on the labeling
Query:
mutation {
login(email: "alice@prisma.io", password: "secret42") {
token
user {
id
name
}
}
}
Result:
{
"data": {
"login": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjandqdG5wZmNicnA2MGI2MTZ6anA0bmttIiwiaWF0IjoxNTU5Nzc1NTAyfQ.2cSGtRU9w67GKCasEw6jv2zhE3VPOdND3yElMtPKw4I",
"user": {
"id": "cjwjtnpfcbrp60b616zjp4nkm",
"name": "Alice"
}
}
}
}