Cut AI Code-Review Costs: How to Migrate from SaaS to Kodus Self-Hosted
A migration playbook for moving from expensive hosted AI code review to Kodus self-hosted with ROI, SSO, rules, and infra guidance.
If your engineering org has adopted AI-powered code review, you already know the tradeoff: better review throughput and faster feedback, but also rising usage bills, opaque margins, and vendor lock-in. Kodus gives teams a different operating model: bring your own model keys, self-host the platform, and keep control over security, policy, and cost. That matters most for teams with heavy pull request volume, especially monorepo code review workflows where a single change can touch multiple services, packages, and deploy targets. It also matters when leaders need a practical migration guide that balances engineering velocity with finance, compliance, and identity requirements.
This guide is a migration playbook for engineering leaders, platform teams, and security stakeholders. We’ll cover the analysis you should do before moving, the infrastructure patterns that make self-hosting reliable, the security and SSO questions you must answer, how to translate existing review rules into Kodus’ rules engine, and how to build an ROI model that finance can trust. We’ll also walk through common gotchas, including queue sizing, webhook reliability, model selection, and how to prevent your new system from becoming just another unowned platform. If you want an analogy, think of this as moving from a managed apartment to a custom-built house: you gain control and long-term cost efficiency, but you now own the plumbing, locks, and maintenance.
1. Why Teams Move Off Hosted AI Code Review Services
1.1 The hidden cost stack is bigger than the invoice
The most obvious pain point is the monthly bill, but that is only the visible part of the spend. Hosted AI code review tools often bundle markup on top of the model provider, add enterprise seat fees, and charge separately for higher context windows or additional repositories. Once you add variable usage from spikes in PR volume, the forecast becomes noisy enough that finance teams struggle to model accurately. By contrast, self-hosted Kodus lets you pay the model provider directly and keep the platform layer under your own control, which makes the true cost easier to understand and optimize.
That transparency is especially valuable if your organization already watches infrastructure cost carefully. Teams that have learned lessons from automation-heavy operating models know that tooling efficiency often comes from removing intermediary fees and reducing waste, not from squeezing the last drop out of a single vendor. The same logic applies here: if your review platform is a pure pass-through layer plus business rules, then you should not be paying a premium forever for access to your own models. Cost control is not only about lower spend; it is also about predictable spend.
1.2 Privacy, compliance, and source-code sovereignty matter
AI code review can expose sensitive code snippets, security findings, proprietary algorithms, and internal naming conventions. For teams in regulated industries, that data may have to stay within specific trust boundaries, cloud accounts, or regional hosting environments. Self-hosting Kodus gives you a much cleaner story for compliance teams because the data path is documented, the deployment target is known, and access can be constrained to your own network. That makes security reviews and vendor assessments far less painful than with a black-box SaaS service.
This is the same pattern you see in other sectors shifting toward more controlled AI operations. In security, for example, organizations adopting AI-driven decision systems quickly learn that the architecture matters as much as the model. In code review, the equivalent question is not just “what does the model recommend?” but “where did the source code go, who can see it, and how is it retained?” If you cannot answer those questions confidently, your AI review platform is creating governance debt.
1.3 Vendor lock-in is a product risk, not just a procurement issue
When a hosted code-review vendor controls the workflow, you inherit their roadmap, their pricing, and their model choices. If they degrade quality, raise prices, or discontinue a feature you depend on, you have little leverage beyond a painful migration. Kodus shifts the center of gravity back to your team: the platform is open source, model-agnostic, and designed to run in your environment. That means you can switch providers, tune prompts, or adjust policies without rebuilding the entire review surface.
This matters because AI tools are moving quickly. The last thing a platform team needs is a review system that becomes a strategic dependency with no escape hatch. If you need a parallel example of why controlled interoperability matters, consider the thinking behind quantum readiness for IT teams: the organizations that prepare early are the ones that can adapt, while the others are forced into rushed replacements. The same logic applies to code review infrastructure.
2. What Kodus Is and How Its Self-Hosted Model Works
2.1 Kodus as a model-agnostic review layer
Kodus is best understood as a code-review control plane for AI feedback. Rather than owning the model itself, it orchestrates analysis, rules, and workflow integration around the model of your choice. That gives you flexibility to use Claude, GPT-style endpoints, Gemini, Llama, or other OpenAI-compatible services depending on budget, latency, and data requirements. For engineering leaders, the practical benefit is simple: the platform adapts to your policy and model strategy instead of forcing you into a single vendor stack.
In real terms, that means you can reserve the most expensive model for only the riskiest or most complex pull requests, while routing routine changes to a cheaper option. If your current SaaS tool charges a premium for every PR regardless of complexity, that is where the savings come from. Teams that want a broader context on how developers are using AI in production can also compare this with AI collaboration patterns in Google Meet, where the key value is orchestration, not model ownership.
2.2 Self-hosting changes your operating model
Moving Kodus on-premises, into your cloud account, or into a locked-down platform namespace gives you direct control over networking, secrets, logs, and upgrades. That control is powerful, but it means your team now owns service reliability and lifecycle management. The upside is that you can align the deployment with your internal standards for observability, availability, and incident response. The downside is that you cannot treat the system like a disposable SaaS tab anymore.
This is where platform discipline pays off. If your organization already manages internal developer platforms or Kubernetes-based services, self-hosted Kodus should feel familiar: define the deployment contract, expose only the required ingress, and centralize secrets in your vault solution. If you need a reminder of how much architecture affects user experience, look at how teams approach performance-focused hardware design: the quality of the user experience often depends on the invisible systems beneath it.
2.3 Monorepo support is not a nice-to-have
For modern companies, especially those with shared libraries and many deployable apps, the codebase is often a monorepo. In that setup, one change can cascade across services, CI jobs, package boundaries, and release workflows. A review tool that does not understand cross-package impacts produces shallow feedback or misses the actual blast radius. Kodus’ architecture is a strong fit here because its workflow and context handling are built for repository-aware analysis, not just line-by-line commentary.
That matters when you are reviewing changes that affect shared auth libraries, design systems, or runtime configs. In a monorepo, the question is often not “is this diff syntactically valid?” but “what downstream systems will break if this lands?” That is the same multi-layer reasoning you see in reproducible experiment packaging: the artifact itself is only useful if the surrounding context is preserved. Review systems should behave the same way.
3. Migration Readiness: What to Audit Before You Move
3.1 Inventory current usage, not just current spend
Before migrating, capture at least 30 days of usage data from your existing hosted tool. You need PR volume, average comments per PR, repo distribution, model tier usage, peak review hours, and team-level adoption. Cost analysis without usage shape is misleading because two tools with the same monthly bill may have very different efficiencies. One may be expensive because of a few giant repositories, while another may be inefficient because every small PR is routed to a premium model.
Build a baseline table with repository names, average PR size, review latency, and defect categories caught by AI versus humans. This gives you a comparison point after migration and helps you set expectations with engineering managers. If you want to sharpen the measurement mindset, our guide on branded links and attribution is a good reminder that meaningful measurement starts with clean baselines, not vanity numbers.
3.2 Classify repositories by risk and review intensity
Not every repository should be treated the same. Production-critical services, payment flows, auth layers, and infrastructure-as-code should likely receive stricter review rules than a documentation repo or a small internal tool. Group repos into tiers such as high, medium, and low risk, then define what “AI review” means for each tier. For example, high-risk repos may require security and architecture prompts, while low-risk repos may only need style and test coverage checks.
This risk-based segmentation is also how strong operational teams work in other domains. The principle shows up in institutional risk rules, where the best systems don’t apply one blunt control to everything. They use exposure-aware thresholds. Apply that same logic to code review and you’ll avoid both false confidence and over-engineering.
3.3 Map policy, compliance, and identity requirements early
In a serious migration, security and identity are not afterthoughts. Document whether the service must support SSO, SCIM, RBAC, audit logs, regional data residency, or key management via your cloud KMS. Ask who may administer rules, who may view review logs, and whether AI prompts or comments should be retained for incident investigation. These questions determine the deployment design as much as CPU and memory do.
Teams often underestimate how much identity policy influences software adoption. If a developer has to juggle a separate login or cannot use the company IdP, adoption drops quickly. The lesson is similar to what businesses learn from UI security changes: if security controls are clumsy, users route around them. Put identity and access design at the center of the migration.
4. Infrastructure Design for a Reliable Self-Hosted Deployment
4.1 Start with a simple, supportable topology
For most teams, the right starting point is a modest production deployment with separate services for web, workers, and backing storage. The web app handles user interaction and integrations, the worker processes PR analysis jobs, and the database stores configuration, policies, and history. Add a queue so bursts of PR activity do not overload the system, and keep external model requests isolated behind a well-defined secrets and networking layer. This keeps the architecture understandable for your platform team and easier to troubleshoot during the first few weeks.
Do not overcomplicate version one with unnecessary microservices. Many migration failures happen because teams confuse “self-hosted” with “perfectly cloud-native on day one.” Instead, design for correctness and observability first. This is a useful principle in high-scale environments, much like the engineering mindset behind cloud architecture for game launches: the real challenge is absorbing bursts without losing responsiveness.
4.2 Make observability part of the rollout, not a later enhancement
Self-hosting means you own uptime, latency, and job success rates. Instrument request latency, queue depth, failed model calls, PR processing time, webhook retries, and rule evaluation durations. You should be able to answer questions like: How many PRs were queued? Which repositories create the longest reviews? Which model endpoint is slowest? Without that data, your migration will feel successful until the first incident.
In practice, you want dashboards that show both business and technical signals. Business signals include review coverage and comment acceptance rate. Technical signals include worker saturation and external API error rates. If your team is already building internal dashboards, the thinking behind business confidence dashboards is directly relevant: metrics should support decisions, not just decorate a board.
4.3 Secure the network path and secrets
Keep the deployment inside your approved network perimeter and lock down outbound traffic to the model providers you actually use. Treat API keys as highly sensitive secrets, rotate them periodically, and separate keys by environment and model when possible. If you are in Kubernetes, mount secrets from your vault or external secret manager rather than baking them into manifests. Make sure logs never capture raw secrets, source snippets beyond policy, or prompt data you have explicitly chosen not to retain.
Security review teams will ask whether the service can be inspected and whether incidents can be investigated without full code exfiltration. Be prepared with a clean answer. That answer gets easier if you borrow operational discipline from the broader AI security landscape, including the concerns discussed in AI-driven security risks in web hosting. The principle is consistent: control the attack surface before you scale usage.
5. SSO, RBAC, and Enterprise Identity Integration
5.1 SSO should be part of the first production cut
Engineering leaders often delay SSO until after launch, but that creates avoidable friction. If a tool will be used by developers, reviewers, managers, and platform engineers, identity needs to be frictionless from the start. Integrate your identity provider through SAML or OIDC, then map groups to roles such as admin, policy author, reviewer, or read-only auditor. This reduces shadow access patterns and makes offboarding straightforward.
When SSO is handled properly, the tool feels native to the company instead of like a pilot project. That drives adoption and reduces support tickets. It also helps with audit posture, because you can tie every high-impact change back to an authenticated identity and role. Teams that care about governance may also appreciate the broader organizational lesson from regional operating models: scale works better when access, responsibility, and decision-making are clearly distributed.
5.2 RBAC needs to reflect how code review actually works
Not all reviewers need equal permissions. A good RBAC model should let policy owners define and edit rules while keeping most users limited to viewing results, acknowledging comments, and configuring their own repository subscriptions. In larger organizations, you may also need a separation between security reviewers and application reviewers so that high-risk findings are routed properly. Make these roles explicit before launch, not after the first complaint.
It is also wise to define who can override rules and under what conditions. If a reviewer can silence important warnings without traceability, the system may become performative instead of useful. If you need a parallel mental model, think about how teams use structured decision systems: the decision process matters as much as the outcome, because institutions need repeatability and accountability.
5.3 Audit trails turn a review tool into a governance asset
One of the biggest benefits of self-hosted AI is the ability to capture a full audit trail of what the system saw, decided, and recommended. This is especially useful when a postmortem asks whether a warning should have been generated or why a rule failed to trigger. Keep the history of rule changes, model versions, prompt templates, and repository assignments. That way, you can reproduce review behavior and defend it to security or compliance teams.
Auditability also supports continuous improvement. When reviewers consistently dismiss the same category of finding, you may need to tune the prompt or adjust the rules engine. The best governance systems are learnable. That idea shows up in other kinds of workflow optimization too, such as traceable status systems, where each step tells a clear story about what happened and why.
6. Translating Existing Review Policies into Kodus Rules
6.1 Start by documenting what your human reviewers already do
If you want the rules engine to feel intelligent, begin with the standards your senior engineers already apply in code review. Which changes require security scrutiny? What patterns should trigger comments about tests, error handling, logging, and feature flags? Which files are likely to be controversial, and what signal matters most in those areas? This is not a prompt-writing exercise first; it is a policy extraction exercise.
Write down the review heuristics that your best reviewers use repeatedly, then turn those into rules or prompt instructions. For example, a rule might say that any auth change must check for backward compatibility, audit logging, and privilege escalation risk. Another might require test coverage suggestions for business logic changes over a certain threshold. This approach gives you consistency without flattening all reviewer judgment into generic advice.
6.2 Use layered rules rather than one giant prompt
The most effective systems use layers: repository-level rules, path-level rules, file-type rules, and issue-severity rules. A monorepo may need one policy for frontend packages, another for shared backend libraries, and another for infrastructure code. If you try to encode all of that into a single prompt blob, maintenance becomes painful and regressions become hard to spot. Kodus’ rules engine is well suited to a layered policy design because it lets you adapt review behavior to the context that matters.
Think of this like a routing table rather than a one-size-fits-all instruction. If the change touches database migrations, it should surface different concerns than a CSS tweak. If your team has used conversational search logic, the lesson is familiar: the quality of output depends on routing the request to the right context window and policy layer, not just the phrasing.
6.3 Define when human override is required
AI should accelerate review, not replace accountability. For sensitive patterns, define situations where the tool may recommend but not approve, or where a human must confirm the result before merge. Examples include auth changes, payment flows, data deletion, infra secrets, and major dependency upgrades. This reduces risk while preserving the speed benefits of automation.
The key is to be explicit. If the human escalation policy is undocumented, teams will improvise, and improvized policy is where compliance and reliability problems tend to begin. This is one of the lessons behind legal challenge management: ambiguity is expensive, and clarity is your best defense. The same principle applies in AI-assisted review.
7. ROI Model: How to Prove the Switch Pays Off
7.1 Build the model around total cost, not just subscription price
A credible ROI analysis should include platform fees, LLM usage, engineering time, security review overhead, and the cost of lost flexibility. Compare your existing SaaS spend to the self-hosted model by separating fixed and variable components. Fixed costs include infrastructure, operations time, and any paid support. Variable costs include model tokens, queue processing, and occasional scaling overhead. The simplest way to explain the gain is to show that Kodus removes the vendor markup layer while letting you optimize model routing.
Here is a practical template: estimate monthly PR count, average tokens per PR, cost per token by model, and percentage of reviews that need premium versus economical models. Then compare that to the current SaaS all-in price. If your team processes 2,000 PRs per month and the hosted platform adds a meaningful markup on top of model costs, the savings can be material even before you count secondary effects like faster review turnaround. As a framing device, this is similar to how companies evaluate budget AI workloads: the cheapest solution is the one that matches workload shape, not the one with the fanciest wrapper.
7.2 Include productivity gains as a conservative bonus, not the core claim
It is tempting to promise massive productivity uplift, but finance leaders will trust a more conservative model. Use measurable gains like shorter review queue time, fewer manual review cycles, and reduced time spent triaging obvious style or testing issues. Even a small per-PR time savings can translate into large annual impact when multiplied across dozens of engineers. Keep the productivity case secondary and clearly label assumptions.
One useful method is to compare average merge lead time before and after migration. If PRs spend less time waiting for actionable feedback, developers can move faster without increasing defect rates. If you need a wider lesson in disciplined operational measurement, our piece on trend signal versus reality is a reminder that anecdotal improvement is not enough; you need stable metrics and repeatable evidence.
7.3 A sample ROI table leaders can adapt
| Cost Item | Hosted SaaS | Kodus Self-Hosted | Notes |
|---|---|---|---|
| Platform markup | High | Zero | Kodus removes the middle layer and uses your provider directly. |
| Model cost | Bundled | Direct | You pay the model provider’s actual rate. |
| Infra/ops overhead | Low | Medium | Self-hosting adds ownership but improves control. |
| Security/compliance flexibility | Limited | High | Custom network, logging, and retention policies are easier. |
| Vendor lock-in risk | High | Low | Open-source, self-hosted architecture reduces dependency. |
| Rule customization | Moderate | High | Layered rules can mirror your team’s standards. |
Use this table as a starting point, then fill in your own numbers. If the modeled savings exceed the cost of running and maintaining the platform by a comfortable margin, you have a strong business case. If they do not, consider a narrower rollout first so you can gather better data. Either way, the exercise forces clarity, which is exactly what stakeholders want.
8. Migration Plan: A Practical Rollout Sequence
8.1 Phase 1: Shadow mode and parallel validation
Do not switch every repo at once. Start with shadow mode, where Kodus analyzes PRs alongside your current SaaS tool but does not affect merge decisions. Compare comment quality, false positives, latency, and review acceptance rates. This gives you a factual basis to tune rules and adjust model routing before users depend on the new system.
Select a small but representative pilot group: one monorepo, one service repo, and one infrastructure repo. That mix reveals whether the platform handles different change types well. If you are thinking about rollout strategy in a broader sense, the same disciplined approach appears in hardware-to-problem matching: you test the fit before betting the whole program on it.
8.2 Phase 2: Limited production on high-signal repositories
Once shadow mode looks solid, enable Kodus for a limited set of repositories where it can create value quickly. Prioritize repos with frequent PRs, clear review standards, and sympathetic maintainers who will provide feedback. This is the point where you should actively compare accepted versus ignored recommendations and see whether the tool is reducing reviewer load instead of adding noise. Keep a fast escalation path if something goes wrong.
During this phase, have a weekly review with engineering managers, a platform engineer, and a security partner. Ask whether the system is surfacing meaningful issues or merely generating commentary. The right answer is not “it found everything,” because in real life there are always tradeoffs. The right answer is “it reliably catches the high-value issues that matter to this team.”
8.3 Phase 3: Broader adoption and policy hardening
After the pilot, migrate more repositories in waves. Tighten repository grouping, refine rules, and tune model routing to balance cost with quality. This is also the point where you can standardize dashboards, alert thresholds, and ownership. By the end of this phase, Kodus should be an operational platform with documented runbooks, not a one-off experiment.
For teams scaling beyond a pilot, the organizational lesson is simple: success depends on repeatable operating models. That is why teams investing in new channels or new platforms often study patterns from audience re-framing and real-time distribution systems: the mechanics of rollout are what determine whether adoption sticks. Do the same with your review migration.
9. Common Gotchas and How to Avoid Them
9.1 Underestimating queue bursts
One of the easiest mistakes is sizing the worker layer for average load instead of peak load. If your teams batch merge before release windows, your review queue can spike rapidly and create unacceptable delays. Measure burst patterns, not just daily averages, and set scaling policies that account for those peaks. If you do not, users will blame the new platform for being “slow” even when the real issue is insufficient capacity.
Queue tuning is a classic operational problem, and the same lesson shows up in supply chain efficiency: bottlenecks rarely appear where average metrics look worst. They appear where variability is highest. Plan for burstiness and you avoid a lot of unnecessary firefighting.
9.2 Letting rules become a dumping ground
As teams adopt the tool, every stakeholder will want their own check added to the rules engine. That can turn a useful policy system into an unreadable maze. Establish a governance process for rule changes, version them carefully, and retire stale rules that no longer produce value. If a rule does not improve signal quality or risk reduction, it is probably just noise.
Keep your rules catalog small enough for humans to understand. This is where a lightweight review board can help, especially in large organizations. The wrong move is to let every team write bespoke policies without central review. The right move is to keep a shared taxonomy and allow local overrides only where justified.
9.3 Ignoring model routing economics
If you self-host Kodus but route every PR to the most expensive model, you will erase much of the savings. Be deliberate about model selection: reserve premium models for complex changes, and use cheaper models for mechanical or low-risk diffs. Revisit routing every month because model pricing and quality shift quickly. That dynamic pricing awareness is what keeps the ROI real.
This also means prompt quality matters. The best routing strategy fails if the prompt is vague or the repo context is incomplete. Good configuration is a craft, not a checkbox. Use a small set of prompt templates and refine them based on false positives, false negatives, and reviewer feedback.
10. Operating the Platform After Migration
10.1 Treat the review platform like any other production system
Once Kodus is live, assign an owner, define SLIs, and create an incident response path. Monitor uptime, review latency, failed webhook deliveries, and model provider outages. Add a change-management process for rule updates and model endpoint changes. If the platform is business-critical, it should get the same operational seriousness as an internal API or authentication service.
This operational maturity is especially important if your organization expects auditability and reliability at scale. The self-hosted model is not just cheaper; it is also more governable. And that is why teams often pair technical migrations with a broader upgrade in operational thinking, similar to what happens when organizations embrace security-first hosting practices.
10.2 Measure what reviewers actually accept
The best metric is not how many comments the model leaves. The best metric is how often reviewers accept, adapt, or act on those comments. Track acceptance rate by repository, by rule type, and by model tier. If a category consistently gets ignored, either the rule is too noisy or the language is too generic. Good metrics tell you whether the system is helping engineers make better decisions.
Also track time-to-first-feedback and time-to-merge. If Kodus speeds up the first useful comment but causes extra churn later, your net productivity may be worse. Measurement should answer whether the platform is reducing cognitive load, not merely generating activity. That distinction matters more than the raw count of AI-generated review notes.
10.3 Keep an eye on culture, not just configuration
Successful migrations change habits. Engineers should learn when to trust AI comments, when to challenge them, and when to escalate. Encourage reviewers to treat Kodus as a strong first-pass analyst rather than an infallible gatekeeper. The goal is to improve review quality and reduce repetitive work, not to remove human judgment from engineering.
When the migration is going well, people stop talking about the tool and start talking about the outcomes. That is the sign you’ve done it right. In that sense, the platform should feel like a well-run internal service: reliable, unobtrusive, and clearly more efficient than the old way.
Conclusion: The Best Migration Is the One You Can Operate Confidently
Moving from a hosted AI code review service to Kodus self-hosted is not only a cost play. It is a strategic shift toward better control over data, policies, model selection, and long-term pricing. When done well, it can reduce LLM costs, improve review governance, and fit far better in a monorepo-heavy engineering environment. But the value only appears if you treat the migration as an operational program, not a feature swap.
Start with a real usage audit, design for identity and observability, translate your human review standards into a manageable rules engine, and prove savings with a conservative ROI model. Then roll out in phases, measure what matters, and keep the system simple enough to own. For teams ready to go deeper, the architectural and operational mindset is similar to the broader lessons in Kodus cost control, AI security decision systems, and modern discoverability audits: clarity beats complexity when the stakes are high.
FAQ
How do I know if self-hosted Kodus will save money?
Start by measuring your current PR volume, average token usage, and hosted vendor markup. If your team has steady or high PR throughput, and especially if you can route routine reviews to cheaper models, self-hosted Kodus often produces meaningful savings. The key is to compare total cost, not just subscription price.
Can Kodus work in a monorepo?
Yes, and monorepo support is one of the strongest reasons to consider it. You can apply repository-level and path-level rules so shared libraries, frontend apps, backend services, and infrastructure code each get appropriate review behavior. That reduces noise and improves context-aware feedback.
What do I need for SSO?
Plan for your company IdP from the beginning, ideally using OIDC or SAML. Map identity groups to RBAC roles so admins, policy authors, reviewers, and auditors each have the correct permissions. This simplifies onboarding, offboarding, and compliance.
How should I phase the migration?
Use a three-step rollout: shadow mode, limited production, then broader adoption. Shadow mode validates quality without affecting merges, limited production proves value on selected repositories, and broader adoption hardens policies and dashboards. Do not migrate every repository at once.
What are the biggest gotchas?
The most common issues are under-sized queues, overly complex rules, weak observability, and poor model routing economics. Teams also underestimate how much identity and security requirements affect adoption. If you address those up front, the migration is much smoother.
Should AI replace human reviewers?
No. AI should augment humans by catching obvious issues faster and standardizing repetitive checks. Human reviewers are still needed for architectural judgment, product context, and high-risk changes. The best systems make engineers more effective, not less accountable.
Related Reading
- Quantum readiness for IT teams - A practical playbook for planning technology transitions without chaos.
- Tackling AI-driven security risks in web hosting - Useful context for securing self-hosted AI services.
- Enhancing team collaboration with AI - See how AI orchestration changes team workflows.
- AI and automation in warehousing - A good analogy for building scalable, measurable automation.
- Decoding parcel tracking statuses - A clear example of why transparent state transitions improve trust.
Related Topics
Nikhil Verma
Senior SEO Content Strategist
Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.