Inspiration
I kept running into the same chores: comparing places for a day out, checking job boards, and explaining my preferences again in a new chat. I built Hora to take some of that work off my hands and remember what I had already told her.
What it does
- Day planning: Ask for a museum, lunch and a movie in Stockholm. Hora checks places, opening hours and travel times, then puts together plans you can compare. Add a budget or ask for shorter walks, and she adjusts her recommendations. She doesn't buy tickets or book venues.
- Job watch: Hora checks postings against your CV, explains the matches and gaps, and sends scheduled shortlists to Telegram. She can also follow research topics and grocery offers.
- Group chat summaries: Catch up on decisions, open questions and action items. Hora can suggest a shared to-do or a meeting when the discussion calls for one.
Preferences carry across conversations and tasks. You can review and edit them, remove saved memories, or pause background work from the web interface.
How I built it
Hora runs on a Google Cloud VM. Hermes Agent handles conversations, memory and scheduling. NVIDIA Nemotron runs through Nebius Token Factory: Super handles conversation and detailed job matching; Nano screens papers and extracts job requirements.
The app uses JavaScript, Node.js, Python and SQLite. Reusable skills guide the agent, while MCP tools and task scripts do the work. Google Maps provides places and routes, and Google Calendar handles calendar access. Scheduled jobs reuse the same workflows as chat.
Memory, documents and preferences stay in the deployment; task-relevant context goes to connected services. Checks in code handle specific boundaries, including calendar confirmation and checking job requirements against CV evidence.
Challenges I ran into
An early version asked for a budget again after I had said there was no limit. It also struggled with activities outside the original examples. More prompt rules didn't fix this. I had to change how the app stored context and passed information between the model and tools.
Long model outputs getting cut off and duplicate scheduled results were other problems that only became obvious when testing full conversations and recurring tasks.
Accomplishments that I'm proud of
The most satisfying part was seeing the pieces work together: a preference changes a plan, turns up in a later grocery conversation, and a job shortlist arrives without another prompt. The demo shows those actual interactions, including a real Telegram notification.
What I learned
I spent as much time fixing what the model was given as fixing what it said. Clear tool results and reliable state made a bigger difference than adding instructions for every awkward reply.
What's next for Hora
A mobile app, more natural voice interaction, and better recovery when a background task fails. I'd also like to support more cities beyond Stockholm.
Try Hora
Watch the 2:34 video or try a preset question in the live demo. You can also ask, “What can you do?” The judge demo uses a fictional profile and a stand-in calendar, has no Telegram connection, and resets nightly.
Built With
- css
- google-cloud
- hermes-agent
- javascript
- nebius
- node.js
- nvidia-nemotron
- python
- sqlite