fora

Fora

i18n as
infrastructure.

Translate text and images at write time. Your read path has zero overhead — just query posts_localized.

Live demo

Try it now.

No account required. Results are real.

JPEG or PNG with visible text. Must be publicly accessible.

Result will appear here

This is the real API. No mocks.

Get your own API key →
fora.yaml
name: my-app
connection_string: postgres://...
config:
target_locales:
- es
- fr
- de
- pt-BR
create_views: true
tables:
- table: posts
id_column: id
fields:
- title
- body
- table: products
id_column: id
fields:
- name
- description
image_fields:
- hero_image_url
SET fora.locale = 'es';-- Spanish
SELECT title, body FROM posts_localized;
title
body
Bienvenido a nuestro mercado
Encuentra productos increíbles de vendedores de todo el mundo.
Nueva función disponible
Hemos lanzado algo que cambiará tu forma de trabajar.

How it works

Four steps from zero to fully localized.

01

Deploy fora-agent

A single binary that runs alongside your app. Point it at your Postgres and drop in a fora.yaml.

docker run ghcr.io/getfora/fora-agent config.yaml
02

Define your tables

Declare which columns to translate and which image fields to inpaint. No schema changes required.

tables:
  - table: posts
    fields: [title, body]
03

Content translates automatically

The agent syncs new rows to the Fora API. Text goes through Gemini Flash. Images are inpainted with translated text in place.

04

Query as normal

Set the locale once per request. Your existing queries work unchanged — just hit the localized view.

SET LOCAL fora.locale = 'fr';
SELECT * FROM posts_localized;

Pipeline

Your Postgres

source of truth

fora-agent

reads fora.yaml

Fora API

POST /translate

Gemini API

text + images

fora_translations

synced back to your DB

Principles

Designed for teams that ship.

Write-path, not read-path

Translate once when content is written. Every subsequent read — across all locales — is a simple indexed query. No latency tax at serving time.

Your data stays yours

Translations land in a fora_translations table in your own Postgres. No external dependency on the critical read path. Pull the plug on Fora and your translated content persists.

Text and images, unified

UGC is never just text. Image inpainting replaces embedded text inside images — product shots, banners, screenshots — in the same pipeline, same job.

Zero code changes

Locale-transparent views mean your existing queries work unchanged. SET fora.locale once per request. Every downstream SELECT already works.

Idempotent by design

Jobs are content-addressed. Re-running the agent never creates duplicates. Partial failures replay safely. The system converges.

Observable

Every translation job, webhook delivery attempt, and image upload is logged and queryable. When something breaks, you have the receipt.

A note from the founder

Every engineering team I've talked to at growth-stage companies has the same deferred problem: localization. It's always the thing that gets pushed to the next quarter. Too complex to build well, too important to ignore forever.

The existing tools assume you have a dedicated i18n team and a content management workflow. Most teams don't. They have engineers who need to ship a LATAM launch in six weeks.

Fora is the infrastructure I kept wishing existed. Instrument one endpoint. Get translations in production. Move on.

Z

Zack McBride

Founder, Fora

zack@getfora.ai

Early access

We're looking for design partners.

If your team is expanding to new markets and you'd rather ship than build a translation pipeline, we want to work with you directly. Free while in early access.

Talk to us →

Roadmap

Built in public.

This is the current state and what we're building next. No hidden backlog.

Shipped

  • Text translation — ES, FR, DE, IT, pt-BR
  • Image translation + inpainting
  • Postgres connector (fora-agent)
  • Locale-transparent views
  • Webhook delivery with exponential backoff
  • Free tier with usage enforcement
  • S3-compatible image storage

Coming

  • CJK support (Japanese, Korean, Chinese)complex font rendering
  • RTL language support (Arabic, Hebrew)layout reflow
  • SDK packages (npm, pip)REST + examples covers v0.1
  • Translation memory + glossaryterminology enforcement
  • Web dashboardoperators use DB directly for now
  • Batch historical migration endpointfor existing content
  • Human review workflowquality-gating layer

Get started

Ship your first locale today.

Free tier: 10,000 characters and 100 images per month. No credit card required.