The open manual for the operating system we run Edge8 on: the weekly rhythm, the system map, the data model, and how to stand it up yourself. Fork the code, grab the tables, or have us install it.
Every company we work with has the same architecture: a strategy that lives in a deck, and execution that lives in fifteen disconnected tools. The deck is opened twice a year. The tools never agree with each other. In between sits the actual company, running on memory and Slack.
8 Edges is our answer. It is one system where strategy cascades into goals, goals are proven by metrics, metrics are reviewed in a weekly rhythm, problems become owned issues, and the day-to-day work (sales, hiring, coaching, delivery) happens on the same data spine. AI agents work inside it as team members: they file cards, update records, and draft documents, while humans make the decisions.
We believe leadership is now 50% human and 50% AI, and that the second half needs a home with structure. This is that home.
The name is the math. A company runs on four offices: Revenue, Talent, Operations, Innovation. Each office is run by two forces working the same tables: a human edge that decides, and an AI edge that executes and files. Four offices, two edges each: 8 edges.
The system exists to keep all eight sharp: the human edges get the rhythm (goals, metrics, syncs, issues), the AI edges get the substrate (one schema, attributed writes, human gates). A company with dull edges anywhere, an office nobody owns or an office AI never touches, is leaving half its leverage on the table.
We are open sourcing it because the operating model is more valuable shared than hoarded. Fork the code, take the tables, run it yourself. And if you would rather have it installed, migrated, and taught to your team, that is a service we sell. Both paths are in this manual.
The software is the easy part. What makes 8 Edges work is a small set of operating disciplines. Adopt these even if you never install the code.
One meeting, thirty minutes, same agenda every week: review the scorecard, review the goals, surface issues. Metrics are live on screen, so there is no status theater. Anything off track becomes an issue before the meeting ends, with one owner and one date.
Most tools blur these three into one "goals" feature. Keeping them distinct is half of why the coaching layer works.
Every problem gets exactly one owner and a date, and it stays visible until it is actually resolved. Shared ownership is how problems survive for months; the system does not allow it.
Day-to-day work is organized into four offices on one shared people spine: Revenue (CRM, deals, proposals), Talent (hiring, interviews, coaching, reviews), Operations (equipment, time off, onboarding, finance sync), and Innovation (programs and ideas). One person is one record everywhere: candidate, team member, interviewer, coach, and account contact are the same row wearing different lenses.
Agents are staff, not features. A scheduled agent reads the sales call transcript and updates the CRM. Another drafts the proposal. Another grades the laptop fleet quarterly. Their work is attributed to them, lands on the same boards the humans use, and is reviewed like any other work. Humans decide; agents execute and file.
The test of adoption is not logins. It is: does the weekly sync run out of the system, and does every problem raised in it leave with an owner and a date? Get that habit and the rest follows.
The core is deliberately boring: Next.js on Vercel, Postgres on Supabase, Claude for the agents. Static marketing pages and proposals are plain HTML in the same repo. Everything deploys through git push and CI. There is no queue, no microservices, no Kubernetes. A two-person team can operate it.
| Layer | Service | Role |
|---|---|---|
| App | Next.js on Vercel | All three surfaces, the crons, and analytics. Deploys on git push through GitHub CI. |
| Data | Supabase (Postgres) | The Company OS schema, auth, and file storage. |
| AI | Claude (Anthropic API) | Every agent: CRM updates, proposals, extraction, chat assistants, resume screening. |
| Resend + Brevo | Resend sends transactional mail (invites, sign-in links, notifications); Brevo runs marketing and nurture. | |
| Messaging | Lark + Telegram | Lark is the team's home: chat webhooks for ops and coaching alerts, calendar, docs, and meeting transcripts that feed the CRM agents. Telegram carries a notification bot. |
| Money | Stripe + QuickBooks | Stripe takes payments; QuickBooks invoices sync in weekly so revenue metrics are never hand-typed. |
| Media | Gemini + ElevenLabs | Image generation for content, and voiceover for the demo video pipeline. |
Every integration is optional except the first three rows. Unconfigured ones degrade to "the humans do it manually," never to a broken page.
This is the map, not the reference: table purposes, key relationships, and the conventions you cannot read from the DDL. The schema itself (columns, types, constraints) lives in the repo and is the source of truth.
| Table | What it is |
|---|---|
people | Every human the company touches: team, candidates, client contacts, leads. One row per person, forever. Everything else points here. |
companies | Every organization: clients, prospects, vendors, partners. |
person_companies | Who belongs to which company, with role. People move; history stays. |
team_members | The employment lens on a person: status, start date, department, the link to their portal login. |
people_sensitive, compensation | Restricted personal and pay data, split out so access can be scoped tightly. |
departments, positions | Org structure. |
Convention: never create a second record for a person who already exists in another role. The candidate you hire becomes the team member; the client contact who churns stays as history. The spine is the whole point.
| Table | What it is |
|---|---|
core_values, strategies | The top of the cascade: what the company stands for and its strategic bets. |
objectives, key_results | The goal tree: company to team to person, each objective owned and checked in. |
metrics, metric_readings | The scorecard: each metric has one owner and a target; readings are the history, one row per period. |
issues | Problems with one owner and a date, visible until resolved. |
sync_packets | The weekly sync: the agenda snapshot and what was decided, one packet per session. |
client_roadmap_groups, client_roadmap_overview, client_backlog_items | Per-client living roadmaps. Groups are per-company rows, so each engagement gets its own section structure, not a template. |
| Table | What it is |
|---|---|
lead, inquiries | Inbound interest before it is qualified. |
deals | Money in motion: type (new, renewal, expansion), value split by category, and a renewal chain linking each year's contract to the next. |
interactions | The relationship timeline: calls, emails, meetings, attached to people and companies. Agents write most of these. |
call_transcripts, meetings, meeting_participants, meeting_notes | Raw conversation records that agents mine into CRM updates and proposals. |
invoices, products, orders, qbo_connection, fx_rates | The finance mirror: invoices sync from accounting on a weekly cron, never hand-entered. |
Convention: leads are not deals. A deal exists only when a real transaction is forming. Auto-creating one deal per lead is how pipelines become fiction.
| Table | What it is |
|---|---|
job_requisitions | Open roles. |
applications, application_stages, application_stage_log | Candidates per role, the stage pipeline, and a log of every stage move: the log is what powers days-in-stage. |
resumes, candidate_profile | Documents and extracted candidate data. |
interviews, interview_interviewers | The loop: rounds, and who sits on each round (pointing back at people). |
interview_scorecards, scorecard_scores | Structured feedback per interviewer per round, with per-dimension scores. |
requisition_loop_steps, requisition_loop_interviewers | The interview loop template per role. |
Convention: blind-first feedback. An interviewer cannot read anyone else's scorecard until their own is submitted. Enforce it server-side, not in the UI.
| Table | What it is |
|---|---|
coaching_profiles, coaching_one_on_ones | The coaching relationship and every session in it: the thread that never resets. |
coaching_goals, coaching_priorities, coaching_commitments | The three concepts, kept as three tables on purpose (measured on, growing, promised). |
coaching_checkins, coaching_trends, coaching_ocean_profiles | Pulse signals and personality context that inform sessions. |
performance_reviews | Formal review cycles, built on the same spine. |
| Table | What it is |
|---|---|
boards, board_columns, board_members | Trello-shaped boards with scoped membership: admins, team members, clients, and agents can all sit on a board. |
tasks, task_stage_log, sprints | Cards, every column move logged (time-in-column for free), and sprint groupings. |
Convention: one write gate. Every card write resolves the actor first (human or agent) and stamps attribution. Agent-filed cards are first-class and reviewable, never anonymous system rows.
| Table | What it is |
|---|---|
equipment, equipment_assignments, equipment_requests | The hardware fleet, who holds what, and requests. Feeds the quarterly fitness grading. |
time_off, leave_policies, leave_adjustments, dayoff_snapshot | Leave: requests, policy, balances. |
onboarding_plans, onboarding_tasks, lifecycle_transitions | Joining, changing roles, leaving, as tracked flows. |
surveys, survey_fields, survey_responses, survey_answers | A generic survey engine. Reuse it for any structured intake before you build a bespoke form. |
documents, team_directory, team_knowledge | Files and internal reference. |
| Table | What it is |
|---|---|
admins | Who can use the admin surface. |
portal_members, portal_assume_sessions | Client portal access, and support impersonation with a trail. |
audit_log | Who did what, including agents. |
Convention: the app role cannot delete. Application credentials get insert, select, and update, but no delete on core tables. Corrections are upserts; removal is a human running SQL. This single grant decision has saved us from every "the agent wiped the table" failure mode.
public/..env.local template listing every required and optional var with a one-line comment each: Supabase keys, Resend, AI keys, integrations.people row), scoped invites for client portals.These are the agents we run in production. Each is a scheduled or triggered Claude session with access to the same tables and a narrow job. Rebuild them on your stack with any agent framework; the pattern matters more than the code.
| Agent | Trigger | What it does |
|---|---|---|
| Call to CRM | Daily, evening | Reads the day's sales call transcripts, updates companies, contacts, deals, and files interaction records. |
| Call to proposal | On demand | Drafts a styled, live proposal page from a call transcript. A human reviews and sends. Minutes, not days. |
| Booking to lead | Daily, morning | Turns yesterday's meeting bookings into lead records with context. |
| Finance sync | Weekly cron | Mirrors accounting invoices into the OS so revenue metrics are never hand-typed. |
| Fleet fitness | Quarterly | Grades every team laptop against a hardware floor and reports the failures, ranked. |
| Weekly rhythm | Weekly crons | Prepares the sync packet, chases stale metrics, and nudges issue owners before the meeting. |
Design rules we hold agents to: every write is attributed, every routine has a human gate before anything outward-facing (email, proposal, payment), and every routine fails toward silence plus a log, never toward destructive cleanup.
If you would rather run the company than the migration, we install 8 Edges for you. Fixed price, fixed scope:
The goal of the engagement is independence. Everything we install is the same open source code in this manual; there is no proprietary lock-in and no subscription. If you outgrow us, you keep everything.