A user is normally allowed to start jobs that the user owns. This is the simplest option although it may not be an option if more than one non-admin needs to be allowed to start the same job.
The only other option I can think of is to
- create a table that is used to indicate whether the job needs to run
- create a new job that runs frequently and checks the above. If the job in question should be run, start it and then clear the flag in the new table.
Then update the code in your application so that instead of starting the job, it simply updates a table.