Odd,
I have something similar to what you have but I haven't integrated persistence yet. It basically uses JodaTime to allow the user to schedule a task based on a datetime has the ability to repeat tasks at a cadence like, hourly, daily, weekly, etc., and repeat a finite or infinite number of times. It's used like this.
val delayTo = DateTime(2014, 10, 2, 12, 30, 0, UTC)
DateTimeScheduler.schedule(date, actorRef, message, Cadence.Daily, Repeat.Inf)
this would schedule a message to be sent to the actorRef starting on Oct, 2, 2014 at 12:30 UTC and will be run again at Oct 3, 2014 at 12:30 UTC and will repeat forever.
This is just a prototype I was playing around with. Your persistence work looks nice, we should join forces.
There is some code.
https://github.com/kaiserpelagic/akka-datetime-schedulerGreg