Project: Changemaker Content Planner Team Lead: Golda Velez Start: April 2026 Sprint Length: 2 weeks
| Layer | Technology |
|---|---|
| Frontend | Next.js (App Router), TypeScript, Tailwind CSS, shadcn/ui |
| API | Next.js API Routes (app/api/) |
| AI Backend | amebo (Agent Framework) → Claude API |
| Database | PostgreSQL + Prisma ORM |
| Vector Store | pgvector (for RAG + alignment scoring) |
| Name | Role |
|---|---|
| Marwan, Kene | Backend (API routes, data layer, integrations) |
| Moka, Zakia, SIA | Frontend (UI, components, pages) |
| Molly | Design |
[MVP]Core feature[AI]AI integration[DIFF]Differentiator (Catherine's framework)
Tasks are unassigned — pick up tasks on the Taiga board and assign to yourself.
Weeks 1–2 Goal: Project scaffolding, tech stack running, user stories written, design specs ready to build from.
Tag: [MVP] Setup
Description: Initialize the Next.js project with App Router, TypeScript, Tailwind CSS, and shadcn/ui. Establish the folder structure:
app/
(auth)/ — login, register
(dashboard)/ — main app pages
api/ — API route handlers
health/
generate/
components/
ui/ — shadcn/ui components
calendar/
composer/
onboarding/
lib/
types.ts — shared TypeScript interfaces
utils.ts
prisma/
schema.prisma — database schema
stores/ — Zustand or React Context state
public/
Set up ESLint, Prettier, and a .env.example with the amebo/Claude API key and DATABASE_URL placeholders.
Done when:
- Next.js app runs locally with
npm run dev - Tailwind CSS and shadcn/ui are installed and working
- At least one shadcn/ui component renders (e.g. Button)
/api/healthendpoint returns 200- Folder structure is documented in README
- Repo is pushed and README has local setup instructions
Tag: [MVP] Backend
Description: Set up PostgreSQL with Prisma ORM. Define the Prisma schema with models for User, Organisation, Role, Post, CalendarEvent, CoreValues, VisionStory, BrandVoice. Write and run initial migrations. Also define corresponding TypeScript interfaces in lib/types.ts for frontend use. Set up a Prisma client singleton for use in API routes.
Done when:
- PostgreSQL runs locally
- Prisma is installed and configured with a
prisma/schema.prisma - All core models exist with migrations applied
- Prisma client singleton is set up for API routes
- TypeScript interfaces in
lib/types.tsmatch the Prisma schema - Another dev can run
npx prisma migrate devfrom scratch without errors - Seed script exists with sample data for development
Tag: [MVP] Backend
Description: Implement authentication using NextAuth.js with PostgreSQL as the session/user store (via Prisma adapter). Cover: register, login, logout, and session management. Protect dashboard routes so unauthenticated users are redirected to login. Set up role-based access so that only authorised users can access protected endpoints.
Done when:
- Register and login pages work
- Session persists across page refreshes
- Dashboard routes are protected (redirect to login if not authenticated)
- Logout clears the session
- Auth state is accessible throughout the app via a hook or context
Tag: [AI] Backend
Description: Set up the amebo agent framework and create the Next.js API route (app/api/generate/route.ts) that acts as the bridge between the frontend and the Claude API. The route receives a context payload from the frontend (topic, platform, content type, user values, vision story), formats it with a system prompt, calls amebo, and returns structured JSON output. API keys must never be exposed to the browser.
Done when:
- amebo is installed and configured
/api/generateendpoint accepts a POST request with a content brief- Response returns structured JSON (at minimum: generated text, platform)
- API key is stored in
.env.localand never sent to the client - A test request with sample values/vision returns coherent output
- Error handling covers: missing API key, rate limits, malformed input
Tag: [MVP] Frontend
Description: Document user stories covering every feature in the MVP scope: content calendar, post composer, approval workflow, asset library, team management, AI suggestions, and the values onboarding flow. Use the format: As a [role], I want to [action] so that [outcome]. Include acceptance criteria for each story. Roles to cover: content creator, team admin, reviewer.
Done when:
- All MVP features have at least one user story
- Each story has clear acceptance criteria
- Stories are reviewed and approved by Golda
- Added to Taiga backlog
Tag: [MVP] Frontend
Description: Build the main application shell using shadcn/ui components: top navigation bar, collapsible sidebar, and main content area. The sidebar should have nav links for: Dashboard, Calendar, Composer, Assets, Team, Analytics, Settings. Use Next.js App Router layouts so the shell wraps all dashboard pages. Include a responsive mobile menu.
Done when:
- App shell renders with nav, sidebar, and content area
- Sidebar links navigate to placeholder pages (can be empty)
- Layout is responsive (sidebar collapses on mobile)
- Uses shadcn/ui components consistently
- Matches the design mockup from Task 1.9 (or uses reasonable defaults if design isn't ready)
Tag: [MVP] Frontend
Description: Review any prior work in SIA's existing repository. Identify what can be reused, what needs to be refactored, and what should be discarded. Align the existing code with the agreed stack (Next.js + shadcn/ui) and bring reusable pieces into the main repo or document why they won't be used.
Done when:
- Existing repo is reviewed and findings are shared with the team
- Decision documented: reuse / refactor / discard per file or feature
- Any reusable code is merged or ported into the main repo
- No duplicate or conflicting codebases exist
Tag: [DIFF] Design
Fallback: If Molly unavailable → low-fidelity wireframes by a frontend team member
Description: Design the onboarding screens where a user defines their core values and vision story — the foundation of Catherine's framework. The flow should feel guided and reflective, not like a form. Reference catherinealonzo.com, the Core Values Discovery Workshop, and the Changemaker's Toolkit Quiz for content and tone. Covers: welcome screen, values selection/input, vision story prompt, and confirmation/summary screen.
Done when:
- All onboarding screens are designed (min: welcome, values input, vision story, summary)
- Screens reviewed and approved by Golda
- Handed off to Frontend with interaction notes
Tag: [MVP] Design
Fallback: If Molly unavailable → functional layout without polish by a frontend team member
Description: Design the main application shell: top navigation, sidebar, and the content calendar page layout. This gives Frontend a clear visual target before building Sprint 2 components. Should cover both desktop and a basic mobile/tablet consideration.
Done when:
- Navigation and sidebar designs are complete
- Calendar page shell (empty state + populated state) is designed
- Handed off to Frontend with spacing and component notes
Tag: [DIFF] All
Description: Every team member reads the key pages on catherinealonzo.com: /the-book, /core-values-discovery-workshop, /my-story, /services, and the Changemaker's Toolkit Quiz. The goal is to deeply understand Catherine's methodology so it can be embedded into every part of the product. Take notes and share one key takeaway per person in #changemaker Slack.
Done when:
- All team members have read the listed pages
- Each person posts one takeaway in #changemaker Slack
- A shared summary doc is created with key framework concepts
Tag: [MVP] Research
Description: Document a structured comparison of Sprout Social, Jasper, Buffer, Hootsuite, and Planable. Cover: core focus, pricing, AI features, scheduling/publishing, approval workflows, and what each lacks. Conclude with a clear statement of our differentiation and the gap we fill.
Done when:
- All five tools are covered with consistent structure
- A differentiation statement is written and approved by Golda
- Doc is saved to the project Drive folder
Tag: [AI] Research
Description: Document how a user's core values and vision story will be injected into AI system prompts (via amebo → Claude) to generate aligned content. Define the prompt structure, what user data is included, how it is formatted, and how it will vary by content type (caption, blog, hashtags). This doc becomes the spec for Sprint 4 AI development.
Done when:
- Prompt structure is documented with at least two worked examples
- Covers how values and vision story are formatted in the system prompt
- Reviewed by Golda and added to the project Drive folder
Weeks 3–4 Goal: Users can plan content on a visual calendar and write/preview posts in a multi-platform composer.
Tag: [MVP] Backend
Description: Extend the Prisma schema with models for Post and CalendarEvent. A Post should store: content body, per-platform variants (JSON field keyed by platform), status (draft | review | approved | published | failed), scheduled datetime, target platforms, author relation, and organisation relation. Run migrations and update the seed script.
Done when:
- Post and CalendarEvent models exist in the Prisma schema with migrations applied
- Relations to User and Organisation are correctly defined
- Seed script includes sample posts and calendar events
- Prisma client can query these models without errors
Tag: [MVP] Backend
Description: Build Next.js API routes for creating, reading, updating, and deleting posts and calendar events. Endpoints:
POST /api/posts— createGET /api/posts— list (with query params for date range, platform, status)GET /api/posts/[id]— get singlePUT /api/posts/[id]— updateDELETE /api/posts/[id]— delete- Same pattern for
/api/calendar
Done when:
- Full CRUD for Post and CalendarEvent works via API routes
- Filtering by date, platform, and status works
- Tested with sample requests and documented
- Frontend can call these endpoints
Tag: [MVP] Backend
Description: Start implementing OAuth2 connection flows for Instagram, X (Twitter), LinkedIn, and Facebook. Users should be able to connect and disconnect their social accounts from their profile. Critical: Apply for Meta API access immediately — approval can take weeks and Sprint 3 auto-publish depends on it.
Done when:
- OAuth connect/disconnect flow works for at least 1 platform
- Tokens are stored securely in the database (encrypted)
- Connected accounts are visible in the user profile
- Meta API access has been applied for
- OAuth architecture supports adding more platforms easily
Tag: [MVP] Frontend
Description: Build a content calendar using shadcn/ui's calendar components (or a compatible React library like @dnd-kit for drag-and-drop). Toggleable month and week views. Posts appear as cards on their scheduled date. Users can drag and drop a post card to reschedule it. Connects to the posts/calendar API routes.
Done when:
- Month view and week view both render correctly
- Posts appear on the correct scheduled date
- Drag-and-drop updates the scheduled date via API
- Empty state is handled gracefully
- Works on desktop screen sizes
Tag: [MVP] Frontend
Description: Build a post creation/editing component where users write content once and can customise it per platform (Instagram, X, LinkedIn, Facebook). Each platform tab shows character limits, relevant restrictions, and a customisation field. Uses shadcn/ui Tabs, Textarea, and Form components. Connects to the Post API routes.
Platform limits:
- X: 280 characters
- Instagram: 2,200 characters
- LinkedIn: 3,000 characters
- Facebook: 63,206 characters
Done when:
- User can write a base post and open per-platform tabs
- Character limits are enforced and displayed per platform
- Post is saved as a draft via the API
- Form validates before submission
Tag: [MVP] Frontend
Description: Build preview components that render what a post will look like on Instagram, X, LinkedIn, and Facebook. Previews should reflect the per-platform customised content and attached media. These are visual mockups — not live embeds. Each preview mimics the platform's card style.
Done when:
- Preview exists for all 4 platforms
- Preview reflects platform-specific content edits
- Media placeholder is shown in the preview
- Previews update in real time as the user types
Tag: [DIFF] Design
Fallback: If Molly unavailable → Golda + a frontend team member draft the flow spec in writing
Description: Design the full interactive flow for a user to discover and define their 3–5 core values. Based on Catherine's Core Values Discovery Workshop. Should feel like a guided exercise, not a settings page. Include: intro/context screen, value selection or ranking, reflection prompts, and a final values summary the user can edit.
Done when:
- Full flow is designed (min: intro, selection, reflection, summary)
- Reviewed and approved by Golda
- Handed off with interaction and copy notes
Tag: [AI] Research
Description: Document the approach for building the RAG (Retrieval-Augmented Generation) knowledge store using pgvector. Define what sources users can add (website URLs, uploaded articles, past posts), how content will be chunked, how embeddings will be generated and stored, and how they will be retrieved at prompt time. This spec drives Sprint 4 backend work.
Done when:
- Source types are defined (URLs, uploads, past posts)
- Chunking and embedding strategy is documented
- Retrieval approach is outlined
- Reviewed by the backend team and saved to Drive
Tag: [MVP] Research
Description: Write all interface copy for the onboarding flow: headlines, descriptions, button labels, placeholder text, helper text, and empty states. Copy should reflect Catherine's voice — warm, purposeful, and direct. Reference her book and website for tone.
Done when:
- Copy covers all onboarding screens from the Sprint 1 mockup
- Reviewed and approved by Golda
- Delivered in a doc that maps copy to each screen/component
Weeks 5–6 Goal: Posts can be reviewed, approved, auto-published, and basic analytics surfaced.
Tag: [MVP] Backend
Description: Build a background job system that publishes approved posts to their target platforms at the scheduled time. Options: Next.js cron via Vercel, a separate worker process, or a lightweight job queue. Handle failures gracefully — log errors, update post status to failed, and surface the error to the user.
Done when:
- Scheduler runs as a background process or cron
- Approved posts publish to at least one platform at scheduled time
- Failed publishes update post status and log the error
- Retry logic exists for transient failures
Tag: [MVP] Backend
Description: Implement the post status lifecycle: draft → review → approved → published (or failed). Enforce valid state transitions via the API — e.g. a post cannot go from draft to published without passing through approved. Log status changes with timestamp and actor.
Done when:
- All state transitions are enforced via API routes
- Invalid transitions return a clear error
- Status change history is stored (who changed what, when)
- Tested with at least one full workflow run
Tag: [MVP] Backend
Description: Fetch basic post performance metrics from connected platform APIs after publishing (likes, reach, impressions, comments, shares where available). Store metrics against the post record. Schedule a periodic refresh.
Done when:
- Metrics are fetched for at least 2 platforms post-publish
- Data is stored against the Post model
- Periodic refresh job runs without errors
- Metrics are accessible via an API endpoint
Tag: [MVP] Frontend
Description: Build the UI for the post review and approval process. Reviewers should be able to see posts awaiting review, leave comments, approve, or request changes. Status badges (using shadcn/ui Badge component) should be visible on post cards throughout the app.
Done when:
- Posts in
reviewstatus are shown in a dedicated view - Reviewer can approve or request changes with an optional comment
- Status badges appear correctly on calendar and list views
- Actions call the correct API endpoints
Tag: [MVP] Frontend
Description: Build the team management screen where an org admin can invite members, assign roles (admin, editor, reviewer), and remove members. Role changes should take effect immediately across the app. Use shadcn/ui Table, Dialog, and Select components.
Done when:
- Admin can invite a new user by email
- Roles can be assigned and changed
- Removing a member revokes their access
- UI is permission-aware (non-admins cannot see this screen)
Tag: [MVP] Frontend
Description: Build an analytics overview page showing post performance across platforms. Include a summary of published posts, total reach/impressions, and a list of recent posts with their key metrics. Use a charting library compatible with React (e.g. Recharts) for trends.
Done when:
- Dashboard loads and displays real data from the API
- At least one chart shows a trend (e.g. posts per week)
- Per-post metrics are shown in a list
- Empty state is handled (no data yet)
Tag: [DIFF] Design
Fallback: If Molly unavailable → Golda + a frontend team member own this spec
Description: Design the guided flow for users to write their Vision Story — a narrative describing the world as they believe it should be. Based on Catherine's framework. Should include: a framing/context screen explaining what a vision story is, guided prompts to help the user write it, and a final editable text area with a save action.
Done when:
- Full flow designed (min: intro, guided prompts, final editor)
- Reviewed and approved by Golda
- Handed off with copy and interaction notes
Tag: [AI] Design / Research
Fallback: If Molly unavailable → a frontend team member owns this
Description: Define the UX for how users train their brand voice from existing content. Users should be able to paste in sample posts, upload documents, or link their website. The system analyses the content and generates a brand voice summary the user can review and edit. This spec feeds into Sprint 4 AI development.
Done when:
- Input methods defined (paste, upload, URL)
- Output format (voice summary) is specced
- Edge cases handled (not enough content, conflicting tone)
- Reviewed by Golda and saved to Drive
Tag: [MVP] Research
Description: Define the structure of the asset library: folder hierarchy, supported file types (images, video, templates), upload limits, and how assets are linked to posts. Include a spec for the UI — grid view, search, filter by type/date. Note: for Sprint 1–2 the AI provides "Image/Media Prompts" instead of hosting media. This spec is for when we add real asset hosting.
Done when:
- File types and upload limits are defined
- Folder/tag structure is documented
- UI spec covers grid view, search, and filter
- Reviewed by Golda and saved to Drive
Weeks 7–8 Goal: Values-aligned AI content generation live via amebo; onboarding connects to AI prompts; alignment scoring works.
Tag: [AI] Backend
Description: Enhance the /api/generate endpoint to accept a full content brief (topic, platform, content type) and return AI-generated suggestions (caption, hashtags, content ideas) via amebo → Claude. The user's core values and vision story are injected into the system prompt so all suggestions are values-aligned. Uses the prompt structure defined in Sprint 1 (Task 1.12).
Response format (structured JSON):
{
"suggestions": [
{
"platform": "instagram",
"caption": "...",
"hashtags": ["..."],
"mediaPrompt": "..."
}
],
"alignmentScore": 85
}Done when:
- Endpoint accepts brief and returns at least 3 suggestions
- Values and vision story are included in the system prompt
- Platform-specific constraints are respected (length, tone)
- Response time is under 10 seconds
- Endpoint is documented
Tag: [AI] Backend
Description: Enable the pgvector extension on PostgreSQL and build the pipeline that ingests user-provided sources (URLs, uploaded documents, past posts) into pgvector as embeddings. At prompt time, retrieve the most relevant chunks and include them in the amebo/Claude context. Uses the strategy documented in Sprint 2 (Task 2.8).
Done when:
- pgvector extension is enabled on PostgreSQL
- At least 2 source types can be ingested (e.g. URL + past posts)
- Content is chunked, embedded, and stored in pgvector
- Retrieval returns relevant chunks for a given query
- Ingestion job can be triggered manually and runs without errors
Tag: [DIFF] Backend
Description: Build a scoring system that measures how well a piece of content aligns with the user's stated core values and vision story. Use cosine similarity via pgvector — embed both the post content and the user's values profile, and compute a similarity score. Return the score and a brief breakdown per value.
Done when:
- Score is computed and returned for any post
- Score is between 0–100 and is meaningful (tested with clearly aligned vs misaligned examples)
- Per-value breakdown is returned alongside the total score
- Score is stored on the Post model and accessible via API
Tag: [DIFF] Frontend
Description: Implement the values and vision story onboarding flow from the designs produced in Sprint 1 (Task 1.8). Users complete this during signup or from their profile. The completed values and vision story are saved to their profile and used in all AI prompts going forward. Uses shadcn/ui Stepper, Card, and Form components.
Done when:
- All onboarding screens are built to spec
- Values and vision story are saved to the user profile via API
- Flow is skippable but prompted again if empty
- Works on desktop and mobile
Tag: [AI] Frontend
Description: Add an AI suggestions panel to the post composer. Users can request caption suggestions, hashtag ideas, or a full content idea based on their brief. Suggestions are generated using the /api/generate endpoint and reflect the user's values. Users can accept, edit, or dismiss suggestions. Uses shadcn/ui Sheet or Drawer component.
Done when:
- Panel opens in the composer and calls the AI endpoint
- At least 3 suggestions are displayed
- User can insert a suggestion into the composer with one click
- Loading and error states are handled
- Does not block the composer while loading
Tag: [DIFF] Frontend
Description: Show the alignment score on each post card and in the post detail view. Include a visual indicator (e.g. a coloured badge or progress ring) and a tooltip or expandable section showing the per-value breakdown. Score should update when post content is edited.
Done when:
- Score badge is visible on post cards in the calendar and list views
- Post detail shows per-value breakdown
- Score refreshes when content is edited (on save or debounced)
- Colour coding reflects score range (green ≥75, yellow 50–74, red <50)
Tag: [AI] Research
Description: Test and refine the amebo/Claude system prompts using real values and vision story examples from Catherine's framework. Run at least 10 varied test cases across different content types and platforms. Document what works, what doesn't, and the final prompt structure used in production.
Done when:
- At least 10 test cases documented with inputs and outputs
- Prompts produce noticeably more aligned content vs baseline (no values)
- Final prompt structure is documented and committed to the repo
- Reviewed by Golda
Tag: [MVP] All
Description: Run a complete end-to-end test of the entire product flow: onboarding (values + vision) → create post in composer → AI suggestions → schedule on calendar → approval workflow → auto-publish → analytics. Log all bugs found in Taiga. Every team member should run through the flow independently.
Done when:
- All team members have completed the full flow
- All critical and high bugs are logged in Taiga
- No blocker bugs remain unresolved
- A short test report is written and shared in Slack
Tag: [DIFF] Research
Description: Create a plan for recruiting and running beta testing with users from Catherine's community (workshop participants, podcast listeners, newsletter subscribers). Define: who to recruit, how many, what tasks to test, what feedback to capture, and how findings will feed back into the product.
Done when:
- Recruitment approach is defined (channel, message, criteria)
- At least 5 beta users are identified or confirmed
- Test script / task list is written
- Feedback capture method is set up (form, interview guide, etc.)
- Plan is reviewed and approved by Golda
| Risk | Mitigation |
|---|---|
| Molly's availability | Every Design task has a fallback noted. Golda approves UX decisions. |
| SIA's existing repo | Must be reviewed in Sprint 1 (Task 1.7) before any new code is written to avoid duplicate work. |
| Meta/Instagram API approval | Apply for access in Sprint 2 (Task 2.3). Approval can take weeks — Sprint 3 auto-publish depends on it. |
| PostgreSQL setup | DB is set up in Sprint 1 (Task 1.2). All team members need PostgreSQL running locally — document setup clearly in README. |
| amebo framework maturity | Run a quick spike in Sprint 1 (part of Task 1.4) to validate amebo works for our use case before building on it. |
| API contract between backend & frontend | Define TypeScript types in lib/types.ts as the shared contract — both API routes and frontend import from the same source. |
| ID | Task | Tag | Role |
|---|---|---|---|
| 1.1 | Initialize Next.js project & folder structure | [MVP] | Setup |
| 1.2 | Set up PostgreSQL + Prisma and define data models | [MVP] | Backend |
| 1.3 | Set up authentication flow | [MVP] | Backend |
| 1.4 | Set up amebo AI bridge | [AI] | Backend |
| 1.5 | Write user stories for all MVP features | [MVP] | Frontend |
| 1.6 | Build base app shell — layout, nav, sidebar | [MVP] | Frontend |
| 1.7 | Audit SIA's existing repo & align with stack | [MVP] | Frontend |
| 1.8 | Mockup — values & vision onboarding flow | [DIFF] | Design |
| 1.9 | Mockup — overall app layout, nav, calendar shell | [MVP] | Design |
| 1.10 | Read and annotate catherinealonzo.com | [DIFF] | All |
| 1.11 | Competitive analysis write-up | [MVP] | Research |
| 1.12 | Draft AI prompt strategy document | [AI] | Research |
| ID | Task | Tag | Role |
|---|---|---|---|
| 2.1 | Post & calendar data models | [MVP] | Backend |
| 2.2 | CRUD API routes for posts and calendar | [MVP] | Backend |
| 2.3 | Platform OAuth setup (begin) | [MVP] | Backend |
| 2.4 | Visual calendar — month/week view with drag-and-drop | [MVP] | Frontend |
| 2.5 | Multi-platform post composer | [MVP] | Frontend |
| 2.6 | Per-platform post preview | [MVP] | Frontend |
| 2.7 | Core values discovery flow — spec & mockup | [DIFF] | Design |
| 2.8 | RAG source strategy document | [AI] | Research |
| 2.9 | UX copy — onboarding screens | [MVP] | Research |
| ID | Task | Tag | Role |
|---|---|---|---|
| 3.2 | Auto-publish scheduler | [MVP] | Backend |
| 3.3 | Approval workflow state machine | [MVP] | Backend |
| 3.4 | Basic analytics data ingestion | [MVP] | Backend |
| 3.5 | Approval workflow UI | [MVP] | Frontend |
| 3.6 | Team roles & permissions UI | [MVP] | Frontend |
| 3.7 | Basic analytics dashboard | [MVP] | Frontend |
| 3.8 | Vision story builder — spec & flow | [DIFF] | Design |
| 3.9 | Brand voice onboarding spec | [AI] | Design / Research |
| 3.10 | Asset library spec & folder structure | [MVP] | Research |
| ID | Task | Tag | Role |
|---|---|---|---|
| 4.1 | AI content generation endpoint (amebo) | [AI] | Backend |
| 4.2 | RAG pipeline — pgvector source ingestion | [AI] | Backend |
| 4.3 | Alignment scoring engine | [DIFF] | Backend |
| 4.4 | Build values & vision onboarding flow | [DIFF] | Frontend |
| 4.5 | AI suggestions panel in the composer | [AI] | Frontend |
| 4.6 | Alignment score display on posts | [DIFF] | Frontend |
| 4.7 | Prompt engineering — values layer tuning | [AI] | Research |
| 4.8 | End-to-end QA — full content workflow | [MVP] | All |
| 4.9 | Beta user testing plan | [DIFF] | Research |
Total: 39 tasks across 4 sprints