Project Info
Inspiration
The idea for Otto started with a friend of ours who is a full-time TikTok creator. He's genuinely good at what he does; his content performs, his audience is loyal, but growing the business side of being a creator was a constant guessing game. Which brands should he reach out to? Was he undercharging for sponsored posts? Which of his videos actually signaled an opportunity worth acting on, and which were just noise? TikTok will tell him his engagement rate, his views, his follower growth, but it never tells him what any of that actually means for his business. We started by building him a small pricing calculator, just a quick spreadsheet-style tool to help him figure out what to charge. But the more we used it, the more obvious it became that we'd built the same kind of thing we were trying to move past: another number with no context around it. What he actually needed was something that could analyze his metrics and tell him what to do with them: an outreach email, a rate he could defend, and a content idea grounded in what was already working. Translating raw metrics into something actionable, specific, and ready to execute became the real goal, and that's what turned a pricing calculator into Otto.
What it does
Otto is an AI Chief of Staff for content creators. Instead of another analytics dashboard telling you your engagement went up, Otto looks at a creator's actual TikTok data and turns it into concrete, ready-to-use actions: A Dashboard that opens with the two or three things that matter most today, plus a running check-in on whether last week's advice actually worked. A Brand Pipeline that identifies real brands worth pitching, drafts the outreach email grounded in the creator's best-performing content, and adjusts the pitch on request. A Content Studio that turns "what's working" into a concrete plan for the next post, tied to both the creator's own breakout content and what's currently trending. A Pricing tool that works like a live calculator: ask "what if a global brand wants a paid ad instead of an organic post" and it recalculates a full rate card on the spot, showing exactly why the number moved.
How we built it
Otto's frontend is built with Next.js and Tailwind, and the whole experience is powered by a small team of specialized AI agents: a Content Agent, a Growth Agent, and a Business Agent, each analyzing a different slice of the creator's data, coordinated by an AI Manager that synthesizes their findings into a ranked set of priorities using OpenAI's Responses API with Structured Outputs. Real TikTok data is pulled in through an Apify scraper, so every recommendation is grounded in the creator's actual posts, not a mock dataset. On the design side, we used Figma to prototype and iterate on the UI before touching code, which also gave us much clearer, more specific prompts to hand off to Codex instead of trying to describe layouts in words. We used Codex and ChatGPT throughout development to help us design and iterate on the agent prompts, the UI, and the overall architecture.
Challenges we ran into
The biggest challenge was performance. Running a live scrape and then coordinating multiple AI agents in sequence made the analysis take a long time, which is a real problem when someone is sitting there waiting for their dashboard to load. We spent a lot of time optimizing this: running the agents in parallel instead of one after another, caching results so a repeat analysis doesn't require re-scraping, and designing the loading experience so the wait itself feels like progress rather than dead time.
Accomplishments we're proud of
What we're most proud of is that Otto's advice doesn't feel generic. Because everything is grounded in a creator's own data (real videos, real engagement numbers, real trends), the recommendations feel tailored to that specific person and are immediately actionable. Nothing Otto suggests requires a creator to figure out what to do next; the email is already drafted, the rate is already calculated, the content idea is already outlined. It also explains the why behind every suggestion, how it actually moves the needle, so each recommendation becomes a bit of a learning opportunity for the creator, not just a task to check off.
What we learned
We learned a lot about optimization, both technical (how to make a multi-agent pipeline fast enough to feel responsive) and in terms of the advice itself, how to keep every recommendation grounded in real data instead of drifting into generic, one-size-fits-all suggestions. We had to do system prompting and try different versions to create the experience of a trustworthy business partner. This pushed us to be genuinely careful about every number and claim Otto makes, not just optimize for something that looks impressive.
What's next
for Otto: The AI Chief of Staff for Creators Our next step is getting Otto in front of more creators beyond our friend who inspired it, real people with real accounts, so we can see how well it generalizes across different niches, follower sizes, and platforms. The creator economy is estimated at over $250 billion globally in 2026 and is on track to keep growing at more than 20% a year, with over 200 million creators worldwide, the overwhelming majority of whom are managing their business side entirely on their own, exactly like our friend was. Longer term, we don't think the need Otto solves is unique to creators. Anyone whose income is tied to their online presence: freelancers, consultants, coaches, independent artists, even small business owners building a following around their brand, faces the same problem: plenty of metrics, no translation into what to actually do next. We'd love to grow Otto into that broader space, tracking ongoing client and brand relationships over time, expanding beyond TikTok, and deepening the memory piece so Otto feels less like a tool you check in on and more like a manager who's been with you the whole way.
Otto | AI Chief of Staff for Creators
Otto helps creators turn social performance data into concrete next actions: growth priorities, brand outreach, content plans, and pricing guidance.
The current demo supports TikTok and Instagram creator analysis using Apify for scraping and OpenAI for structured agent reasoning.
What This Project Does
- Scrapes or loads creator profile data for TikTok and Instagram.
- Normalizes recent posts/videos into a shared creator profile format.
- Runs specialized AI agents for content, growth, and business analysis.
- Produces a ranked creator brief with priorities, insights, and recommendations.
- Provides interactive workspaces for:
- Dashboard priorities
- Brand pipeline and outreach email drafting
- Content studio planning
- Pricing/rate-card guidance
Setup
-
Install dependencies:
npm install -
Create a local environment file:
cp .env.example .env.local -
Add your local secrets to
.env.local:OPENAI_API_KEY=your_openai_key APIFY_API_TOKEN=your_apify_token DEMO_PASSWORD=choose_a_demo_password.env.localis ignored by git. Do not commit real API keys. -
Start the dev server:
npm run dev -
Open the app:
http://localhost:3000
Try _offo for TikTok or _offo98 for Instagram.
API Keys And Demo Data
This repo does not include API keys. That is intentional.
To run live scraping and live AI analysis, each developer needs their own:
OPENAI_API_KEYAPIFY_API_TOKEN
Without keys, the app can still run locally using fallback demo/mock data, but live scraping and AI-generated responses will not work. The app is designed to fall back in this order:
- Fresh cache, if available
- Live Apify scrape, if credentials are configured
- Older cache, if scraping fails
- Mock demo data from
lib/mockData.ts
For a public demo, deploy the app yourself and set API keys as server-side environment variables in the hosting provider, for example Vercel Environment Variables. Do not put real keys in GitHub.
Useful Commands
Run the app locally:
npm run dev
Typecheck:
npm run typecheck
Lint:
npm run lint
Build:
npm run build
Run the agent manager test script:
npm run test:manager
Data Notes
Live TikTok and Instagram data is fetched through Apify actors when APIFY_API_TOKEN is configured.
Normalized creator data includes:
- Platform and handle
- Follower count
- Engagement rate and trend
- Recent posts/videos
- Sponsored-content detection
- Breakout-video detection
- Whether metrics are estimated
TikTok view metrics are treated as public real data. Instagram reach/views are not generally available from public scraping, so Instagram performance metrics are marked as estimated where appropriate.
OpenAI Usage
The app uses OpenAI structured outputs for predictable agent responses.
OpenAI is used for:
- Content agent: identifies repeatable content patterns and suggests next content moves.
- Growth agent: evaluates audience and performance trends.
- Business agent: turns creator metrics into brand and pricing recommendations.
- Manager agent: synthesizes the specialist outputs into a ranked action plan.
- Email generation: drafts outreach emails using only the recommendation's supporting metrics.
- Interactive workspace chat: refines brand outreach, content plans, and pricing guidance.
Schemas are defined with Zod in lib/types.ts and exported to JSON Schema for structured outputs.
How Codex Accelerated The Workflow
Codex was used as a pair-programming agent throughout the build.
It accelerated the workflow by:
- Scaffolding the Next.js App Router project structure quickly.
- Creating shared Zod schemas and TypeScript types for the data model.
- Implementing Apify scraping, normalization, caching, and mock-data fallback logic.
- Building multi-agent OpenAI workflows with structured outputs.
- Adding API routes for analysis, email generation, brand chat, content chat, and pricing chat.
- Iterating on the UI from rough requirements and Figma screenshots into a working multi-tab product.
- Running local validation after changes with typecheck, lint, build, route checks, and dev-server restarts.
Key product decisions made during the process:
- Keep secrets out of GitHub and use
.env.localfor local credentials. - Make the demo usable without live credentials through cache/mock fallback.
- Favor structured outputs over free-form AI text for stable product behavior.
- Present Otto as a proactive workspace instead of a passive analytics dashboard.
- Use separate tabs for the main creator workflows: Dashboard, Brand Pipeline, Content Studio, and Pricing.
Analysis
View
Metric
- 8
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
186 KB
Source files
34
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
jawo2/openai_build_AI_COS
42 files · 443 KB · @ 88608f0
Structure
Interface
9 files · 21%Screens, components and styles rendered to the user.
API & routing
8 files · 19%Request entry points: routes, handlers and controllers.
Application logic
14 files · 33%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript97%
- Markdown3%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 17- apify-client
- next
- openai
- react
- react-dom
- zod
- zod-to-json-schema
- +10 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.