We consider the general problem of geometric task allocation, wherein a large, decentralized swarm of simple mobile agents must detect the locations of tasks in the plane and position themselves nearby. The tasks are represented by an a priori unknown demand profile Φ(x,y) that determines how many agents are needed in each location. The agents are autonomous, oblivious, indistinguishable, and have a finite sensing range. They must configure themselves according to Φ using only local information about Φ and about the positions of nearby agents. All agents act according to the same local sensing-based rule of motion, and cannot explicitly communicate nor share information. We propose an approach based on gradient descent over a simple squared error function. We formally show that this approach results in attraction-repulsion dynamics. Repulsion encourages agents to spread out and explore the region to find the tasks, and attraction causes them to accumulate at task locations. The figures in this work are snapshots of simulations that can be viewed at https://youtu.be/1_5f0MnUJag.