The Genesis of Shoots: An Agentic Hackathon Entry
The All Things Agentic Hackathon provided the impetus for the development of Shoots, an innovative hybrid event-driven agent system designed for photographers. The project, detailed on Dev.to, aims to augment the photographic process by providing intelligent background analysis of images and offering optional, data-supported experimental suggestions to the user. This system distinguishes itself by maintaining human oversight in critical decision-making, ensuring that the photographer remains the ultimate arbiter of creative choices.
At its core, Shoots functions as a companion application for both Android and web platforms. After a photographer captures an image, Shoots quietly processes it in the background. It meticulously preserves the 'evidence' behind its analysis, creating a durable learning record. When the collected data sufficiently supports a particular creative direction, Shoots can then propose a single, optional 'experiment' for the photographer to consider. This approach prioritizes a structured, evidence-based workflow without imposing rigid directives.
The Design Philosophy: Orchestration Over Autonomy
The fundamental design of Shoots can be encapsulated in a single, powerful sentence: 'The model panel reads a single Shot. The system around it does the work: it creates a durable Run, moves tiny events through independently retryable stages, re-reads state at every boundary, records every outcome, and only settles a Shoot after every member Run is accounted for.' This statement highlights a deliberate architectural choice. Instead of allowing a single model to make the final decision, Shoots employs a distributed, event-driven architecture where multiple agents collaborate and communicate through discrete events.
This architecture ensures robustness and transparency. Each 'Run' within the system represents an independent, retryable stage of processing. At every transition point between these stages, the system re-reads the current state, ensuring data integrity and consistency. Every action and outcome is meticulously recorded, providing a comprehensive audit trail. A 'Shoot' is only considered complete once all its constituent 'Runs' have been successfully accounted for. This meticulous record-keeping is crucial for debugging, understanding system behavior, and building trust in the AI's suggestions.

From File to Learning Record: The Data Pipeline
The journey of a photograph through the Shoots system is a testament to its event-driven nature. When a photographer takes a 'Shot,' this action triggers the creation of a 'Run.' This initial 'Run' is the genesis of the durable learning record. The system then orchestrates a series of micro-events, each handled by specialized agents. These agents perform specific tasks, such as image analysis, metadata extraction, or quality assessment. The key is that these events are 'independently retryable.' If an agent fails to process an event, the system can retry that specific event without disrupting the entire workflow or requiring a restart of all prior stages.
The system's design intentionally separates the core data processing and event management from the decision-making capabilities of the underlying machine learning models. This separation is critical. The developers deliberately chose not to let a model unilaterally decide the outcome or suggest complex interventions. Instead, the models serve as analytical components within a larger, human-guided framework. The system gathers evidence, analyzes it, and then, and only then, determines if the evidence warrants a suggestion for an 'experiment.' This hybrid approach ensures that the creative intent of the photographer is preserved, while leveraging AI for efficiency and insight.
Agent Communication and State Management
Communication between agents in Shoots is managed through a robust event bus. Each agent subscribes to specific types of events and publishes events upon completion of its tasks. This decouples agents, allowing them to operate and evolve independently. For instance, an 'Image Analysis Agent' might process a newly uploaded Shot, extract key visual features, and publish an 'AnalysisComplete' event. A subsequent 'Suggestion Agent' could then subscribe to this event, read the analysis results, and, if certain conditions are met, publish an 'ExperimentSuggestion' event.
State management is handled meticulously at each boundary. Before an agent processes an event, it re-reads the current state of the 'Shoot' or 'Run' it is associated with. This ensures that the agent is working with the most up-to-date information and that its actions are contextually relevant. All outcomes, whether successful processing, retries, or failures, are logged. This detailed logging forms the 'evidence' that the system preserves, building a transparent and auditable history of every decision and action taken. This contrasts sharply with monolithic AI systems where internal states can be opaque black boxes.
The 'Experiment' Option: A Controlled Creative Prompt
The 'optional experiment' feature is a carefully considered aspect of Shoots. It is not a directive but a suggestion, offered only when the system's analysis of the captured 'Shot' provides sufficient evidence. This evidence is derived from the durable learning record maintained throughout the agentic workflow. The system doesn't just guess; it identifies patterns or anomalies that might warrant a creative deviation from the photographer's usual approach.
For example, if the system detects a consistent lighting pattern across multiple shots, it might suggest an experiment involving a slight adjustment to the camera's white balance or a different lens. Or, if metadata suggests a particular time of day consistently produces suboptimal results for a certain subject, it might propose capturing similar shots with altered exposure settings. The key is that the photographer always has the final say. They can accept the suggestion, modify it, or ignore it entirely. This human-in-the-loop design ensures that Shoots acts as a powerful assistant, not a replacement for artistic judgment.
Why This Matters: Beyond the Hackathon
The principles behind Shoots—event-driven architecture, durable learning records, and human-in-the-loop decision-making—have broader implications. They offer a blueprint for building more transparent, robust, and trustworthy AI systems, particularly in domains where human expertise and creative control are paramount. By refusing to cede final decision-making to models, Shoots demonstrates a path toward AI that augments rather than automates, fostering a collaborative relationship between human creators and artificial intelligence.
