HomeCareerProjectsServicesStackBlogContact
Sign in
HomeCareerProjectsServicesStackBlogContact

Made with coffee, code and curiosity, from Colombia ☕

japalacio-08jeyson-anibal-palacio-palma

Resume

Download CV
Should I deploy today?ThursdayNoNo. Breathe and count to 10, start again

© 2026 Jeyson Palacio. All rights reserved.

Privacy PolicyTerms of ServiceCredits
Stack

Tools & Languages

Technologies I master, from frontend to infrastructure.

Backend23 items

This is where most of my time goes. Python (Django, DRF, FastAPI) for product services and APIs, Ruby on Rails when the domain already lives there, and Node with TypeScript for integration services. What changes between projects is rarely the framework: it is the data model and where the boundaries between services are drawn.

Python

DjangoDjango REST FrameworkFastAPICelerySQLAlchemypytest

Ruby on Rails

ActiveRecordActiveJobSidekiqDeviseCanCanCanRSpecSorbet

Node and TypeScript

NestJSExpressDenoPrismaJestZod

Other languages

GoSwiftSQLBash
Frontend16 items

Not my main job, but I have built and maintained a fair amount of operational UI: KYC review panels, A/B experiment dashboards, real-time delivery tracking. React and Next.js are my usual ground, and Angular shows up when the team is already there. On screens like these, making the state legible matters more than anything else.

React

ReactNext.jsReact NativeReduxReact Query

Angular

AngularRxJSTypeScript

Interface

Tailwind CSSFigmaDesign tokensAccessibility

Testing

JestVitestCypressPlaywright
Data15 items

PostgreSQL by default, and the rest when there is an actual reason: Redis for queues and cache, ClickHouse for multitenant analytics, pgvector and Pinecone when semantic search over your own data is needed. Pipelines (Airflow, ETL, Segment) are usually half the real work, even though they never show up in the UI.

Databases

PostgreSQLMySQLMongoDBDynamoDBRedisClickHouse

Vector and search

pgvectorPineconeNeo4jEmbeddingsRAG

Pipelines

Apache AirflowETLPandasSegment
Messaging20 items

This shows up when two services can no longer wait for each other. Kafka and RabbitMQ for events, Temporal for flows that run for days and have to survive a restart, gRPC and Protobuf when the contract matters more than convenience. The patterns here (outbox, saga, idempotency) exist because in production events arrive duplicated, late or out of order.

Brokers

Apache KafkaRabbitMQPub/SubRedis Streams

Orchestration

TemporalCelerySidekiqCron

Contracts

RESTGraphQLgRPCProtobufOpenAPIWebhooks

Patterns

MicroservicesSagaOutboxIdempotencyDead letter queueCQRS
Cloud and DevOps16 items

AWS and GCP on Kubernetes, with Terraform or Pulumi depending on what the team already uses. My goal is for deploying to be boring: a reproducible pipeline, a one-command rollback and enough instrumentation to answer what broke without opening a debate. I don't treat observability as an extra at the end of the project.

Cloud

AWSGoogle CloudCloudflareCoolify

Containers

DockerKubernetesHelmNginx

Automation

TerraformPulumiGitHub ActionsJenkins

Observability

PrometheusGrafanaSentryOpenTelemetry
AI13 items

Agents and retrieval inside the product, not as a demo. At StyleSeat they were agents that take repetitive work off professionals; at Mastercard, fraud detection models connected through MCP; on other projects, RAG over first-party data. What decides whether it works is almost never the model: it is the data reaching it and the evals that measure it.

Models

Claude APIOpenAI APIGoogle GeminiHugging Face

Agents

Anthropic MCPLangChainTool callingEvals

Retrieval

pgvectorPineconeEmbeddingsRAGReranking